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