From c974daf467cc06a293cb2bdaf8fa83b7e12474c5 Mon Sep 17 00:00:00 2001 From: Ted John Date: Fri, 5 Jan 2018 23:28:04 +0000 Subject: [PATCH] Refactor console.c to C++ --- src/openrct2-ui/TextComposition.cpp | 2 +- src/openrct2-ui/UiContext.cpp | 2 +- src/openrct2-ui/input/Input.cpp | 2 +- src/openrct2-ui/input/MouseInput.cpp | 2 +- src/openrct2-ui/windows/TopToolbar.cpp | 2 +- src/openrct2/Context.cpp | 2 +- .../interface/{console.c => Console.cpp} | 96 +++++++++++-------- .../interface/{console.h => Console.h} | 0 src/openrct2/network/Twitch.cpp | 2 +- src/openrct2/paint/Painter.cpp | 2 +- 10 files changed, 66 insertions(+), 46 deletions(-) rename src/openrct2/interface/{console.c => Console.cpp} (95%) rename src/openrct2/interface/{console.h => Console.h} (100%) diff --git a/src/openrct2-ui/TextComposition.cpp b/src/openrct2-ui/TextComposition.cpp index a0eccbf41e..4bda383aec 100644 --- a/src/openrct2-ui/TextComposition.cpp +++ b/src/openrct2-ui/TextComposition.cpp @@ -21,7 +21,7 @@ #include #include "TextComposition.h" -#include +#include #include #include diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index 0ace56586c..9fdb92d96f 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -41,7 +41,7 @@ #include "WindowManager.h" #include -#include +#include #include using namespace OpenRCT2; diff --git a/src/openrct2-ui/input/Input.cpp b/src/openrct2-ui/input/Input.cpp index 7912123037..fdccfb1454 100644 --- a/src/openrct2-ui/input/Input.cpp +++ b/src/openrct2-ui/input/Input.cpp @@ -22,7 +22,7 @@ #include #include #include -#include +#include #include #include "KeyboardShortcuts.h" #include "Input.h" diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index c8f377a669..a4c145277a 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index fde20a48d2..e1c42769de 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 6d29cf2937..777a2849ef 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -54,7 +54,7 @@ #include "Game.h" #include "Input.h" #include "interface/Chat.h" -#include "interface/console.h" +#include "interface/Console.h" #include "interface/themes.h" #include "Intro.h" #include "localisation/Date.h" diff --git a/src/openrct2/interface/console.c b/src/openrct2/interface/Console.cpp similarity index 95% rename from src/openrct2/interface/console.c rename to src/openrct2/interface/Console.cpp index 403a7834fb..3288acdc67 100644 --- a/src/openrct2/interface/console.c +++ b/src/openrct2/interface/Console.cpp @@ -14,10 +14,13 @@ *****************************************************************************/ #pragma endregion -#include +#include +#include #include "../config/Config.h" #include "../Context.h" +#include "../core/Math.hpp" +#include "../core/Util.hpp" #include "../drawing/Drawing.h" #include "../drawing/Font.h" #include "../Editor.h" @@ -46,7 +49,7 @@ #include "../world/Climate.h" #include "../world/Park.h" #include "../world/scenery.h" -#include "console.h" +#include "Console.h" #include "viewport.h" #ifndef NO_TTF @@ -58,6 +61,9 @@ #define CONSOLE_HISTORY_SIZE 64 #define CONSOLE_INPUT_SIZE 256 +extern "C" +{ + bool gConsoleOpen = false; static bool _consoleInitialised = false; @@ -219,7 +225,7 @@ void console_draw(rct_drawpixelinfo *dpi) break; drawLines++; - size_t lineLength = min(sizeof(lineBuffer) - (size_t)utf8_get_codepoint_length(FORMAT_WHITE), (size_t)(nextLine - ch)); + size_t lineLength = std::min(sizeof(lineBuffer) - (size_t)utf8_get_codepoint_length(FORMAT_WHITE), (size_t)(nextLine - ch)); lineCh = lineBuffer; lineCh = utf8_write_codepoint(lineCh, FORMAT_WHITE); memcpy(lineCh, ch, lineLength); @@ -405,10 +411,10 @@ void console_scroll(sint32 linesToScroll) lines++; } if (linesToScroll > 0 && _consoleScrollPos + 1 < (lines - maxLines + 4)) { - _consoleScrollPos = min(_consoleScrollPos + speed, (lines - maxLines + 4)); + _consoleScrollPos = std::min(_consoleScrollPos + speed, (lines - maxLines + 4)); } else if (linesToScroll < 0 && _consoleScrollPos > 0) { - _consoleScrollPos = max(_consoleScrollPos - speed, 0); + _consoleScrollPos = std::max(_consoleScrollPos - speed, 0); } } @@ -912,19 +918,19 @@ static sint32 cc_set(const utf8 **argv, sint32 argc) } } else if (strcmp(argv[0], "scenario_initial_cash") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gInitialCash = clamp(MONEY(int_val[0], 0), MONEY(0, 0), MONEY(1000000, 00)); + gInitialCash = Math::Clamp(MONEY(0, 0), MONEY(int_val[0], 0), MONEY(1000000, 00)); console_execute_silent("get scenario_initial_cash"); } else if (strcmp(argv[0], "current_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gBankLoan = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), gMaxBankLoan); + gBankLoan = Math::Clamp(MONEY(0, 0), MONEY(int_val[0] - (int_val[0] % 1000), 0), gMaxBankLoan); console_execute_silent("get current_loan"); } else if (strcmp(argv[0], "max_loan") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gMaxBankLoan = clamp(MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(0, 0), MONEY(5000000, 0)); + gMaxBankLoan = Math::Clamp(MONEY(0, 0), MONEY(int_val[0] - (int_val[0] % 1000), 0), MONEY(5000000, 0)); console_execute_silent("get max_loan"); } else if (strcmp(argv[0], "guest_initial_cash") == 0 && invalidArguments(&invalidArgs, double_valid[0])) { - gGuestInitialCash = clamp(MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(0, 0), MONEY(1000, 0)); + gGuestInitialCash = Math::Clamp(MONEY(0, 0), MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(1000, 0)); console_execute_silent("get guest_initial_cash"); } else if (strcmp(argv[0], "guest_initial_happiness") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { @@ -932,11 +938,11 @@ static sint32 cc_set(const utf8 **argv, sint32 argc) console_execute_silent("get guest_initial_happiness"); } else if (strcmp(argv[0], "guest_initial_hunger") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gGuestInitialHunger = (clamp(int_val[0], 1, 84) * 255 / 100 - 255) * -1; + gGuestInitialHunger = (Math::Clamp(1, int_val[0], 84) * 255 / 100 - 255) * -1; console_execute_silent("get guest_initial_hunger"); } else if (strcmp(argv[0], "guest_initial_thirst") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gGuestInitialThirst = (clamp(int_val[0], 1, 84) * 255 / 100 - 255) * -1; + gGuestInitialThirst = (Math::Clamp(1, int_val[0], 84) * 255 / 100 - 255) * -1; console_execute_silent("get guest_initial_thirst"); } else if (strcmp(argv[0], "guest_prefer_less_intense_rides") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { @@ -984,19 +990,19 @@ static sint32 cc_set(const utf8 **argv, sint32 argc) console_execute_silent("get park_open"); } else if (strcmp(argv[0], "land_rights_cost") == 0 && invalidArguments(&invalidArgs, double_valid[0])) { - gLandPrice = clamp(MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(0, 0), MONEY(200, 0)); + gLandPrice = Math::Clamp(MONEY(0, 0), MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(200, 0)); console_execute_silent("get land_rights_cost"); } else if (strcmp(argv[0], "construction_rights_cost") == 0 && invalidArguments(&invalidArgs, double_valid[0])) { - gConstructionRightsPrice = clamp(MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(0, 0), MONEY(200, 0)); + gConstructionRightsPrice = Math::Clamp(MONEY(0, 0), MONEY((sint32)double_val[0], ((sint32)(double_val[0] * 100)) % 100), MONEY(200, 0)); console_execute_silent("get construction_rights_cost"); } else if (strcmp(argv[0], "climate") == 0) { if (int_valid[0]) { - gClimate = clamp(int_val[0], 0, 3); + gClimate = Math::Clamp(0, int_val[0], 3); } else { - utf8* climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" }; + const utf8 * climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" }; for (i = 0; i < 4; i++) { if (strcmp(argv[1], climate_names[i]) == 0) { gClimate = i; @@ -1010,7 +1016,7 @@ static sint32 cc_set(const utf8 **argv, sint32 argc) console_execute_silent("get climate"); } else if (strcmp(argv[0], "game_speed") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gGameSpeed = clamp(int_val[0], 1, 8); + gGameSpeed = Math::Clamp(1, int_val[0], 8); console_execute_silent("get game_speed"); } else if (strcmp(argv[0], "console_small_font") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { @@ -1041,7 +1047,7 @@ static sint32 cc_set(const utf8 **argv, sint32 argc) } else if (strcmp(argv[0], "window_scale") == 0 && invalidArguments(&invalidArgs, double_valid[0])) { float newScale = (float)(0.001*trunc(1000*double_val[0])); - gConfigGeneral.window_scale = clamp(newScale, 0.5f, 5.0f); + gConfigGeneral.window_scale = Math::Clamp(0.5f, newScale, 5.0f); config_save_default(); gfx_invalidate_screen(); context_trigger_resize(); @@ -1325,10 +1331,10 @@ static sint32 cc_show_limits(const utf8 ** argv, sint32 argc) typedef sint32 (*console_command_func)(const utf8 **argv, sint32 argc); typedef struct console_command { - utf8 *command; + const utf8 * command; console_command_func func; - utf8 *help; - utf8 *usage; + const utf8 * help; + const utf8 * usage; } console_command; static const utf8* console_variable_table[] = { @@ -1404,28 +1410,36 @@ static const console_command console_command_table[] = { }; static sint32 cc_windows(const utf8 **argv, sint32 argc) { - for (sint32 i = 0; i < countof(console_window_table); i++) - console_writeline(console_window_table[i]); + for (auto s : console_window_table) + { + console_writeline(s); + } return 0; } static sint32 cc_variables(const utf8 **argv, sint32 argc) { - for (sint32 i = 0; i < countof(console_variable_table); i++) - console_writeline(console_variable_table[i]); + for (auto s : console_variable_table) + { + console_writeline(s); + } return 0; } static sint32 cc_help(const utf8 **argv, sint32 argc) { - if (argc > 0) { - for (sint32 i = 0; i < countof(console_command_table); i++) { - if (strcmp(console_command_table[i].command, argv[0]) == 0) { - console_writeline(console_command_table[i].help); - console_printf("\nUsage: %s", console_command_table[i].usage); + if (argc > 0) + { + for (const auto &c : console_command_table) + { + if (strcmp(c.command, argv[0]) == 0) + { + console_writeline(c.help); + console_printf("\nUsage: %s", c.usage); } } } - else { + else + { console_write_all_commands(); } return 0; @@ -1433,8 +1447,10 @@ static sint32 cc_help(const utf8 **argv, sint32 argc) static void console_write_all_commands() { - for (sint32 i = 0; i < countof(console_command_table); i++) - console_writeline(console_command_table[i].command); + for (const auto &c : console_command_table) + { + console_writeline(c.command); + } } void console_execute(const utf8 *src) @@ -1448,7 +1464,7 @@ void console_execute_silent(const utf8 *src) { sint32 argc = 0; sint32 argvCapacity = 8; - utf8 **argv = malloc(argvCapacity * sizeof(utf8*)); + utf8 **argv = (utf8 * *)malloc(argvCapacity * sizeof(utf8*)); const utf8 *start = src; const utf8 *end; bool inQuotes = false; @@ -1475,13 +1491,13 @@ void console_execute_silent(const utf8 *src) size_t length = end - start; if (length > 0) { - utf8 *arg = malloc(length + 1); + utf8 *arg = (utf8 *)malloc(length + 1); memcpy(arg, start, length); arg[length] = 0; if (argc >= argvCapacity) { argvCapacity *= 2; - argv = realloc(argv, argvCapacity * sizeof(utf8*)); + argv = (utf8 * *)realloc(argv, argvCapacity * sizeof(utf8*)); } argv[argc] = arg; argc++; @@ -1500,9 +1516,11 @@ void console_execute_silent(const utf8 *src) } bool validCommand = false; - for (sint32 i = 0; i < countof(console_command_table); i++) { - if (strcmp(argv[0], console_command_table[i].command) == 0) { - console_command_table[i].func((const utf8 **)(argv + 1), argc - 1); + for (const auto &c : console_command_table) + { + if (strcmp(argv[0], c.command) == 0) + { + c.func((const utf8 **)(argv + 1), argc - 1); validCommand = true; break; } @@ -1529,3 +1547,5 @@ static bool invalidArguments(bool *invalid, bool arguments) } return true; } + +} diff --git a/src/openrct2/interface/console.h b/src/openrct2/interface/Console.h similarity index 100% rename from src/openrct2/interface/console.h rename to src/openrct2/interface/Console.h diff --git a/src/openrct2/network/Twitch.cpp b/src/openrct2/network/Twitch.cpp index 8fc2eaa8a0..7e603f8111 100644 --- a/src/openrct2/network/Twitch.cpp +++ b/src/openrct2/network/Twitch.cpp @@ -34,7 +34,7 @@ #include "../config/Config.h" #include "../drawing/Drawing.h" #include "../Game.h" -#include "../interface/console.h" +#include "../interface/Console.h" #include "../localisation/Localisation.h" #include "../management/NewsItem.h" #include "../peep/Peep.h" diff --git a/src/openrct2/paint/Painter.cpp b/src/openrct2/paint/Painter.cpp index e852fd69d7..5a9ace47d7 100644 --- a/src/openrct2/paint/Painter.cpp +++ b/src/openrct2/paint/Painter.cpp @@ -24,7 +24,7 @@ #include "../drawing/Drawing.h" #include "../Game.h" #include "../interface/Chat.h" -#include "../interface/console.h" +#include "../interface/Console.h" #include "../Intro.h" #include "../localisation/Language.h" #include "../localisation/FormatCodes.h"