diff options
-rw-r--r-- | src/ai/ai_gui.cpp | 12 | ||||
-rw-r--r-- | src/ai/ai_gui.hpp | 2 | ||||
-rw-r--r-- | src/saveload/afterload.cpp | 2 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index c7ff796d9..a297f74aa 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -1024,3 +1024,15 @@ void InitializeAIGui() { AIDebugWindow::ai_debug_company = INVALID_COMPANY; } + +/** Open the AI debug window if one of the AI scripts has crashed. */ +void ShowAIDebugWindowIfAIError() +{ + Company *c; + FOR_ALL_COMPANIES(c) { + if (c->is_ai && c->ai_instance->IsDead()) { + ShowAIDebugWindow(c->index); + break; + } + } +} diff --git a/src/ai/ai_gui.hpp b/src/ai/ai_gui.hpp index e76681636..0a47e992b 100644 --- a/src/ai/ai_gui.hpp +++ b/src/ai/ai_gui.hpp @@ -17,6 +17,7 @@ #ifdef ENABLE_AI void ShowAIDebugWindow(CompanyID show_company = INVALID_COMPANY); void ShowAIConfigWindow(); +void ShowAIDebugWindowIfAIError(); #else #include "table/strings.h" @@ -25,6 +26,7 @@ static inline void ShowAIConfigWindow() ShowErrorMessage(STR_ERROR_NO_AI, STR_ERROR_NO_AI_SUB, WL_INFO); } static inline void ShowAIDebugWindow(CompanyID show_company = INVALID_COMPANY) {ShowAIConfigWindow();} +static inline void ShowAIDebugWindowIfAIError() {} #endif /* ENABLE_AI */ #endif /* AI_GUI_HPP */ diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index bb6496e00..15777af79 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -41,6 +41,7 @@ #include "../company_func.h" #include "../road_cmd.h" #include "../ai/ai.hpp" +#include "../ai/ai_gui.hpp" #include "../town.h" #include "../economy_base.h" #include "../animated_tile_func.h" @@ -263,6 +264,7 @@ static void InitializeWindowsAndCaches() CheckTrainsLengths(); ShowNewGRFError(); + ShowAIDebugWindowIfAIError(); } typedef void (CDECL *SignalHandlerPointer)(int); |