From 7e2ade139cd195b014d731405c9992611cd3d2bb Mon Sep 17 00:00:00 2001 From: dP Date: Sun, 7 Feb 2021 21:17:32 +0300 Subject: [PATCH] Add cmresettowngrowth command to reset growth rate of all towns to normal --- src/citymania/cm_console_cmds.cpp | 20 ++++++++++++++++++++ src/citymania/cm_console_cmds.hpp | 1 + src/console_cmds.cpp | 1 + src/town_cmd.cpp | 4 ++++ 4 files changed, 26 insertions(+) diff --git a/src/citymania/cm_console_cmds.cpp b/src/citymania/cm_console_cmds.cpp index 71aafc25f2..772e3cb8da 100644 --- a/src/citymania/cm_console_cmds.cpp +++ b/src/citymania/cm_console_cmds.cpp @@ -10,6 +10,7 @@ #include "../fileio_type.h" #include "../map_type.h" #include "../map_func.h" +#include "../town.h" #include "../tree_map.h" #include "../safeguards.h" @@ -108,4 +109,23 @@ bool ConTreeMap(byte argc, char *argv[]) { return true; } +extern void (*UpdateTownGrowthRate)(Town *t); + +bool ConResetTownGrowth(byte argc, char *argv[]) { + if (argc == 0) { + IConsoleHelp("Loads heighmap-like file and plants trees according to it, values 0-256 ore scaled to 0-4 trees."); + IConsoleHelp("Usage: 'cmtreemap '"); + IConsoleHelp("Default lookup path is in scenario/heightmap in your openttd directory"); + return true; + } + + if (argc > 1) return false; + + for (Town *town : Town::Iterate()) { + ClrBit(town->flags, TOWN_CUSTOM_GROWTH); + UpdateTownGrowthRate(town); + } + return true; +} + } // namespace citymania diff --git a/src/citymania/cm_console_cmds.hpp b/src/citymania/cm_console_cmds.hpp index 95a1e45ffa..0609224f20 100644 --- a/src/citymania/cm_console_cmds.hpp +++ b/src/citymania/cm_console_cmds.hpp @@ -6,6 +6,7 @@ namespace citymania { bool ConStep(byte argc, char *argv[]); bool ConExport(byte argc, char *argv[]); bool ConTreeMap(byte argc, char *argv[]); +bool ConResetTownGrowth(byte argc, char *argv[]); } // namespace citymania diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 21e20804ca..2a3a4e691c 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -2214,4 +2214,5 @@ void IConsoleStdLibRegister() IConsoleCmdRegister("cmstep", citymania::ConStep, ConHookNoNetwork); IConsoleCmdRegister("cmexport", citymania::ConExport); IConsoleCmdRegister("cmtreemap", citymania::ConTreeMap, ConHookNoNetwork); + IConsoleCmdRegister("cmresettowngrowth", citymania::ConResetTownGrowth, ConHookNoNetwork); } diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp index 547dc7e170..50e4f3210e 100644 --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -4006,3 +4006,7 @@ void ResetHouses() /* Reset any overrides that have been set. */ _house_mngr.ResetOverride(); } + +namespace citymania { + auto UpdateTownGrowthRate = &::UpdateTownGrowthRate; +}