From 8e92a6844f9f4e631ec7b8a5bf6327761b3aaf85 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 12 Apr 2021 00:18:13 +0100 Subject: [PATCH] Add a "misc_debug" console command Add a flag to open veh window when TrainBrakesOverheatedBreakdown called --- src/console_cmds.cpp | 19 +++++++++++++++++++ src/debug.cpp | 2 ++ src/debug_settings.h | 5 +++++ src/train_cmd.cpp | 5 +++++ 4 files changed, 31 insertions(+) diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 65625ec1d8..b5e7f34e8e 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -52,6 +52,7 @@ #include "string_func_extra.h" #include "linkgraph/linkgraphjob.h" #include "base_media_base.h" +#include "debug_settings.h" #include #include "safeguards.h" @@ -2847,6 +2848,23 @@ DEF_CONSOLE_CMD(ConRecalculateRoadCachedOneWayStates) return true; } +DEF_CONSOLE_CMD(ConMiscDebug) +{ + if (argc < 1 || argc > 2) { + IConsoleHelp("Debug: misc flags. Usage: 'misc_debug []'"); + IConsoleHelp(" 1: MDF_OVERHEAT_BREAKDOWN_OPEN_WIN"); + return true; + } + + if (argc == 1) { + IConsolePrintF(CC_DEFAULT, "Misc debug flags: %X", _misc_debug_flags); + } else { + _misc_debug_flags = strtoul(argv[1], nullptr, 16); + } + + return true; +} + DEF_CONSOLE_CMD(ConDoDisaster) { if (argc == 0) { @@ -3437,6 +3455,7 @@ void IConsoleStdLibRegister() IConsoleCmdRegister("gfx_debug", ConGfxDebug, nullptr, true); IConsoleCmdRegister("csleep", ConCSleep, nullptr, true); IConsoleCmdRegister("recalculate_road_cached_one_way_states", ConRecalculateRoadCachedOneWayStates, ConHookNoNetwork, true); + IConsoleCmdRegister("misc_debug", ConMiscDebug, nullptr, true); /* NewGRF development stuff */ IConsoleCmdRegister("reload_newgrfs", ConNewGRFReload, ConHookNewGRFDeveloperTool); diff --git a/src/debug.cpp b/src/debug.cpp index f1b3924813..774108be33 100644 --- a/src/debug.cpp +++ b/src/debug.cpp @@ -60,6 +60,8 @@ std::string _loadgame_DBGL_data; bool _save_DBGC_data = false; std::string _loadgame_DBGC_data; +uint32 _misc_debug_flags; + struct DebugLevel { const char *name; int *level; diff --git a/src/debug_settings.h b/src/debug_settings.h index 59951245d7..fb78e9478f 100644 --- a/src/debug_settings.h +++ b/src/debug_settings.h @@ -23,4 +23,9 @@ inline bool HasChickenBit(ChickenBitFlags flag) return HasBit(_settings_game.debug.chicken_bits, flag); } +enum MiscDebugFlags { + MDF_OVERHEAT_BREAKDOWN_OPEN_WIN, +}; +extern uint32 _misc_debug_flags; + #endif /* DEBUG_SETTINGS_H */ diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 5ced14876b..245da83a83 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -43,6 +43,7 @@ #include "scope_info.h" #include "scope.h" #include "core/checksum_func.hpp" +#include "debug_settings.h" #include "table/strings.h" #include "table/train_cmd.h" @@ -6800,6 +6801,10 @@ void TrainBrakesOverheatedBreakdown(Vehicle *v) Train *t = Train::From(v)->First(); if (t->breakdown_ctr != 0 || (t->vehstatus & VS_CRASHED)) return; + if (unlikely(HasBit(_misc_debug_flags, MDF_OVERHEAT_BREAKDOWN_OPEN_WIN)) && !_network_dedicated) { + ShowVehicleViewWindow(t); + } + t->crash_anim_pos = std::min(1500, t->crash_anim_pos + 200); if (t->crash_anim_pos < 1500) return;