[Avida-SVN] r3329 - in development/source: actions main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Mon Jun 22 06:19:21 PDT 2009


Author: beckma24
Date: 2009-06-22 09:19:21 -0400 (Mon, 22 Jun 2009)
New Revision: 3329

Modified:
   development/source/actions/EnvironmentActions.cc
   development/source/main/cDeme.h
Log:
Added action SetDemeResource

Modified: development/source/actions/EnvironmentActions.cc
===================================================================
--- development/source/actions/EnvironmentActions.cc	2009-06-19 19:26:12 UTC (rev 3328)
+++ development/source/actions/EnvironmentActions.cc	2009-06-22 13:19:21 UTC (rev 3329)
@@ -153,6 +153,36 @@
   }
 };
 
+class cActionSetDemeResource : public cAction
+	{
+	private:
+		cString m_res_name;
+		double m_res_count;
+		
+	public:
+		cActionSetDemeResource(cWorld* world, const cString& args) : cAction(world, args), m_res_name(""), m_res_count(0.0)
+		{
+			cString largs(args);
+			if (largs.GetSize()) m_res_name = largs.PopWord();
+			if (largs.GetSize()) m_res_count = largs.PopWord().AsDouble();
+		}
+		
+		static const cString GetDescription() { return "Arguments: <string res_name> <double res_count>"; }
+		
+		void Process(cAvidaContext& ctx)
+		{
+			cResource* res = m_world->GetEnvironment().GetResourceLib().GetResource(m_res_name);
+			if (res != NULL) {
+				cPopulation& pop = m_world->GetPopulation();
+				int numDemes =  pop.GetNumDemes();
+				for(int demeID = 0; demeID < numDemes; ++demeID) {
+					cDeme& deme = pop.GetDeme(demeID);
+					deme.SetResource(res->GetID(), m_res_count);
+				}
+			}
+		}
+	};
+
 class cZeroResources : public cAction
 {
 private:
@@ -981,6 +1011,7 @@
   action_lib->Register<cActionInjectScaledResource>("InjectScaledResource");
   action_lib->Register<cActionOutflowScaledResource>("OutflowScaledResource");
   action_lib->Register<cActionSetResource>("SetResource");
+  action_lib->Register<cActionSetDemeResource>("SetDemeResource");
   action_lib->Register<cZeroResources>("ZeroResources");
   action_lib->Register<cActionSetCellResource>("SetCellResource");
   action_lib->Register<cActionChangeEnvironment>("ChangeEnvironment");

Modified: development/source/main/cDeme.h
===================================================================
--- development/source/main/cDeme.h	2009-06-19 19:26:12 UTC (rev 3328)
+++ development/source/main/cDeme.h	2009-06-22 13:19:21 UTC (rev 3329)
@@ -260,6 +260,7 @@
 	void OrganismDeath(cPopulationCell& cell);
   
   const cResourceCount& GetDemeResourceCount() const { return deme_resource_count; }
+	void SetResource(int id, double new_level) { deme_resource_count.Set(id, new_level); }
   double GetSpatialResource(int rel_cellid, int resource_id) const;
   void AdjustSpatialResource(int rel_cellid, int resource_id, double amount);
   void AdjustResource(int resource_id, double amount);




More information about the Avida-cvs mailing list