Merge pull request #3593 from myk002/myk_logistics_debugging

[logistics] don't crash
develop
Myk 2023-07-21 17:57:37 -07:00 committed by GitHub
commit c8b2cf3648
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 4 deletions

@ -44,6 +44,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences:
- `logistics`: don't autotrain domestic animals brought by invaders (they'll get attacked by friendly creatures as soon as you let them out of their cage) - `logistics`: don't autotrain domestic animals brought by invaders (they'll get attacked by friendly creatures as soon as you let them out of their cage)
- `logistics`: don't bring trade goods to depot if the only caravans present are tribute caravans - `logistics`: don't bring trade goods to depot if the only caravans present are tribute caravans
- `gui/create-item`: when choosing a citizen to create the chosen items, avoid choosing a dead citizen - `gui/create-item`: when choosing a citizen to create the chosen items, avoid choosing a dead citizen
- `logistics`: fix potential crash when removing stockpiles or turning off stockpile features
## Misc Improvements ## Misc Improvements
- `stockpiles`: include exotic pets in the "tameable" filter - `stockpiles`: include exotic pets in the "tameable" filter

@ -122,6 +122,7 @@ static df::building_stockpilest* find_stockpile(int32_t stockpile_number) {
static void validate_stockpile_configs(color_ostream& out, static void validate_stockpile_configs(color_ostream& out,
unordered_map<df::building_stockpilest *, PersistentDataItem> &cache) { unordered_map<df::building_stockpilest *, PersistentDataItem> &cache) {
vector<int> to_remove;
for (auto& entry : watched_stockpiles) { for (auto& entry : watched_stockpiles) {
int stockpile_number = entry.first; int stockpile_number = entry.first;
PersistentDataItem &c = entry.second; PersistentDataItem &c = entry.second;
@ -131,11 +132,13 @@ static void validate_stockpile_configs(color_ostream& out,
!get_config_bool(c, STOCKPILE_CONFIG_TRADE) && !get_config_bool(c, STOCKPILE_CONFIG_TRADE) &&
!get_config_bool(c, STOCKPILE_CONFIG_DUMP) && !get_config_bool(c, STOCKPILE_CONFIG_DUMP) &&
!get_config_bool(c, STOCKPILE_CONFIG_TRAIN))) { !get_config_bool(c, STOCKPILE_CONFIG_TRAIN))) {
remove_stockpile_config(out, stockpile_number); to_remove.push_back(stockpile_number);
continue; continue;
} }
cache.emplace(bld, c); cache.emplace(bld, c);
} }
for (int stockpile_number : to_remove)
remove_stockpile_config(out, stockpile_number);
} }
// remove this function once saves from 50.08 are no longer compatible // remove this function once saves from 50.08 are no longer compatible

@ -75,7 +75,7 @@ local function print_status()
print(('Total items marked for melting: %5d'):format(global_stats.total_melt)) print(('Total items marked for melting: %5d'):format(global_stats.total_melt))
print(('Total items marked for trading: %5d'):format(global_stats.total_trade)) print(('Total items marked for trading: %5d'):format(global_stats.total_trade))
print(('Total items marked for dumping: %5d'):format(global_stats.total_dump)) print(('Total items marked for dumping: %5d'):format(global_stats.total_dump))
print(('Total animals marked for training: %5d'):format(global_stats.total_train)) print(('Total animals marked for training: %2d'):format(global_stats.total_train))
end end
local function for_stockpiles(opts, fn) local function for_stockpiles(opts, fn)