summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ai/ai_gui.cpp12
-rw-r--r--src/ai/ai_gui.hpp2
-rw-r--r--src/saveload/afterload.cpp2
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);