summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console_cmds.cpp31
-rw-r--r--src/settings_type.h1
-rw-r--r--src/table/settings.h1
3 files changed, 33 insertions, 0 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 6899fd3fc..7a55d01e0 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -34,6 +34,7 @@
#include "gamelog.h"
#include "ai/ai.hpp"
#include "ai/ai_config.hpp"
+#include "newgrf.h"
#include "console_func.h"
#ifdef ENABLE_NETWORK
@@ -110,6 +111,22 @@ DEF_CONSOLE_HOOK(ConHookNoNetwork)
# define ConHookNoNetwork NULL
#endif /* ENABLE_NETWORK */
+DEF_CONSOLE_HOOK(ConHookNewGRFDeveloperTool)
+{
+ if (_settings_client.gui.newgrf_developer_tools) {
+ if (_game_mode == GM_MENU) {
+ if (echo) IConsoleError("This command is only available in game and editor.");
+ return CHR_DISALLOW;
+ }
+#ifdef ENABLE_NETWORK
+ return ConHookNoNetwork(echo);
+#else
+ return CHR_ALLOW;
+#endif
+ }
+ return CHR_HIDE;
+}
+
static void IConsoleHelp(const char *str)
{
IConsolePrintF(CC_WARNING, "- %s", str);
@@ -1686,6 +1703,17 @@ DEF_CONSOLE_CMD(ConGamelogPrint)
return true;
}
+DEF_CONSOLE_CMD(ConNewGRFReload)
+{
+ if (argc == 0) {
+ IConsoleHelp("Reloads all active NewGRFs from disk. Equivalent to reapplying NewGRFs via the settings, but without asking for confirmation. This might crash OpenTTD!");
+ return true;
+ }
+
+ ReloadNewGRFData();
+ return true;
+}
+
#ifdef _DEBUG
/******************
* debug commands
@@ -1826,4 +1854,7 @@ void IConsoleStdLibRegister()
#ifdef _DEBUG
IConsoleDebugLibRegister();
#endif
+
+ /* NewGRF development stuff */
+ IConsoleCmdRegister("reload_newgrfs", ConNewGRFReload, ConHookNewGRFDeveloperTool);
}
diff --git a/src/settings_type.h b/src/settings_type.h
index 8f22553d0..ce116c3e1 100644
--- a/src/settings_type.h
+++ b/src/settings_type.h
@@ -108,6 +108,7 @@ struct GUISettings {
uint8 developer; ///< print non-fatal warnings in console (>= 1), copy debug output to console (== 2)
bool show_date_in_logs; ///< whether to show dates in console logs
+ bool newgrf_developer_tools; ///< activate NewGRF developer tools
};
/** Settings related to currency/unit systems. */
diff --git a/src/table/settings.h b/src/table/settings.h
index acb2d8522..a820c5081 100644
--- a/src/table/settings.h
+++ b/src/table/settings.h
@@ -605,6 +605,7 @@ const SettingDesc _settings[] = {
SDTC_BOOL(gui.show_date_in_logs, S, 0, false, STR_NULL, NULL),
#endif
SDTC_VAR(gui.developer, SLE_UINT8, S, 0, 1, 0, 2, 0, STR_NULL, NULL),
+ SDTC_BOOL(gui.newgrf_developer_tools, S, 0, false, STR_NULL, NULL),
SDTC_VAR(gui.console_backlog_timeout, SLE_UINT16, S, 0, 100, 10, 65500, 0, STR_NULL, NULL),
SDTC_VAR(gui.console_backlog_length, SLE_UINT16, S, 0, 100, 10, 65500, 0, STR_NULL, NULL),
#ifdef ENABLE_NETWORK