summaryrefslogtreecommitdiff
path: root/plugins/autolabor.cpp
diff options
context:
space:
mode:
authorRossM2012-04-05 20:34:06 -0700
committerRossM2012-04-05 20:34:06 -0700
commit284ada943286c211b0466bc4e40b5dccba9de4ed (patch)
tree46db8b831c2f322a2cc1c1b4144c60f69dacfb71 /plugins/autolabor.cpp
parentdf98d67ad7ef6343fc5574ef113e26d71575d50e (diff)
downloaddfhack-284ada943286c211b0466bc4e40b5dccba9de4ed.tar.gz
dfhack-284ada943286c211b0466bc4e40b5dccba9de4ed.tar.bz2
dfhack-284ada943286c211b0466bc4e40b5dccba9de4ed.tar.xz
Better config persistence.
Diffstat (limited to 'plugins/autolabor.cpp')
-rw-r--r--plugins/autolabor.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/plugins/autolabor.cpp b/plugins/autolabor.cpp
index bcf72555..cfd9419d 100644
--- a/plugins/autolabor.cpp
+++ b/plugins/autolabor.cpp
@@ -348,17 +348,14 @@ struct labor_info
bool is_exclusive;
int active_dwarfs;
- labor_mode mode() { return (labor_mode) config.ival(1); }
- void set_mode(labor_mode mode) { config.ival(1) = mode; }
+ labor_mode mode() { return (labor_mode) config.ival(0); }
+ void set_mode(labor_mode mode) { config.ival(0) = mode; }
- int minimum_dwarfs() { return config.ival(2); }
- void set_minimum_dwarfs(int minimum_dwarfs) { config.ival(2) = minimum_dwarfs; }
+ int minimum_dwarfs() { return config.ival(1); }
+ void set_minimum_dwarfs(int minimum_dwarfs) { config.ival(1) = minimum_dwarfs; }
- int maximum_dwarfs() { return config.ival(3); }
- void set_maximum_dwarfs(int maximum_dwarfs) { config.ival(3) = maximum_dwarfs; }
-
- df::enums::unit_labor::unit_labor labor() { return (df::enums::unit_labor::unit_labor) config.ival(0); }
- void set_labor(df::enums::unit_labor::unit_labor labor) { config.ival(0) = labor; }
+ int maximum_dwarfs() { return config.ival(2); }
+ void set_maximum_dwarfs(int maximum_dwarfs) { config.ival(2) = maximum_dwarfs; }
};
@@ -492,7 +489,6 @@ static void reset_labor(df::enums::unit_labor::unit_labor labor)
labor_infos[labor].set_minimum_dwarfs(default_labor_infos[labor].minimum_dwarfs);
labor_infos[labor].set_maximum_dwarfs(default_labor_infos[labor].maximum_dwarfs);
labor_infos[labor].set_mode(default_labor_infos[labor].mode);
- labor_infos[labor].set_labor(labor);
}
static void init_state()
@@ -512,11 +508,12 @@ static void init_state()
labor_infos.resize(ARRAY_COUNT(default_labor_infos));
std::vector<PersistentDataItem> items;
- pworld->GetPersistentData(&items, "autolabor/labors");
+ pworld->GetPersistentData(&items, "autolabor/labors/", true);
for (auto p = items.begin(); p != items.end(); p++)
{
- df::enums::unit_labor::unit_labor labor = (df::enums::unit_labor::unit_labor) p->ival(0);
+ string key = p->key();
+ df::enums::unit_labor::unit_labor labor = (df::enums::unit_labor::unit_labor) atoi(key.substr(strlen("autolabor/labors/")).c_str());
if (labor >= 0 && labor <= labor_infos.size())
{
labor_infos[labor].config = *p;
@@ -530,7 +527,10 @@ static void init_state()
if (labor_infos[i].config.isValid())
continue;
- labor_infos[i].config = pworld->AddPersistentData("autolabor/labors");
+ std::stringstream name;
+ name << "autolabor/labors/" << i;
+
+ labor_infos[i].config = pworld->AddPersistentData(name.str());
labor_infos[i].is_exclusive = default_labor_infos[i].is_exclusive;
labor_infos[i].active_dwarfs = 0;