Add hotkey for convert rail type by track piece

This commit is contained in:
Jonathan G Rennison
2023-06-10 10:21:33 +01:00
parent ccdca8ae52
commit 08030e1b8a
2 changed files with 30 additions and 7 deletions

View File

@@ -753,15 +753,36 @@ struct BuildRailToolbarWindow : Window {
{ {
MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection MarkTileDirtyByTile(TileVirtXY(_thd.pos.x, _thd.pos.y)); // redraw tile selection
if (hotkey == HOTKEY_POLYRAIL || hotkey == HOTKEY_NEW_POLYRAIL) { switch (hotkey) {
case HOTKEY_POLYRAIL:
case HOTKEY_NEW_POLYRAIL:
/* Indicate to the OnClick that the action comes from a hotkey rather /* Indicate to the OnClick that the action comes from a hotkey rather
* then from a click and that the CTRL state should be ignored. */ * then from a click and that the CTRL state should be ignored. */
this->last_user_action = hotkey; this->last_user_action = hotkey;
hotkey = WID_RAT_POLYRAIL; hotkey = WID_RAT_POLYRAIL;
return this->Window::OnHotkey(hotkey);
case WID_RAT_CONVERT_RAIL: {
HandlePlacePushButton(this, WID_RAT_CONVERT_RAIL, GetRailTypeInfo(_cur_railtype)->cursor.convert, HT_RECT | HT_DIAGONAL);
this->last_user_action = WID_RAT_CONVERT_RAIL;
this->UpdateRemoveWidgetStatus(WID_RAT_CONVERT_RAIL);
if (_ctrl_pressed) RailToolbar_CtrlChanged(this);
return ES_HANDLED;
} }
case WID_RAT_CONVERT_RAIL_TRACK: {
bool active = HandlePlacePushButton(this, WID_RAT_CONVERT_RAIL, GetRailTypeInfo(_cur_railtype)->cursor.convert, HT_RAIL);
if (active) _thd.square_palette = SPR_ZONING_INNER_HIGHLIGHT_GREEN;
this->last_user_action = WID_RAT_CONVERT_RAIL;
this->UpdateRemoveWidgetStatus(WID_RAT_CONVERT_RAIL);
if (_ctrl_pressed) RailToolbar_CtrlChanged(this);
return ES_HANDLED;
}
default:
return this->Window::OnHotkey(hotkey); return this->Window::OnHotkey(hotkey);
} }
}
void OnPlaceObject(Point pt, TileIndex tile) override void OnPlaceObject(Point pt, TileIndex tile) override
{ {
@@ -973,6 +994,7 @@ static Hotkey railtoolbar_hotkeys[] = {
Hotkey('T', "tunnel", WID_RAT_BUILD_TUNNEL), Hotkey('T', "tunnel", WID_RAT_BUILD_TUNNEL),
Hotkey('R', "remove", WID_RAT_REMOVE), Hotkey('R', "remove", WID_RAT_REMOVE),
Hotkey('C', "convert", WID_RAT_CONVERT_RAIL), Hotkey('C', "convert", WID_RAT_CONVERT_RAIL),
Hotkey(WKC_CTRL | 'C', "convert_track", WID_RAT_CONVERT_RAIL_TRACK),
HOTKEY_LIST_END HOTKEY_LIST_END
}; };
HotkeyList BuildRailToolbarWindow::hotkeys("railtoolbar", railtoolbar_hotkeys, RailToolbarGlobalHotkeys); HotkeyList BuildRailToolbarWindow::hotkeys("railtoolbar", railtoolbar_hotkeys, RailToolbarGlobalHotkeys);

View File

@@ -29,6 +29,7 @@ enum RailToolbarWidgets {
WID_RAT_BUILD_TUNNEL, ///< Build a tunnel. WID_RAT_BUILD_TUNNEL, ///< Build a tunnel.
WID_RAT_REMOVE, ///< Bulldozer to remove rail. WID_RAT_REMOVE, ///< Bulldozer to remove rail.
WID_RAT_CONVERT_RAIL, ///< Convert other rail to this type. WID_RAT_CONVERT_RAIL, ///< Convert other rail to this type.
WID_RAT_CONVERT_RAIL_TRACK, ///< Convert other rail to this type (track).
}; };
/** Widgets of the #BuildRailStationWindow class. */ /** Widgets of the #BuildRailStationWindow class. */