[Avida-SVN] r2765 - development/source/actions

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Fri Aug 29 07:01:58 PDT 2008


Author: beckma24
Date: 2008-08-29 10:01:58 -0400 (Fri, 29 Aug 2008)
New Revision: 2765

Modified:
   development/source/actions/EnvironmentActions.cc
Log:
added another seasonal resource action

Modified: development/source/actions/EnvironmentActions.cc
===================================================================
--- development/source/actions/EnvironmentActions.cc	2008-08-29 13:45:24 UTC (rev 2764)
+++ development/source/actions/EnvironmentActions.cc	2008-08-29 14:01:58 UTC (rev 2765)
@@ -562,14 +562,14 @@
 };
 
 /**
- Sets resource availiblity to seasonal 1 to -1
+ Sets resource availiblity to seasonal 1 to -1 for 1K years of 365 updates
  */
-class cActionSetSeasonalResource1To_1 : public cAction {
+class cActionSetSeasonalResource1Kyears_1To_1 : public cAction {
 private:
 	cString m_res_name;
 		
 public:
-	cActionSetSeasonalResource1To_1(cWorld* world, const cString& args): cAction(world, args), m_res_name("")
+	cActionSetSeasonalResource1Kyears_1To_1(cWorld* world, const cString& args): cAction(world, args), m_res_name("")
 	{
 		cString largs(args);
 		if (largs.GetSize()) m_res_name = largs.PopWord();
@@ -589,6 +589,33 @@
 
 
 /**
+ Sets resource availiblity to seasonal 1 to -1 for 10K years of 365 updates
+ */
+class cActionSetSeasonalResource10Kyears_1To_1 : public cAction {
+private:
+	cString m_res_name;
+	
+public:
+	cActionSetSeasonalResource10Kyears_1To_1(cWorld* world, const cString& args): cAction(world, args), m_res_name("")
+	{
+		cString largs(args);
+		if (largs.GetSize()) m_res_name = largs.PopWord();
+	}
+	
+	static const cString GetDescription() { return "Arguments: <string reaction_name>"; }
+	
+	void Process(cAvidaContext& ctx)
+	{
+		int time = m_world->GetStats().GetUpdate();
+		double m_res_count = -1*(tanh((time-1825000)/500000)+1)*(0.5*sin(time/58.091)+0.5)+1;
+		cResource* res = m_world->GetEnvironment().GetResourceLib().GetResource(m_res_name);
+		if (res != NULL)
+			m_world->GetPopulation().SetResource(res->GetID(), m_res_count);			
+	}
+};
+
+
+/**
 Sets resource availiblity to periodic
  */
 class cActionSetPeriodicResource : public cAction
@@ -904,7 +931,8 @@
   action_lib->Register<cActionSetEnvironmentRandomMask>("SetEnvironmentRandomMask");
 
 	action_lib->Register<cActionSetSeasonalResource>("SetSeasonalResource");
-	action_lib->Register<cActionSetSeasonalResource1To_1>("SetSeasonalResource1To_1");
+	action_lib->Register<cActionSetSeasonalResource1Kyears_1To_1>("SetSeasonalResource1Kyears_1To_1");
+	action_lib->Register<cActionSetSeasonalResource10Kyears_1To_1>("SetSeasonalResource10Kyears_1To_1");
   action_lib->Register<cActionSetPeriodicResource>("SetPeriodicResource");
   action_lib->Register<cActionSetNumInstBefore0Energy>("SetNumInstBefore0Energy");
 




More information about the Avida-cvs mailing list