1
0
Fork 0

Fix #8043, c02ef3e4: Incorrect handling of global road/tram hotkeys

pull/8053/head
glx 2020-03-23 18:28:55 +01:00 committed by Niels Martin Hansen
parent 2cc9afe057
commit 0b5e0522b6
1 changed files with 19 additions and 7 deletions

View File

@ -717,26 +717,38 @@ struct BuildRoadToolbarWindow : Window {
* @param last_build Last build road type * @param last_build Last build road type
* @return ES_HANDLED if hotkey was accepted. * @return ES_HANDLED if hotkey was accepted.
*/ */
static EventState RoadTramToolbarGlobalHotkeys(int hotkey, RoadType last_build) static EventState RoadTramToolbarGlobalHotkeys(int hotkey, RoadType last_build, RoadTramType rtt)
{ {
Window *w = (_game_mode == GM_NORMAL) ? ShowBuildRoadToolbar(last_build) : ShowBuildRoadScenToolbar(last_build); Window* w = nullptr;
switch (_game_mode) {
case GM_NORMAL:
if (!CanBuildVehicleInfrastructure(VEH_ROAD, rtt)) return ES_NOT_HANDLED;
w = ShowBuildRoadToolbar(last_build);
break;
case GM_EDITOR:
if ((GetRoadTypes(true) & ((rtt == RTT_ROAD) ? ~_roadtypes_type : _roadtypes_type)) == ROADTYPES_NONE) return ES_NOT_HANDLED;
w = ShowBuildRoadScenToolbar(last_build);
break;
default:
break;
}
if (w == nullptr) return ES_NOT_HANDLED; if (w == nullptr) return ES_NOT_HANDLED;
return w->OnHotkey(hotkey); return w->OnHotkey(hotkey);
} }
static EventState RoadToolbarGlobalHotkeys(int hotkey) static EventState RoadToolbarGlobalHotkeys(int hotkey)
{ {
if (_game_mode == GM_NORMAL && !CanBuildVehicleInfrastructure(VEH_ROAD, RTT_ROAD)) return ES_NOT_HANDLED;
extern RoadType _last_built_roadtype; extern RoadType _last_built_roadtype;
return RoadTramToolbarGlobalHotkeys(hotkey, _last_built_roadtype); return RoadTramToolbarGlobalHotkeys(hotkey, _last_built_roadtype, RTT_ROAD);
} }
static EventState TramToolbarGlobalHotkeys(int hotkey) static EventState TramToolbarGlobalHotkeys(int hotkey)
{ {
if (_game_mode != GM_NORMAL || !CanBuildVehicleInfrastructure(VEH_ROAD, RTT_TRAM)) return ES_NOT_HANDLED;
extern RoadType _last_built_tramtype; extern RoadType _last_built_tramtype;
return RoadTramToolbarGlobalHotkeys(hotkey, _last_built_tramtype); return RoadTramToolbarGlobalHotkeys(hotkey, _last_built_tramtype, RTT_TRAM);
} }
static Hotkey roadtoolbar_hotkeys[] = { static Hotkey roadtoolbar_hotkeys[] = {