Better config persistence.

develop
RossM 2012-04-05 20:34:06 -07:00
parent df98d67ad7
commit 284ada9432
1 changed files with 13 additions and 13 deletions

@ -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;