From 554968383ca02361f03b9f22bac81babc03e4bd4 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 25 Feb 2024 18:21:16 +0100 Subject: [PATCH 1/2] Move global window indices to constexpr --- src/openrct2-ui/input/Shortcuts.cpp | 8 +- src/openrct2/interface/Window.h | 120 ++++++++++---------- src/openrct2/windows/TileInspectorGlobals.h | 5 +- 3 files changed, 66 insertions(+), 67 deletions(-) diff --git a/src/openrct2-ui/input/Shortcuts.cpp b/src/openrct2-ui/input/Shortcuts.cpp index c430666839..d8312c8f12 100644 --- a/src/openrct2-ui/input/Shortcuts.cpp +++ b/src/openrct2-ui/input/Shortcuts.cpp @@ -549,7 +549,7 @@ static void ShortcutIncreaseElementHeight() if (w != nullptr) { int action = -1; - switch (w->tileInspectorPage) + switch (EnumValue(w->tileInspectorPage)) { case WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SURFACE: action = WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_INCREASE; @@ -575,8 +575,6 @@ static void ShortcutIncreaseElementHeight() case WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_BANNER: action = WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_INCREASE; break; - case TileInspectorPage::Default: - break; } if (action != -1 && !WidgetIsDisabled(*w, action) && w->widgets[action].type != WindowWidgetType::Empty) WindowEventMouseDownCall(w, action); @@ -590,7 +588,7 @@ static void ShortcutDecreaseElementHeight() if (w != nullptr) { int action = -1; - switch (w->tileInspectorPage) + switch (EnumValue(w->tileInspectorPage)) { case WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SURFACE: action = WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_DECREASE; @@ -616,8 +614,6 @@ static void ShortcutDecreaseElementHeight() case WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_BANNER: action = WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_DECREASE; break; - case TileInspectorPage::Default: - break; } if (action != -1 && !WidgetIsDisabled(*w, action) && w->widgets[action].type != WindowWidgetType::Empty) WindowEventMouseDownCall(w, action); diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 66c4dc08e9..c313797e8f 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -14,6 +14,8 @@ #include "../drawing/ImageId.hpp" #include "../localisation/Formatter.h" #include "../ride/RideTypes.h" +#include "../util/Util.h" +#include "../windows/TileInspectorGlobals.h" #include "../world/Location.hpp" #include "../world/ScenerySelection.h" #include "WindowClasses.h" @@ -336,65 +338,65 @@ enum WindowDetail #define validate_global_widx(wc, widx) \ static_assert(widx == wc##__##widx, "Global WIDX of " #widx " doesn't match actual value.") -#define WC_MAIN_WINDOW__0 0 -#define WC_TOP_TOOLBAR__WIDX_PAUSE 0 -#define WC_TOP_TOOLBAR__WIDX_LAND 8 -#define WC_TOP_TOOLBAR__WIDX_WATER 9 -#define WC_TOP_TOOLBAR__WIDX_SCENERY 10 -#define WC_TOP_TOOLBAR__WIDX_PATH 11 -#define WC_TOP_TOOLBAR__WIDX_CLEAR_SCENERY 17 -#define WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT 25 -#define WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE 30 -#define WC_RIDE_CONSTRUCTION__WIDX_EXIT 31 -#define WC_RIDE_CONSTRUCTION__WIDX_ROTATE 32 -#define WC_MAZE_CONSTRUCTION__WIDX_MAZE_DIRECTION_GROUPBOX WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT -#define WC_MAZE_CONSTRUCTION__WIDX_MAZE_ENTRANCE WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE -#define WC_MAZE_CONSTRUCTION__WIDX_MAZE_EXIT WC_RIDE_CONSTRUCTION__WIDX_EXIT -#define WC_SCENERY__WIDX_SCENERY_TAB_1 14 -#define WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON 5 -#define WC_SCENERY__WIDX_SCENERY_EYEDROPPER_BUTTON 10 -#define WC_PEEP__WIDX_PATROL 10 -#define WC_PEEP__WIDX_ACTION_LBL 13 -#define WC_PEEP__WIDX_PICKUP 14 -#define WC_TRACK_DESIGN_LIST__WIDX_ROTATE 8 -#define WC_TRACK_DESIGN_PLACE__WIDX_ROTATE 3 -#define WC_MAP__WIDX_ROTATE_90 24 -#define WC_EDITOR_OBJECT_SELECTION__WIDX_TAB_1 22 -#define WC_STAFF__WIDX_PICKUP 9 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE 13 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_COPY 16 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_PASTE 15 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_REMOVE 10 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_UP 11 -#define WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_DOWN 12 -#define WC_TILE_INSPECTOR__WIDX_SPINNER_X_INCREASE 5 -#define WC_TILE_INSPECTOR__WIDX_SPINNER_X_DECREASE 6 -#define WC_TILE_INSPECTOR__WIDX_SPINNER_Y_INCREASE 8 -#define WC_TILE_INSPECTOR__WIDX_SPINNER_Y_DECREASE 9 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SURFACE TileInspectorPage::Surface -#define WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_PATH TileInspectorPage::Path -#define WC_TILE_INSPECTOR__WIDX_PATH_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_PATH_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_TRACK TileInspectorPage::Track -#define WC_TILE_INSPECTOR__WIDX_TRACK_SPINNER_HEIGHT_INCREASE 28 -#define WC_TILE_INSPECTOR__WIDX_TRACK_SPINNER_HEIGHT_DECREASE 29 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SCENERY TileInspectorPage::Scenery -#define WC_TILE_INSPECTOR__WIDX_SCENERY_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_SCENERY_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_ENTRANCE TileInspectorPage::Entrance -#define WC_TILE_INSPECTOR__WIDX_ENTRANCE_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_ENTRANCE_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_WALL TileInspectorPage::Wall -#define WC_TILE_INSPECTOR__WIDX_WALL_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_WALL_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_LARGE_SCENERY TileInspectorPage::LargeScenery -#define WC_TILE_INSPECTOR__WIDX_LARGE_SCENERY_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_LARGE_SCENERY_SPINNER_HEIGHT_DECREASE 28 -#define WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_BANNER TileInspectorPage::Banner -#define WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_INCREASE 27 -#define WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_DECREASE 28 +constexpr int32_t WC_MAIN_WINDOW__0 = 0; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_PAUSE = 0; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_LAND = 8; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_WATER = 9; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_SCENERY = 10; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_PATH = 11; +constexpr int32_t WC_TOP_TOOLBAR__WIDX_CLEAR_SCENERY = 17; +constexpr int32_t WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT = 25; +constexpr int32_t WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE = 30; +constexpr int32_t WC_RIDE_CONSTRUCTION__WIDX_EXIT = 31; +constexpr int32_t WC_RIDE_CONSTRUCTION__WIDX_ROTATE = 32; +constexpr int32_t WC_MAZE_CONSTRUCTION__WIDX_MAZE_DIRECTION_GROUPBOX = WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT; +constexpr int32_t WC_MAZE_CONSTRUCTION__WIDX_MAZE_ENTRANCE = WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE; +constexpr int32_t WC_MAZE_CONSTRUCTION__WIDX_MAZE_EXIT = WC_RIDE_CONSTRUCTION__WIDX_EXIT; +constexpr int32_t WC_SCENERY__WIDX_SCENERY_TAB_1 = 14; +constexpr int32_t WC_SCENERY__WIDX_SCENERY_ROTATE_OBJECTS_BUTTON = 5; +constexpr int32_t WC_SCENERY__WIDX_SCENERY_EYEDROPPER_BUTTON = 10; +constexpr int32_t WC_PEEP__WIDX_PATROL = 10; +constexpr int32_t WC_PEEP__WIDX_ACTION_LBL = 13; +constexpr int32_t WC_PEEP__WIDX_PICKUP = 14; +constexpr int32_t WC_TRACK_DESIGN_LIST__WIDX_ROTATE = 8; +constexpr int32_t WC_TRACK_DESIGN_PLACE__WIDX_ROTATE = 3; +constexpr int32_t WC_MAP__WIDX_ROTATE_90 = 24; +constexpr int32_t WC_EDITOR_OBJECT_SELECTION__WIDX_TAB_1 = 22; +constexpr int32_t WC_STAFF__WIDX_PICKUP = 9; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_ROTATE = 13; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_COPY = 16; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_PASTE = 15; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_REMOVE = 10; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_UP = 11; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BUTTON_MOVE_DOWN = 12; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_INCREASE = 5; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_X_DECREASE = 6; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_INCREASE = 8; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SPINNER_Y_DECREASE = 9; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SURFACE = EnumValue(TileInspectorPage::Surface); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SURFACE_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_PATH = EnumValue(TileInspectorPage::Path); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_PATH_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_PATH_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_TRACK = EnumValue(TileInspectorPage::Track); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_TRACK_SPINNER_HEIGHT_INCREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_TRACK_SPINNER_HEIGHT_DECREASE = 29; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_SCENERY = EnumValue(TileInspectorPage::Scenery); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SCENERY_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_SCENERY_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_ENTRANCE = EnumValue(TileInspectorPage::Entrance); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_ENTRANCE_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_ENTRANCE_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_WALL = EnumValue(TileInspectorPage::Wall); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_WALL_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_WALL_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_LARGE_SCENERY = EnumValue(TileInspectorPage::LargeScenery); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_LARGE_SCENERY_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_LARGE_SCENERY_SPINNER_HEIGHT_DECREASE = 28; +constexpr int32_t WC_TILE_INSPECTOR__TILE_INSPECTOR_PAGE_BANNER = EnumValue(TileInspectorPage::Banner); +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_INCREASE = 27; +constexpr int32_t WC_TILE_INSPECTOR__WIDX_BANNER_SPINNER_HEIGHT_DECREASE = 28; enum class PromptMode : uint8_t { diff --git a/src/openrct2/windows/TileInspectorGlobals.h b/src/openrct2/windows/TileInspectorGlobals.h index 1c615d9b7c..1e9559bf2d 100644 --- a/src/openrct2/windows/TileInspectorGlobals.h +++ b/src/openrct2/windows/TileInspectorGlobals.h @@ -9,8 +9,9 @@ #pragma once -#include "../common.h" -#include "../interface/Window.h" +#include + +struct TileCoordsXY; enum class TileInspectorPage : int16_t { From 4ba4f96f619f51d5d394de430462c3bd356c224e Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 25 Feb 2024 23:13:10 +0100 Subject: [PATCH 2/2] clang-tidy: exclude validate_global_widx() from macro check --- .clang-tidy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.clang-tidy b/.clang-tidy index 20cc308454..f9c1c33605 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -4,5 +4,8 @@ Checks: > cppcoreguidelines-macro-usage, modernize-use-nullptr, modernize-use-override +CheckOptions: + - key: cppcoreguidelines-macro-usage.AllowedRegexp + value: 'validate_global_widx' WarningsAsErrors: true FormatStyle: 'file'