From 6f79f63cef1c84c33e96cfee8f4d1eb845dbb77e Mon Sep 17 00:00:00 2001 From: dP Date: Mon, 31 Jul 2023 19:43:12 +0400 Subject: [PATCH] Attempt to fix minimap crash --- src/citymania/cm_command_log.cpp | 2 +- src/citymania/cm_minimap.cpp | 12 ++++++++++-- src/command_func.h | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/citymania/cm_command_log.cpp b/src/citymania/cm_command_log.cpp index 7318e5b1c3..3b4e0c0773 100644 --- a/src/citymania/cm_command_log.cpp +++ b/src/citymania/cm_command_log.cpp @@ -192,7 +192,7 @@ void load_replay_commands(const std::string &filename, std::functionindex, x.mx, x.my, is_cached_industry(ind)); if (!is_cached_industry(ind)) return; _minimap_industry_idx.Insert(get_industry_entry(ind)); } void minimap_remove_industry(const Industry *ind) { + auto x = get_industry_entry(ind); + //fmt::print("REMOVE {}: {},{} {}\n", ind->index, x.mx, x.my, is_cached_industry(ind)); if (!is_cached_industry(ind)) return; _minimap_industry_idx.Remove(get_industry_entry(ind)); } void minimap_init_industries() { _max_industry_outputs = 0; - for (auto i : Industry::Iterate()) { - minimap_add_industry(i); + std::vector entries; + for (auto ind : Industry::Iterate()) { + if (is_cached_industry(ind)) entries.push_back(get_industry_entry(ind)); + auto x = get_industry_entry(ind); + //fmt::print("INIT {}: {},{} {}\n", ind->index, x.mx, x.my, is_cached_industry(ind)); } + _minimap_industry_idx.Build(entries.begin(), entries.end()); } diff --git a/src/command_func.h b/src/command_func.h index 166cf37dc1..1c6f9afff7 100644 --- a/src/command_func.h +++ b/src/command_func.h @@ -415,7 +415,7 @@ protected: return {}; } - Debug(misc, 0, "{}/{} {} {} company={} tile={}", _date, _date_fract, _random.state[0], GetCommandName(Tcmd), (int)_current_company, tile); + // Debug(misc, 0, "{}/{} {} {} company={} tile={}", _date, _date_fract, _random.state[0], GetCommandName(Tcmd), (int)_current_company, tile); if (desync_log) LogCommandExecution(Tcmd, err_message, tile, EndianBufferWriter::FromValue(args), false); /* Actually try and execute the command. */