diff --git a/plugins/zone.cpp b/plugins/zone.cpp index a8635c013..21af5d85c 100644 --- a/plugins/zone.cpp +++ b/plugins/zone.cpp @@ -2394,6 +2394,14 @@ bool compareUnitAgesOlder(df::unit* i, df::unit* j) // maleAdult //}; +enum unit_ptr_index +{ + fk_index = 0, + mk_index = 1, + fa_index = 2, + ma_index = 3 +}; + struct WatchedRace { public: @@ -2416,17 +2424,9 @@ public: // butcherable units vector unit_ptr[4]; - vector fk_ptr = unit_ptr[0]; - vector mk_ptr = unit_ptr[1]; - vector fa_ptr = unit_ptr[2]; - vector ma_ptr = unit_ptr[3]; // priority butcherable units vector prot_ptr[4]; - vector fk_pri_ptr = prot_ptr[0]; - vector mk_pri_ptr = prot_ptr[1]; - vector fa_pri_ptr = prot_ptr[2]; - vector ma_pri_ptr = prot_ptr[3]; WatchedRace(bool watch, int id, unsigned _fk, unsigned _mk, unsigned _fa, unsigned _ma) { @@ -2477,14 +2477,14 @@ public: void SortUnitsByAge() { - sort(fk_ptr.begin(), fk_ptr.end(), compareUnitAgesOlder); - sort(mk_ptr.begin(), mk_ptr.end(), compareUnitAgesOlder); - sort(fa_ptr.begin(), fa_ptr.end(), compareUnitAgesYounger); - sort(ma_ptr.begin(), ma_ptr.end(), compareUnitAgesYounger); - sort(fk_pri_ptr.begin(), fk_pri_ptr.end(), compareUnitAgesOlder); - sort(mk_pri_ptr.begin(), mk_pri_ptr.end(), compareUnitAgesOlder); - sort(fa_pri_ptr.begin(), fa_pri_ptr.end(), compareUnitAgesYounger); - sort(ma_pri_ptr.begin(), ma_pri_ptr.end(), compareUnitAgesYounger); + sort(unit_ptr[fk_index].begin(), unit_ptr[fk_index].end(), compareUnitAgesOlder); + sort(unit_ptr[mk_index].begin(), unit_ptr[mk_index].end(), compareUnitAgesOlder); + sort(unit_ptr[fa_index].begin(), unit_ptr[fa_index].end(), compareUnitAgesYounger); + sort(unit_ptr[ma_index].begin(), unit_ptr[ma_index].end(), compareUnitAgesYounger); + sort(prot_ptr[fk_index].begin(), prot_ptr[fk_index].end(), compareUnitAgesOlder); + sort(prot_ptr[mk_index].begin(), prot_ptr[mk_index].end(), compareUnitAgesOlder); + sort(prot_ptr[fa_index].begin(), prot_ptr[fa_index].end(), compareUnitAgesYounger); + sort(prot_ptr[ma_index].begin(), prot_ptr[ma_index].end(), compareUnitAgesYounger); } void PushUnit(df::unit * unit) @@ -2492,16 +2492,16 @@ public: if(isFemale(unit)) { if(isBaby(unit) || isChild(unit)) - fk_ptr.push_back(unit); + unit_ptr[fk_index].push_back(unit); else - fa_ptr.push_back(unit); + unit_ptr[fa_index].push_back(unit); } else //treat sex n/a like it was male { if(isBaby(unit) || isChild(unit)) - mk_ptr.push_back(unit); + unit_ptr[mk_index].push_back(unit); else - ma_ptr.push_back(unit); + unit_ptr[ma_index].push_back(unit); } } @@ -2510,16 +2510,16 @@ public: if(isFemale(unit)) { if(isBaby(unit) || isChild(unit)) - fk_pri_ptr.push_back(unit); + prot_ptr[fk_index].push_back(unit); else - fa_pri_ptr.push_back(unit); + prot_ptr[fa_index].push_back(unit); } else { if(isBaby(unit) || isChild(unit)) - mk_pri_ptr.push_back(unit); + prot_ptr[mk_index].push_back(unit); else - ma_pri_ptr.push_back(unit); + prot_ptr[ma_index].push_back(unit); } } @@ -2575,10 +2575,10 @@ public: { SortUnitsByAge(); int slaughter_count = 0; - slaughter_count += ProcessUnits(fk_ptr, fk_pri_ptr, fk_prot, fk); - slaughter_count += ProcessUnits(mk_ptr, mk_pri_ptr, mk_prot, mk); - slaughter_count += ProcessUnits(fa_ptr, fa_pri_ptr, fa_prot, fa); - slaughter_count += ProcessUnits(ma_ptr, ma_pri_ptr, ma_prot, ma); + slaughter_count += ProcessUnits(unit_ptr[fk_index], prot_ptr[fk_index], fk_prot, fk); + slaughter_count += ProcessUnits(unit_ptr[mk_index], prot_ptr[mk_index], mk_prot, mk); + slaughter_count += ProcessUnits(unit_ptr[fa_index], prot_ptr[fa_index], fa_prot, fa); + slaughter_count += ProcessUnits(unit_ptr[ma_index], prot_ptr[ma_index], ma_prot, ma); ClearUnits(); return slaughter_count; } @@ -3647,31 +3647,31 @@ static int autobutcher_getWatchList(lua_State *L) int id = w->raceId; w = checkRaceStocksTotal(id); - Lua::SetField(L, w->fk_ptr.size(), ctable, "fk_total"); - Lua::SetField(L, w->mk_ptr.size(), ctable, "mk_total"); - Lua::SetField(L, w->fa_ptr.size(), ctable, "fa_total"); - Lua::SetField(L, w->ma_ptr.size(), ctable, "ma_total"); + Lua::SetField(L, w->unit_ptr[fk_index].size(), ctable, "fk_total"); + Lua::SetField(L, w->unit_ptr[mk_index].size(), ctable, "mk_total"); + Lua::SetField(L, w->unit_ptr[fa_index].size(), ctable, "fa_total"); + Lua::SetField(L, w->unit_ptr[ma_index].size(), ctable, "ma_total"); delete w; w = checkRaceStocksProtected(id); - Lua::SetField(L, w->fk_ptr.size(), ctable, "fk_protected"); - Lua::SetField(L, w->mk_ptr.size(), ctable, "mk_protected"); - Lua::SetField(L, w->fa_ptr.size(), ctable, "fa_protected"); - Lua::SetField(L, w->ma_ptr.size(), ctable, "ma_protected"); + Lua::SetField(L, w->unit_ptr[fk_index].size(), ctable, "fk_protected"); + Lua::SetField(L, w->unit_ptr[mk_index].size(), ctable, "mk_protected"); + Lua::SetField(L, w->unit_ptr[fa_index].size(), ctable, "fa_protected"); + Lua::SetField(L, w->unit_ptr[ma_index].size(), ctable, "ma_protected"); delete w; w = checkRaceStocksButcherable(id); - Lua::SetField(L, w->fk_ptr.size(), ctable, "fk_butcherable"); - Lua::SetField(L, w->mk_ptr.size(), ctable, "mk_butcherable"); - Lua::SetField(L, w->fa_ptr.size(), ctable, "fa_butcherable"); - Lua::SetField(L, w->ma_ptr.size(), ctable, "ma_butcherable"); + Lua::SetField(L, w->unit_ptr[fk_index].size(), ctable, "fk_butcherable"); + Lua::SetField(L, w->unit_ptr[mk_index].size(), ctable, "mk_butcherable"); + Lua::SetField(L, w->unit_ptr[fa_index].size(), ctable, "fa_butcherable"); + Lua::SetField(L, w->unit_ptr[ma_index].size(), ctable, "ma_butcherable"); delete w; w = checkRaceStocksButcherFlag(id); - Lua::SetField(L, w->fk_ptr.size(), ctable, "fk_butcherflag"); - Lua::SetField(L, w->mk_ptr.size(), ctable, "mk_butcherflag"); - Lua::SetField(L, w->fa_ptr.size(), ctable, "fa_butcherflag"); - Lua::SetField(L, w->ma_ptr.size(), ctable, "ma_butcherflag"); + Lua::SetField(L, w->unit_ptr[fk_index].size(), ctable, "fk_butcherflag"); + Lua::SetField(L, w->unit_ptr[mk_index].size(), ctable, "mk_butcherflag"); + Lua::SetField(L, w->unit_ptr[fa_index].size(), ctable, "fa_butcherflag"); + Lua::SetField(L, w->unit_ptr[ma_index].size(), ctable, "ma_butcherflag"); delete w; lua_rawseti(L, -2, i+1);