Close #13625: Refactor TOOL_IDX to use strong enum

This commit is contained in:
Tulio Leao 2020-12-23 01:11:15 -03:00
parent d6ebdded6b
commit 00483df2f2
22 changed files with 64 additions and 65 deletions

View File

@ -186,7 +186,7 @@ namespace OpenRCT2::Scripting
// prevents abort from being called.
rct_widgetindex widgetIndex = -2;
tool_cancel();
tool_set(toolbarWindow, widgetIndex, static_cast<TOOL_IDX>(customTool.Cursor));
tool_set(toolbarWindow, widgetIndex, static_cast<Tool>(customTool.Cursor));
ActiveCustomTool = std::move(customTool);
ActiveCustomTool->Start();
}

View File

@ -218,7 +218,7 @@ rct_window* window_footpath_open()
tool_cancel();
gFootpathConstructionMode = PATH_CONSTRUCTION_MODE_LAND;
tool_set(window, WIDX_CONSTRUCT_ON_LAND, TOOL_PATH_DOWN);
tool_set(window, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown);
input_set_flag(INPUT_FLAG_6, true);
_footpathErrorOccured = false;
window_footpath_set_enabled_and_pressed_widgets();
@ -269,7 +269,7 @@ static void window_footpath_mouseup(rct_window* w, rct_widgetindex widgetIndex)
map_invalidate_map_selection_tiles();
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT;
gFootpathConstructionMode = PATH_CONSTRUCTION_MODE_LAND;
tool_set(w, WIDX_CONSTRUCT_ON_LAND, TOOL_PATH_DOWN);
tool_set(w, WIDX_CONSTRUCT_ON_LAND, Tool::PathDown);
input_set_flag(INPUT_FLAG_6, true);
_footpathErrorOccured = false;
window_footpath_set_enabled_and_pressed_widgets();
@ -286,7 +286,7 @@ static void window_footpath_mouseup(rct_window* w, rct_widgetindex widgetIndex)
map_invalidate_map_selection_tiles();
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE_CONSTRUCT;
gFootpathConstructionMode = 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;
window_footpath_set_enabled_and_pressed_widgets();

View File

@ -593,7 +593,7 @@ void window_guest_overview_mouse_up(rct_window* w, rct_widgetindex widgetIndex)
rct_window* wind = window_find_by_number(WC_PEEP, peepnum);
if (wind)
{
tool_set(wind, WC_PEEP__WIDX_PICKUP, TOOL_PICKER);
tool_set(wind, WC_PEEP__WIDX_PICKUP, Tool::Picker);
}
});
GameActions::Execute(&pickupAction);

View File

@ -106,7 +106,7 @@ rct_window* window_land_rights_open()
gLandToolSize = 1;
show_gridlines();
tool_set(window, WIDX_BUY_LAND_RIGHTS, TOOL_UP_ARROW);
tool_set(window, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow);
input_set_flag(INPUT_FLAG_6, true);
show_land_rights();
@ -144,7 +144,7 @@ static void window_land_rights_mouseup(rct_window* w, rct_widgetindex widgetInde
case WIDX_BUY_LAND_RIGHTS:
if (_landRightsMode != LAND_RIGHTS_MODE_BUY_LAND)
{
tool_set(w, WIDX_BUY_LAND_RIGHTS, TOOL_UP_ARROW);
tool_set(w, WIDX_BUY_LAND_RIGHTS, Tool::UpArrow);
_landRightsMode = LAND_RIGHTS_MODE_BUY_LAND;
show_land_rights();
w->Invalidate();
@ -153,7 +153,7 @@ static void window_land_rights_mouseup(rct_window* w, rct_widgetindex widgetInde
case WIDX_BUY_CONSTRUCTION_RIGHTS:
if (_landRightsMode != LAND_RIGHTS_MODE_BUY_CONSTRUCTION_RIGHTS)
{
tool_set(w, WIDX_BUY_CONSTRUCTION_RIGHTS, TOOL_UP_ARROW);
tool_set(w, WIDX_BUY_CONSTRUCTION_RIGHTS, Tool::UpArrow);
_landRightsMode = LAND_RIGHTS_MODE_BUY_CONSTRUCTION_RIGHTS;
show_construction_rights();
w->Invalidate();

View File

@ -287,7 +287,7 @@ static void window_map_mouseup(rct_window* w, rct_widgetindex widgetIndex)
break;
case WIDX_SET_LAND_RIGHTS:
w->Invalidate();
if (tool_set(w, widgetIndex, TOOL_UP_ARROW))
if (tool_set(w, widgetIndex, Tool::UpArrow))
break;
_activeTool = 2;
// Prevent mountain tool size.
@ -330,7 +330,7 @@ static void window_map_mouseup(rct_window* w, rct_widgetindex widgetIndex)
break;
case WIDX_BUILD_PARK_ENTRANCE:
w->Invalidate();
if (tool_set(w, widgetIndex, TOOL_UP_ARROW))
if (tool_set(w, widgetIndex, Tool::UpArrow))
break;
gParkEntranceGhostExists = false;
@ -344,7 +344,7 @@ static void window_map_mouseup(rct_window* w, rct_widgetindex widgetIndex)
gWindowSceneryRotation = (gWindowSceneryRotation + 1) & 3;
break;
case WIDX_PEOPLE_STARTING_POSITION:
if (tool_set(w, widgetIndex, TOOL_UP_ARROW))
if (tool_set(w, widgetIndex, Tool::UpArrow))
break;
show_gridlines();

View File

@ -177,7 +177,7 @@ static void window_maze_construction_close(rct_window* w)
static void window_maze_construction_entrance_mouseup(rct_window* w, rct_widgetindex widgetIndex)
{
if (tool_set(w, widgetIndex, TOOL_CROSSHAIR))
if (tool_set(w, widgetIndex, Tool::Crosshair))
return;
gRideEntranceExitPlaceType = widgetIndex == WIDX_MAZE_ENTRANCE ? ENTRANCE_TYPE_RIDE_ENTRANCE : ENTRANCE_TYPE_RIDE_EXIT;

View File

@ -4268,7 +4268,7 @@ static void window_ride_colour_mouseup(rct_window* w, rct_widgetindex widgetInde
window_ride_set_page(w, widgetIndex - WIDX_TAB_1);
break;
case WIDX_PAINT_INDIVIDUAL_AREA:
tool_set(w, WIDX_PAINT_INDIVIDUAL_AREA, TOOL_PAINT_DOWN);
tool_set(w, WIDX_PAINT_INDIVIDUAL_AREA, Tool::PaintDown);
break;
}
}
@ -5174,7 +5174,7 @@ static void setup_scenery_selection(rct_window* w)
cancel_scenery_selection();
}
while (tool_set(w, WIDX_BACKGROUND, TOOL_CROSSHAIR))
while (tool_set(w, WIDX_BACKGROUND, Tool::Crosshair))
;
gTrackDesignSaveRideIndex = w->number;

View File

@ -1971,7 +1971,7 @@ static void window_ride_construction_rotate(rct_window* w)
*/
static void window_ride_construction_entrance_click(rct_window* w)
{
if (tool_set(w, WIDX_ENTRANCE, TOOL_CROSSHAIR))
if (tool_set(w, WIDX_ENTRANCE, Tool::Crosshair))
{
auto ride = get_ride(_currentRideIndex);
if (ride != nullptr && !ride_try_get_origin_element(ride, nullptr))
@ -2001,7 +2001,7 @@ static void window_ride_construction_entrance_click(rct_window* w)
*/
static void window_ride_construction_exit_click(rct_window* w)
{
if (tool_set(w, WIDX_EXIT, TOOL_CROSSHAIR))
if (tool_set(w, WIDX_EXIT, Tool::Crosshair))
{
auto ride = get_ride(_currentRideIndex);
if (!ride_try_get_origin_element(ride, nullptr))
@ -3794,7 +3794,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;

View File

@ -801,11 +801,11 @@ static void window_scenery_update(rct_window* w)
if (gWindowSceneryEyedropperEnabled)
{
gCurrentToolId = TOOL_CROSSHAIR;
gCurrentToolId = Tool::Crosshair;
}
else if (gWindowSceneryPaintEnabled == 1)
{
gCurrentToolId = TOOL_PAINT_DOWN;
gCurrentToolId = Tool::PaintDown;
}
else
{
@ -816,25 +816,24 @@ static void window_scenery_update(rct_window* w)
{
if (tabSelectedScenery.SceneryType == SCENERY_TYPE_BANNER)
{
gCurrentToolId = TOOL_ENTRANCE_DOWN;
gCurrentToolId = Tool::EntranceDown;
}
else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_LARGE)
{
gCurrentToolId = static_cast<TOOL_IDX>(
gCurrentToolId = static_cast<Tool>(
get_large_scenery_entry(tabSelectedScenery.EntryIndex)->large_scenery.tool_id);
}
else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_WALL)
{
gCurrentToolId = static_cast<TOOL_IDX>(get_wall_entry(tabSelectedScenery.EntryIndex)->wall.tool_id);
gCurrentToolId = static_cast<Tool>(get_wall_entry(tabSelectedScenery.EntryIndex)->wall.tool_id);
}
else if (tabSelectedScenery.SceneryType == SCENERY_TYPE_PATH_ITEM)
{ // path bit
gCurrentToolId = static_cast<TOOL_IDX>(
get_footpath_item_entry(tabSelectedScenery.EntryIndex)->path_bit.tool_id);
gCurrentToolId = static_cast<Tool>(get_footpath_item_entry(tabSelectedScenery.EntryIndex)->path_bit.tool_id);
}
else
{ // small scenery
gCurrentToolId = static_cast<TOOL_IDX>(
gCurrentToolId = static_cast<Tool>(
get_small_scenery_entry(tabSelectedScenery.EntryIndex)->small_scenery.tool_id);
}
}

View File

@ -423,7 +423,7 @@ void window_staff_overview_mouseup(rct_window* w, rct_widgetindex widgetIndex)
rct_window* wind = window_find_by_number(WC_PEEP, peepnum);
if (wind)
{
tool_set(wind, WC_STAFF__WIDX_PICKUP, TOOL_PICKER);
tool_set(wind, WC_STAFF__WIDX_PICKUP, Tool::Picker);
}
});
GameActions::Execute(&pickupAction);
@ -567,7 +567,7 @@ void window_staff_overview_dropdown(rct_window* w, rct_widgetindex widgetIndex,
}
else
{
if (!tool_set(w, widgetIndex, TOOL_WALK_DOWN))
if (!tool_set(w, widgetIndex, Tool::WalkDown))
{
show_gridlines();
gStaffDrawPatrolAreas = w->number;

View File

@ -227,7 +227,7 @@ static void window_staff_list_mouseup(rct_window* w, rct_widgetindex widgetIndex
break;
}
case WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON:
if (!tool_set(w, WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON, TOOL_CROSSHAIR))
if (!tool_set(w, WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON, Tool::Crosshair))
{
show_gridlines();
gStaffDrawPatrolAreas = _windowStaffListSelectedTab | 0x8000;

View File

@ -518,7 +518,7 @@ rct_window* window_tile_inspector_open()
windowTileInspectorTileSelected = false;
tool_set(window, WIDX_BACKGROUND, TOOL_CROSSHAIR);
tool_set(window, WIDX_BACKGROUND, Tool::Crosshair);
return window;
}

View File

@ -331,7 +331,7 @@ static void window_title_command_editor_mouseup(rct_window* w, rct_widgetindex w
case WIDX_SELECT_SPRITE:
if (!sprite_selector_tool_is_active())
{
tool_set(w, WIDX_BACKGROUND, TOOL_CROSSHAIR);
tool_set(w, WIDX_BACKGROUND, Tool::Crosshair);
}
else
{

View File

@ -366,7 +366,7 @@ static void window_top_toolbar_mouseup(rct_window* w, rct_widgetindex widgetInde
toggle_water_window(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);
@ -2092,7 +2092,7 @@ static void top_toolbar_tool_update_land(const ScreenCoordsXY& screenPos)
map_invalidate_selection_rect();
if (gCurrentToolId == TOOL_UP_DOWN_ARROW)
if (gCurrentToolId == Tool::UpDownArrow)
{
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
return;
@ -2328,7 +2328,7 @@ static void top_toolbar_tool_update_water(const ScreenCoordsXY& screenPos)
{
map_invalidate_selection_rect();
if (gCurrentToolId == TOOL_UP_DOWN_ARROW)
if (gCurrentToolId == Tool::UpDownArrow)
{
if (!(gMapSelectFlags & MAP_SELECT_FLAG_ENABLE))
return;
@ -2947,7 +2947,7 @@ static void window_top_toolbar_tool_down(rct_window* w, rct_widgetindex widgetIn
{
auto action = GetClearAction();
GameActions::Execute(&action);
gCurrentToolId = TOOL_CROSSHAIR;
gCurrentToolId = Tool::Crosshair;
}
break;
case WIDX_LAND:
@ -2959,7 +2959,7 @@ static void window_top_toolbar_tool_down(rct_window* w, rct_widgetindex widgetIn
GameActions::Execute(&surfaceSetStyleAction);
gCurrentToolId = TOOL_UP_DOWN_ARROW;
gCurrentToolId = Tool::UpDownArrow;
}
else
{
@ -2969,7 +2969,7 @@ static void window_top_toolbar_tool_down(rct_window* w, rct_widgetindex widgetIn
case WIDX_WATER:
if (gMapSelectFlags & MAP_SELECT_FLAG_ENABLE)
{
gCurrentToolId = TOOL_UP_DOWN_ARROW;
gCurrentToolId = Tool::UpDownArrow;
}
else
{
@ -3166,7 +3166,7 @@ static void window_top_toolbar_tool_drag(rct_window* w, rct_widgetindex widgetIn
{
auto action = GetClearAction();
GameActions::Execute(&action);
gCurrentToolId = TOOL_CROSSHAIR;
gCurrentToolId = Tool::Crosshair;
}
break;
case WIDX_LAND:
@ -3183,7 +3183,7 @@ static void window_top_toolbar_tool_drag(rct_window* w, rct_widgetindex widgetIn
// The tool is set to 12 here instead of 3 so that the dragging cursor is not the elevation change
// cursor
gCurrentToolId = TOOL_CROSSHAIR;
gCurrentToolId = Tool::Crosshair;
}
}
else
@ -3230,17 +3230,17 @@ static void window_top_toolbar_tool_up(rct_window* w, rct_widgetindex widgetInde
case WIDX_LAND:
map_invalidate_selection_rect();
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
gCurrentToolId = TOOL_DIG_DOWN;
gCurrentToolId = Tool::DigDown;
break;
case WIDX_WATER:
map_invalidate_selection_rect();
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
gCurrentToolId = TOOL_WATER_DOWN;
gCurrentToolId = Tool::WaterDown;
break;
case WIDX_CLEAR_SCENERY:
map_invalidate_selection_rect();
gMapSelectFlags &= ~MAP_SELECT_FLAG_ENABLE;
gCurrentToolId = TOOL_CROSSHAIR;
gCurrentToolId = Tool::Crosshair;
break;
#ifdef ENABLE_SCRIPTING
default:
@ -3768,7 +3768,7 @@ static void toggle_land_window(rct_window* topToolbar, rct_widgetindex widgetInd
{
_landToolBlocked = false;
show_gridlines();
tool_set(topToolbar, widgetIndex, TOOL_DIG_DOWN);
tool_set(topToolbar, widgetIndex, Tool::DigDown);
input_set_flag(INPUT_FLAG_6, true);
context_open_window(WC_LAND);
}
@ -3788,7 +3788,7 @@ static void toggle_clear_scenery_window(rct_window* topToolbar, rct_widgetindex
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);
}
@ -3809,7 +3809,7 @@ static void toggle_water_window(rct_window* topToolbar, rct_widgetindex widgetIn
{
_landToolBlocked = false;
show_gridlines();
tool_set(topToolbar, widgetIndex, TOOL_WATER_DOWN);
tool_set(topToolbar, widgetIndex, Tool::WaterDown);
input_set_flag(INPUT_FLAG_6, true);
context_open_window(WC_WATER);
}

View File

@ -146,7 +146,7 @@ rct_window* window_track_place_open(const track_design_file_ref* tdFileRef)
w->widgets = window_track_place_widgets;
w->enabled_widgets = 1 << WIDX_CLOSE | 1 << WIDX_ROTATE | 1 << WIDX_MIRROR | 1 << WIDX_SELECT_DIFFERENT_DESIGN;
WindowInitScrollWidgets(w);
tool_set(w, WIDX_PRICE, TOOL_CROSSHAIR);
tool_set(w, WIDX_PRICE, Tool::Crosshair);
input_set_flag(INPUT_FLAG_6, true);
window_push_others_right(w);
show_gridlines();

View File

@ -217,7 +217,7 @@ static void window_view_clipping_mouseup(rct_window* w, rct_widgetindex widgetIn
break;
case WIDX_CLIP_SELECTOR:
// Activate the selection tool
tool_set(w, WIDX_BACKGROUND, TOOL_CROSSHAIR);
tool_set(w, WIDX_BACKGROUND, Tool::Crosshair);
_toolActive = true;
_dragging = false;

View File

@ -20,7 +20,7 @@ widget_ref gPressedWidget;
uint16_t _tooltipNotShownTicks;
TOOL_IDX gCurrentToolId;
Tool gCurrentToolId;
widget_ref gCurrentToolWidget;
/**

View File

@ -85,7 +85,7 @@ extern uint16_t gTooltipTimeout;
extern widget_ref gTooltipWidget;
extern ScreenCoordsXY gTooltipCursor;
extern TOOL_IDX gCurrentToolId;
extern Tool gCurrentToolId;
extern widget_ref gCurrentToolWidget;
// TODO: Move to openrct2-ui and make static again

View File

@ -1331,7 +1331,7 @@ 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_IDX tool)
bool tool_set(rct_window* w, rct_widgetindex widgetIndex, Tool tool)
{
if (input_test_flag(INPUT_FLAG_TOOL_ACTIVE))
{

View File

@ -632,19 +632,19 @@ enum class GuestListFilterType : int32_t
GuestsThinkingX,
};
enum TOOL_IDX
enum class Tool
{
TOOL_ARROW = 0,
TOOL_UP_ARROW = 2,
TOOL_UP_DOWN_ARROW = 3,
TOOL_PICKER = 7,
TOOL_CROSSHAIR = 12,
TOOL_PATH_DOWN = 17,
TOOL_DIG_DOWN = 18,
TOOL_WATER_DOWN = 19,
TOOL_WALK_DOWN = 22,
TOOL_PAINT_DOWN = 23,
TOOL_ENTRANCE_DOWN = 24,
Arrow = 0,
UpArrow = 2,
UpDownArrow = 3,
Picker = 7,
Crosshair = 12,
PathDown = 17,
DigDown = 18,
WaterDown = 19,
WalkDown = 22,
PaintDown = 23,
EntranceDown = 24,
};
using modal_callback = void (*)(int32_t result);
@ -733,7 +733,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_IDX tool);
bool tool_set(rct_window* w, rct_widgetindex widgetIndex, Tool tool);
void tool_cancel();
void window_close_construction_windows();

View File

@ -395,7 +395,7 @@ void News::OpenSubject(News::ItemType type, int32_t subject)
if (window != nullptr)
{
window->Invalidate();
if (!tool_set(window, WC_TOP_TOOLBAR__WIDX_SCENERY, TOOL_ARROW))
if (!tool_set(window, WC_TOP_TOOLBAR__WIDX_SCENERY, Tool::Arrow))
{
input_set_flag(INPUT_FLAG_6, true);
context_open_window(WC_SCENERY);

View File

@ -1756,7 +1756,7 @@ static bool ride_modify_entrance_or_exit(const CoordsXYE& tileElement)
tool_set(
constructionWindow,
entranceType == ENTRANCE_TYPE_RIDE_ENTRANCE ? WC_RIDE_CONSTRUCTION__WIDX_ENTRANCE : WC_RIDE_CONSTRUCTION__WIDX_EXIT,
TOOL_CROSSHAIR);
Tool::Crosshair);
gRideEntranceExitPlaceType = entranceType;
gRideEntranceExitPlaceRideIndex = rideIndex;
gRideEntranceExitPlaceStationIndex = stationIndex;
@ -1944,7 +1944,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);