[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