diff --git a/src/openrct2-ui/WindowManager.cpp b/src/openrct2-ui/WindowManager.cpp index 46f6b309ee..61d38ecfb2 100644 --- a/src/openrct2-ui/WindowManager.cpp +++ b/src/openrct2-ui/WindowManager.cpp @@ -307,7 +307,7 @@ public: if (tlbrWindow != nullptr) { tlbrWindow->Invalidate(); - if (!tool_set(tlbrWindow, WC_TOP_TOOLBAR__WIDX_SCENERY, Tool::Arrow)) + if (!tool_set(*tlbrWindow, WC_TOP_TOOLBAR__WIDX_SCENERY, Tool::Arrow)) { input_set_flag(INPUT_FLAG_6, true); window = WindowSceneryOpen(); diff --git a/src/openrct2-ui/scripting/CustomMenu.cpp b/src/openrct2-ui/scripting/CustomMenu.cpp index b84633fc7b..c3e0eaf0ee 100644 --- a/src/openrct2-ui/scripting/CustomMenu.cpp +++ b/src/openrct2-ui/scripting/CustomMenu.cpp @@ -268,7 +268,7 @@ namespace OpenRCT2::Scripting // prevents abort from being called. rct_widgetindex widgetIndex = -2; tool_cancel(); - tool_set(toolbarWindow, widgetIndex, static_cast(customTool.Cursor)); + tool_set(*toolbarWindow, widgetIndex, static_cast(customTool.Cursor)); ActiveCustomTool = std::move(customTool); ActiveCustomTool->Start(); } diff --git a/src/openrct2-ui/windows/Footpath.cpp b/src/openrct2-ui/windows/Footpath.cpp index 8eb02bad3b..04ef3c8204 100644 --- a/src/openrct2-ui/windows/Footpath.cpp +++ b/src/openrct2-ui/windows/Footpath.cpp @@ -213,7 +213,7 @@ rct_window* WindowFootpathOpen() tool_cancel(); _footpathConstructionMode = PATH_CONSTRUCTION_MODE_LAND; - tool_set(window, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown); + tool_set(*window, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown); input_set_flag(INPUT_FLAG_6, true); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); @@ -264,7 +264,7 @@ static void WindowFootpathMouseup(rct_window* w, rct_widgetindex widgetIndex) map_invalidate_map_selection_tiles(); gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT; _footpathConstructionMode = PATH_CONSTRUCTION_MODE_LAND; - tool_set(w, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown); + tool_set(*w, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown); input_set_flag(INPUT_FLAG_6, true); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); @@ -281,7 +281,7 @@ static void WindowFootpathMouseup(rct_window* w, rct_widgetindex widgetIndex) map_invalidate_map_selection_tiles(); gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT; _footpathConstructionMode = PATH_CONSTRUCTION_MODE_BRIDGE_OR_TUNNEL_TOOL; - tool_set(w, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL, Tool::Crosshair); + tool_set(*w, WIDX_CONSTRUCT_BRIDGE_OR_TUNNEL, Tool::Crosshair); input_set_flag(INPUT_FLAG_6, true); _footpathErrorOccured = false; WindowFootpathSetEnabledAndPressedWidgets(); diff --git a/src/openrct2-ui/windows/Guest.cpp b/src/openrct2-ui/windows/Guest.cpp index 67024c76af..34bd5044d7 100644 --- a/src/openrct2-ui/windows/Guest.cpp +++ b/src/openrct2-ui/windows/Guest.cpp @@ -632,7 +632,7 @@ private: rct_window* wind = window_find_by_number(WC_PEEP, peepnum); if (wind != nullptr) { - tool_set(wind, WC_PEEP__WIDX_PICKUP, Tool::Picker); + tool_set(*wind, WC_PEEP__WIDX_PICKUP, Tool::Picker); } }); GameActions::Execute(&pickupAction); diff --git a/src/openrct2-ui/windows/LandRights.cpp b/src/openrct2-ui/windows/LandRights.cpp index 704032f3b1..a952a0d238 100644 --- a/src/openrct2-ui/windows/LandRights.cpp +++ b/src/openrct2-ui/windows/LandRights.cpp @@ -67,7 +67,7 @@ public: gLandToolSize = 1; show_gridlines(); - tool_set(this, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow); + tool_set(*this, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow); input_set_flag(INPUT_FLAG_6, true); show_land_rights(); @@ -103,7 +103,7 @@ public: case WIDX_BUY_LAND_RIGHTS: if (_landRightsMode != LAND_RIGHTS_MODE_BUY_LAND) { - tool_set(this, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow); + tool_set(*this, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow); _landRightsMode = LAND_RIGHTS_MODE_BUY_LAND; show_land_rights(); Invalidate(); @@ -112,7 +112,7 @@ public: case WIDX_BUY_CONSTRUCTION_RIGHTS: if (_landRightsMode != LAND_RIGHTS_MODE_BUY_CONSTRUCTION_RIGHTS) { - tool_set(this, WIDX_BUY_CONSTRUCTION_RIGHTS, Tool::UpArrow); + tool_set(*this, WIDX_BUY_CONSTRUCTION_RIGHTS, Tool::UpArrow); _landRightsMode = LAND_RIGHTS_MODE_BUY_CONSTRUCTION_RIGHTS; show_construction_rights(); Invalidate(); diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 49eb151a09..03b5f0d532 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -194,7 +194,7 @@ public: break; case WIDX_SET_LAND_RIGHTS: Invalidate(); - if (tool_set(this, widgetIndex, Tool::UpArrow)) + if (tool_set(*this, widgetIndex, Tool::UpArrow)) break; _activeTool = 2; // Prevent mountain tool size. @@ -237,7 +237,7 @@ public: break; case WIDX_BUILD_PARK_ENTRANCE: Invalidate(); - if (tool_set(this, widgetIndex, Tool::UpArrow)) + if (tool_set(*this, widgetIndex, Tool::UpArrow)) break; gParkEntranceGhostExists = false; @@ -251,7 +251,7 @@ public: gWindowSceneryRotation = (gWindowSceneryRotation + 1) & 3; break; case WIDX_PEOPLE_STARTING_POSITION: - if (tool_set(this, widgetIndex, Tool::UpArrow)) + if (tool_set(*this, widgetIndex, Tool::UpArrow)) break; show_gridlines(); diff --git a/src/openrct2-ui/windows/MazeConstruction.cpp b/src/openrct2-ui/windows/MazeConstruction.cpp index 6d504bb7f4..92ecd489da 100644 --- a/src/openrct2-ui/windows/MazeConstruction.cpp +++ b/src/openrct2-ui/windows/MazeConstruction.cpp @@ -297,7 +297,7 @@ public: private: void WindowMazeConstructionEntranceMouseup(rct_widgetindex widgetIndex) { - if (tool_set(this, widgetIndex, Tool::Crosshair)) + if (tool_set(*this, widgetIndex, Tool::Crosshair)) return; gRideEntranceExitPlaceType = widgetIndex == WIDX_MAZE_ENTRANCE ? ENTRANCE_TYPE_RIDE_ENTRANCE : ENTRANCE_TYPE_RIDE_EXIT; diff --git a/src/openrct2-ui/windows/PatrolArea.cpp b/src/openrct2-ui/windows/PatrolArea.cpp index 7a7ab4f2dc..187340e979 100644 --- a/src/openrct2-ui/windows/PatrolArea.cpp +++ b/src/openrct2-ui/windows/PatrolArea.cpp @@ -244,7 +244,7 @@ private: } else { - if (!tool_set(this, 0, Tool::WalkDown)) + if (!tool_set(*this, 0, Tool::WalkDown)) { show_gridlines(); input_set_flag(INPUT_FLAG_6, true); diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index b6f06b2bba..e6243ee6f0 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -4316,7 +4316,7 @@ static void WindowRideColourMouseup(rct_window* w, rct_widgetindex widgetIndex) WindowRideSetPage(w, widgetIndex - WIDX_TAB_1); break; case WIDX_PAINT_INDIVIDUAL_AREA: - tool_set(w, WIDX_PAINT_INDIVIDUAL_AREA, Tool::PaintDown); + tool_set(*w, WIDX_PAINT_INDIVIDUAL_AREA, Tool::PaintDown); break; case WIDX_SELL_ITEM_RANDOM_COLOUR_CHECKBOX: auto ride = get_ride(w->rideId); @@ -5295,7 +5295,7 @@ static void SetupScenerySelection(rct_window* w) CancelScenerySelection(); } - while (tool_set(w, WIDX_BACKGROUND, Tool::Crosshair)) + while (tool_set(*w, WIDX_BACKGROUND, Tool::Crosshair)) ; gTrackDesignSaveRideIndex = w->rideId; diff --git a/src/openrct2-ui/windows/RideConstruction.cpp b/src/openrct2-ui/windows/RideConstruction.cpp index 82775b1938..2a1789872c 100644 --- a/src/openrct2-ui/windows/RideConstruction.cpp +++ b/src/openrct2-ui/windows/RideConstruction.cpp @@ -2392,7 +2392,7 @@ private: void EntranceClick() { - if (tool_set(this, WIDX_ENTRANCE, Tool::Crosshair)) + if (tool_set(*this, WIDX_ENTRANCE, Tool::Crosshair)) { auto currentRide = get_ride(_currentRideIndex); if (currentRide != nullptr && !ride_try_get_origin_element(currentRide, nullptr)) @@ -2418,7 +2418,7 @@ private: void ExitClick() { - if (tool_set(this, WIDX_EXIT, Tool::Crosshair)) + if (tool_set(*this, WIDX_EXIT, Tool::Crosshair)) { auto currentRide = get_ride(_currentRideIndex); if (!ride_try_get_origin_element(currentRide, nullptr)) @@ -3488,7 +3488,7 @@ void ride_construction_tooldown_construct(const ScreenCoordsXY& screenCoords) w = window_find_by_class(WC_RIDE_CONSTRUCTION); if (w != nullptr) { - tool_set(w, WIDX_CONSTRUCT, Tool::Crosshair); + tool_set(*w, WIDX_CONSTRUCT, Tool::Crosshair); input_set_flag(INPUT_FLAG_6, true); _trackPlaceCtrlState = false; _trackPlaceShiftState = false; diff --git a/src/openrct2-ui/windows/Staff.cpp b/src/openrct2-ui/windows/Staff.cpp index ab08f493b9..d49160a347 100644 --- a/src/openrct2-ui/windows/Staff.cpp +++ b/src/openrct2-ui/windows/Staff.cpp @@ -381,7 +381,7 @@ private: rct_window* wind = window_find_by_number(WC_PEEP, peepnum); if (wind != nullptr) { - tool_set(wind, WC_STAFF__WIDX_PICKUP, Tool::Picker); + tool_set(*wind, WC_STAFF__WIDX_PICKUP, Tool::Picker); } }); GameActions::Execute(&pickupAction); diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index a42101ea47..3388493c86 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -139,7 +139,7 @@ public: break; } case WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON: - if (!tool_set(this, WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON, Tool::Crosshair)) + if (!tool_set(*this, WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON, Tool::Crosshair)) { show_gridlines(); SetPatrolAreaToRender(GetSelectedStaffType()); diff --git a/src/openrct2-ui/windows/TileInspector.cpp b/src/openrct2-ui/windows/TileInspector.cpp index 2c9079e839..d0cbe5114e 100644 --- a/src/openrct2-ui/windows/TileInspector.cpp +++ b/src/openrct2-ui/windows/TileInspector.cpp @@ -531,7 +531,7 @@ rct_window* WindowTileInspectorOpen() windowTileInspectorTileSelected = false; - tool_set(window, WIDX_BACKGROUND, Tool::Crosshair); + tool_set(*window, WIDX_BACKGROUND, Tool::Crosshair); return window; } diff --git a/src/openrct2-ui/windows/TopToolbar.cpp b/src/openrct2-ui/windows/TopToolbar.cpp index e61e6c2e19..9877ff6d46 100644 --- a/src/openrct2-ui/windows/TopToolbar.cpp +++ b/src/openrct2-ui/windows/TopToolbar.cpp @@ -382,7 +382,7 @@ static void WindowTopToolbarMouseup(rct_window* w, rct_widgetindex widgetIndex) ToggleWaterWindow(w, WIDX_WATER); break; case WIDX_SCENERY: - if (!tool_set(w, WIDX_SCENERY, Tool::Arrow)) + if (!tool_set(*w, WIDX_SCENERY, Tool::Arrow)) { input_set_flag(INPUT_FLAG_6, true); context_open_window(WC_SCENERY); @@ -3820,7 +3820,7 @@ static void ToggleLandWindow(rct_window* topToolbar, rct_widgetindex widgetIndex { _landToolBlocked = false; show_gridlines(); - tool_set(topToolbar, widgetIndex, Tool::DigDown); + tool_set(*topToolbar, widgetIndex, Tool::DigDown); input_set_flag(INPUT_FLAG_6, true); context_open_window(WC_LAND); } @@ -3840,7 +3840,7 @@ static void ToggleClearSceneryWindow(rct_window* topToolbar, rct_widgetindex wid else { show_gridlines(); - tool_set(topToolbar, widgetIndex, Tool::Crosshair); + tool_set(*topToolbar, widgetIndex, Tool::Crosshair); input_set_flag(INPUT_FLAG_6, true); context_open_window(WC_CLEAR_SCENERY); } @@ -3861,7 +3861,7 @@ static void ToggleWaterWindow(rct_window* topToolbar, rct_widgetindex widgetInde { _landToolBlocked = false; show_gridlines(); - tool_set(topToolbar, widgetIndex, Tool::WaterDown); + tool_set(*topToolbar, widgetIndex, Tool::WaterDown); input_set_flag(INPUT_FLAG_6, true); context_open_window(WC_WATER); } diff --git a/src/openrct2-ui/windows/TrackDesignPlace.cpp b/src/openrct2-ui/windows/TrackDesignPlace.cpp index b5607f1da0..0a271bfbea 100644 --- a/src/openrct2-ui/windows/TrackDesignPlace.cpp +++ b/src/openrct2-ui/windows/TrackDesignPlace.cpp @@ -79,7 +79,7 @@ public: { widgets = window_track_place_widgets; WindowInitScrollWidgets(this); - tool_set(this, WIDX_PRICE, Tool::Crosshair); + tool_set(*this, WIDX_PRICE, Tool::Crosshair); input_set_flag(INPUT_FLAG_6, true); window_push_others_right(this); show_gridlines(); diff --git a/src/openrct2-ui/windows/ViewClipping.cpp b/src/openrct2-ui/windows/ViewClipping.cpp index 038e2c5e36..aaa4fce357 100644 --- a/src/openrct2-ui/windows/ViewClipping.cpp +++ b/src/openrct2-ui/windows/ViewClipping.cpp @@ -114,7 +114,7 @@ public: break; case WIDX_CLIP_SELECTOR: // Activate the selection tool - tool_set(this, WIDX_BACKGROUND, Tool::Crosshair); + tool_set(*this, WIDX_BACKGROUND, Tool::Crosshair); _toolActive = true; _dragging = false; diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index f7f83bef59..22051053ba 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -1354,11 +1354,11 @@ void window_set_resize(rct_window* w, int32_t minWidth, int32_t minHeight, int32 * @param widgetIndex (dx) * @param w (esi) */ -bool tool_set(rct_window* w, rct_widgetindex widgetIndex, Tool tool) +bool tool_set(const rct_window& w, rct_widgetindex widgetIndex, Tool tool) { if (input_test_flag(INPUT_FLAG_TOOL_ACTIVE)) { - if (w->classification == gCurrentToolWidget.window_classification && w->number == gCurrentToolWidget.window_number + if (w.classification == gCurrentToolWidget.window_classification && w.number == gCurrentToolWidget.window_number && widgetIndex == gCurrentToolWidget.widget_index) { tool_cancel(); @@ -1371,8 +1371,8 @@ bool tool_set(rct_window* w, rct_widgetindex widgetIndex, Tool tool) input_set_flag(INPUT_FLAG_TOOL_ACTIVE, true); input_set_flag(INPUT_FLAG_6, false); gCurrentToolId = tool; - gCurrentToolWidget.window_classification = w->classification; - gCurrentToolWidget.window_number = w->number; + gCurrentToolWidget.window_classification = w.classification; + gCurrentToolWidget.window_number = w.number; gCurrentToolWidget.widget_index = widgetIndex; return false; } diff --git a/src/openrct2/interface/Window.h b/src/openrct2/interface/Window.h index 759a75dfeb..caa60fad19 100644 --- a/src/openrct2/interface/Window.h +++ b/src/openrct2/interface/Window.h @@ -743,7 +743,7 @@ void window_move_position(rct_window* w, const ScreenCoordsXY& screenCoords); void window_resize(rct_window* w, int32_t dw, int32_t dh); void window_set_resize(rct_window* w, int32_t minWidth, int32_t minHeight, int32_t maxWidth, int32_t maxHeight); -bool tool_set(rct_window* w, rct_widgetindex widgetIndex, Tool tool); +bool tool_set(const rct_window& w, rct_widgetindex widgetIndex, Tool tool); void tool_cancel(); void window_close_construction_windows(); diff --git a/src/openrct2/ride/RideConstruction.cpp b/src/openrct2/ride/RideConstruction.cpp index 97edfd64d5..c65ef60f49 100644 --- a/src/openrct2/ride/RideConstruction.cpp +++ b/src/openrct2/ride/RideConstruction.cpp @@ -909,7 +909,7 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement) { // Replace entrance / exit tool_set( - constructionWindow, + *constructionWindow, entranceType == ENTRANCE_TYPE_RIDE_ENTRANCE ? WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE : WC_RIDE_CONSTRUCTION__WIDX_EXIT, Tool::Crosshair); gRideEntranceExitPlaceType = entranceType; @@ -1099,7 +1099,7 @@ int32_t ride_initialise_construction_window(Ride* ride) w = ride_create_or_find_construction_window(ride->id); - tool_set(w, WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT, Tool::Crosshair); + tool_set(*w, WC_RIDE_CONSTRUCTION__WIDX_CONSTRUCT, Tool::Crosshair); input_set_flag(INPUT_FLAG_6, true); ride = get_ride(_currentRideIndex);