Change vehicle route overlay settings
Add a mode setting: off, all locations, station stops only Change show vehicle route setting to on/off Move settings to their own section in the GUI Add an unset hotkey to switch the mode setting
This commit is contained in:
@@ -1753,8 +1753,6 @@ STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :Nic
|
|||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Nastvit 1X zoom
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Nastvit 1X zoom
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Otevřít další pohled
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Otevřít další pohled
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Zobrazit trasu vozidla: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Zobrazit trasu vozidla: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO :Vypnuto
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_SIMPLE :Jednoduchá
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Styl vykreslení trasy vozidla: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Styl vykreslení trasy vozidla: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :přerušovaná čára široká {COMMA} pixel{P "" y ů}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :přerušovaná čára široká {COMMA} pixel{P "" y ů}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :plné čáry
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :plné čáry
|
||||||
|
@@ -1785,7 +1785,15 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Disabled
|
|||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Double click
|
STR_CONFIG_SETTING_OSK_ACTIVATION_DOUBLE_CLICK :Double click
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Single click (when focussed)
|
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK_FOCUS :Single click (when focussed)
|
||||||
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (immediately)
|
STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (immediately)
|
||||||
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS :Show the vehicle's route steps: {STRING2}
|
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE :Show route overlay of focused vehicle: {STRING2}
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_HELPTEXT :When enabled, and a vehicle window is focused, show markers at and/or lines between the locations of the vehicle's orders.{}The station stopped at only mode only shows orders where the vehicle stops at a station (this excludes via orders, waypoints and depots).
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_OFF :Off
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_ALL_LOCATIONS :All order locations
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_STATIONS_ONLY :Stations stops only
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS :Show vehicle route overlay markers: {STRING2}
|
||||||
|
STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS_HELPTEXT :When enabled, and a vehicle window is focused, a marker with the order number and type is shown at the location of each order.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR :Mark other companies' vehicles in lists with their company colour: {STRING2}
|
STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR :Mark other companies' vehicles in lists with their company colour: {STRING2}
|
||||||
STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR_HELPTEXT :Vehicles in a vehicle list window which are owned by a different company than the owner of the vehicle list are marked with a coloured square in the vehicle's company colour.
|
STR_CONFIG_SETTING_SHOW_VEHICLE_LIST_COMPANY_COLOUR_HELPTEXT :Vehicles in a vehicle list window which are owned by a different company than the owner of the vehicle list are marked with a coloured square in the vehicle's company colour.
|
||||||
STR_CONFIG_SETTING_ENABLE_SINGLE_VEH_SHARED_ORDER_GUI :Enable single vehicles in shared order group window: {STRING2}
|
STR_CONFIG_SETTING_ENABLE_SINGLE_VEH_SHARED_ORDER_GUI :Enable single vehicles in shared order group window: {STRING2}
|
||||||
@@ -1809,9 +1817,8 @@ STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK :Function of dou
|
|||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :Do nothing
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :Do nothing
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Zoom in directly to 1X
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Zoom in directly to 1X
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Open an extra viewport
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Open an extra viewport
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Show the vehicle's route: {STRING2}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Show vehicle route overlay lines: {STRING2}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO :No
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_HELPTEXT :When enabled, and a vehicle window is focused, lines are drawn between the locations of each of the vehicle's orders. (Conditional order branches are shown using yellow lines).
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_SIMPLE :Simple
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Drawing style of vehicle's route: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Drawing style of vehicle's route: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :dashed lines of {COMMA} pixel{P "" s}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :dashed lines of {COMMA} pixel{P "" s}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :plain lines
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :plain lines
|
||||||
@@ -2443,6 +2450,7 @@ STR_CONFIG_SETTING_AI_NPC :{ORANGE}Compute
|
|||||||
STR_CONFIG_SETTING_NETWORK :{ORANGE}Network
|
STR_CONFIG_SETTING_NETWORK :{ORANGE}Network
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_OPTIONS :{ORANGE}Map mode
|
STR_CONFIG_SETTING_VIEWPORT_MAP_OPTIONS :{ORANGE}Map mode
|
||||||
STR_CONFIG_SETTING_VIEWPORT_SIGNALS :{ORANGE}Signals
|
STR_CONFIG_SETTING_VIEWPORT_SIGNALS :{ORANGE}Signals
|
||||||
|
STR_CONFIG_SETTING_VEHICLE_ROUTE_OVERLAY :{ORANGE}Vehicle route overlay
|
||||||
STR_CONFIG_SETTING_SHARING :{ORANGE}Infrastructure sharing
|
STR_CONFIG_SETTING_SHARING :{ORANGE}Infrastructure sharing
|
||||||
STR_CONFIG_SETTING_SCENARIO_EDITOR :{ORANGE}Scenario Editor
|
STR_CONFIG_SETTING_SCENARIO_EDITOR :{ORANGE}Scenario Editor
|
||||||
|
|
||||||
|
@@ -5773,8 +5773,6 @@ STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :Non facer nada
|
|||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Facer zoom directamente a 1X
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Facer zoom directamente a 1X
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Abrir unha vista adicional
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Abrir unha vista adicional
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Amosar a ruta do vehículo: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Amosar a ruta do vehículo: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO :Non
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_SIMPLE :Simple
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Estilo de debuxo da ruta do vehículo: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Estilo de debuxo da ruta do vehículo: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :liñas discontinuas de {COMMA} pixel{P "" es}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :liñas discontinuas de {COMMA} pixel{P "" es}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :liñas planas
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :liñas planas
|
||||||
|
@@ -1797,8 +1797,6 @@ STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :Keine
|
|||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Zoome direkt auf Faktor 1x
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :Zoome direkt auf Faktor 1x
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Öffne eine neue Zusatzansicht
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :Öffne eine neue Zusatzansicht
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Zeige die Fahrzeugroute: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :Zeige die Fahrzeugroute: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO :Aus
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_SIMPLE :Einfach
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Zeichenstil der Fahrzeugroute: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :Zeichenstil der Fahrzeugroute: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :gestrichelte Linie von {COMMA} Pixel{P "" n} Länge
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :gestrichelte Linie von {COMMA} Pixel{P "" n} Länge
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :durchgezogene Linie
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :durchgezogene Linie
|
||||||
|
@@ -1811,8 +1811,6 @@ STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_DO_NOTHING :아무것도
|
|||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :확대/축소 배율 원래대로
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_ZOOM_MAIN :확대/축소 배율 원래대로
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :새 외부 화면 열기
|
STR_CONFIG_SETTING_VIEWPORT_MAP_ACTION_DBLCLICK_NEW_EXTRA :새 외부 화면 열기
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :차량 경로 보이기: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE :차량 경로 보이기: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO :표시 안함
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_SIMPLE :단순
|
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :차량 경로 표시 방식: {STRING}
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH :차량 경로 표시 방식: {STRING}
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :{COMMA} 픽셀 간격의 점선
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_VALUE :{COMMA} 픽셀 간격의 점선
|
||||||
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :실선
|
STR_CONFIG_SETTING_VIEWPORT_MAP_DRAW_ROUTE_DASH_DISABLED :실선
|
||||||
|
@@ -233,6 +233,7 @@ enum {
|
|||||||
GHK_CLOSE_ERROR,
|
GHK_CLOSE_ERROR,
|
||||||
GHK_CHANGE_MAP_MODE_PREV,
|
GHK_CHANGE_MAP_MODE_PREV,
|
||||||
GHK_CHANGE_MAP_MODE_NEXT,
|
GHK_CHANGE_MAP_MODE_NEXT,
|
||||||
|
GHK_SWITCH_VIEWPORT_ROUTE_OVERLAY_MODE,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MainWindow : Window
|
struct MainWindow : Window
|
||||||
@@ -458,6 +459,13 @@ struct MainWindow : Window
|
|||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case GHK_SWITCH_VIEWPORT_ROUTE_OVERLAY_MODE:
|
||||||
|
if (_settings_client.gui.show_vehicle_route_mode != 0) {
|
||||||
|
_settings_client.gui.show_vehicle_route_mode ^= 3;
|
||||||
|
CheckMarkDirtyFocusedRoutePaths();
|
||||||
|
SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_GAME_SETTINGS);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default: return ES_NOT_HANDLED;
|
default: return ES_NOT_HANDLED;
|
||||||
}
|
}
|
||||||
@@ -576,6 +584,7 @@ static Hotkey global_hotkeys[] = {
|
|||||||
Hotkey(WKC_SPACE, "close_error", GHK_CLOSE_ERROR),
|
Hotkey(WKC_SPACE, "close_error", GHK_CLOSE_ERROR),
|
||||||
Hotkey(WKC_PAGEUP, "previous_map_mode", GHK_CHANGE_MAP_MODE_PREV),
|
Hotkey(WKC_PAGEUP, "previous_map_mode", GHK_CHANGE_MAP_MODE_PREV),
|
||||||
Hotkey(WKC_PAGEDOWN, "next_map_mode", GHK_CHANGE_MAP_MODE_NEXT),
|
Hotkey(WKC_PAGEDOWN, "next_map_mode", GHK_CHANGE_MAP_MODE_NEXT),
|
||||||
|
Hotkey((uint16)0, "switch_viewport_route_overlay_mode", GHK_SWITCH_VIEWPORT_ROUTE_OVERLAY_MODE),
|
||||||
HOTKEY_LIST_END
|
HOTKEY_LIST_END
|
||||||
};
|
};
|
||||||
HotkeyList MainWindow::hotkeys("global", global_hotkeys);
|
HotkeyList MainWindow::hotkeys("global", global_hotkeys);
|
||||||
|
@@ -1786,9 +1786,6 @@ static SettingsContainer &GetSettingsTree()
|
|||||||
graphics->Add(new SettingEntry("gui.smallmap_land_colour"));
|
graphics->Add(new SettingEntry("gui.smallmap_land_colour"));
|
||||||
graphics->Add(new SettingEntry("gui.linkgraph_colours"));
|
graphics->Add(new SettingEntry("gui.linkgraph_colours"));
|
||||||
graphics->Add(new SettingEntry("gui.graph_line_thickness"));
|
graphics->Add(new SettingEntry("gui.graph_line_thickness"));
|
||||||
graphics->Add(new SettingEntry("gui.show_vehicle_route_steps"));
|
|
||||||
graphics->Add(new SettingEntry("gui.show_vehicle_route"));
|
|
||||||
graphics->Add(new SettingEntry("gui.dash_level_of_route_lines"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingsPage *sound = main->Add(new SettingsPage(STR_CONFIG_SETTING_SOUND));
|
SettingsPage *sound = main->Add(new SettingsPage(STR_CONFIG_SETTING_SOUND));
|
||||||
@@ -1834,6 +1831,13 @@ static SettingsContainer &GetSettingsTree()
|
|||||||
viewport_signals->Add(new SettingEntry("gui.show_restricted_signal_default"));
|
viewport_signals->Add(new SettingEntry("gui.show_restricted_signal_default"));
|
||||||
viewport_signals->Add(new SettingEntry("gui.show_all_signal_default"));
|
viewport_signals->Add(new SettingEntry("gui.show_all_signal_default"));
|
||||||
}
|
}
|
||||||
|
SettingsPage *viewport_route_overlay = viewports->Add(new SettingsPage(STR_CONFIG_SETTING_VEHICLE_ROUTE_OVERLAY));
|
||||||
|
{
|
||||||
|
viewport_route_overlay->Add(new SettingEntry("gui.show_vehicle_route_mode"));
|
||||||
|
viewport_route_overlay->Add(new ConditionallyHiddenSettingEntry("gui.show_vehicle_route_steps", []() -> bool { return _settings_client.gui.show_vehicle_route_mode == 0; }));
|
||||||
|
viewport_route_overlay->Add(new ConditionallyHiddenSettingEntry("gui.show_vehicle_route", []() -> bool { return _settings_client.gui.show_vehicle_route_mode == 0; }));
|
||||||
|
viewport_route_overlay->Add(new ConditionallyHiddenSettingEntry("gui.dash_level_of_route_lines", []() -> bool { return _settings_client.gui.show_vehicle_route_mode == 0 || !_settings_client.gui.show_vehicle_route; }));
|
||||||
|
}
|
||||||
|
|
||||||
viewports->Add(new SettingEntry("gui.auto_scrolling"));
|
viewports->Add(new SettingEntry("gui.auto_scrolling"));
|
||||||
viewports->Add(new SettingEntry("gui.scroll_mode"));
|
viewports->Add(new SettingEntry("gui.scroll_mode"));
|
||||||
|
@@ -170,8 +170,6 @@ struct GUISettings : public TimeSettings {
|
|||||||
uint32 show_scrolling_viewport_on_map; ///< when a no map viewport is scrolled, its location is marked on the other map viewports
|
uint32 show_scrolling_viewport_on_map; ///< when a no map viewport is scrolled, its location is marked on the other map viewports
|
||||||
bool show_bridges_on_map; ///< bridges are rendered on a viewport in map mode
|
bool show_bridges_on_map; ///< bridges are rendered on a viewport in map mode
|
||||||
bool show_tunnels_on_map; ///< tunnels are rendered on a viewport in map mode
|
bool show_tunnels_on_map; ///< tunnels are rendered on a viewport in map mode
|
||||||
uint32 show_vehicle_route; ///< show a vehicle's route when its orders/timetable window is focused
|
|
||||||
uint32 dash_level_of_route_lines; ///< the dash level passed to GfxDrawLine() (plain if 0)
|
|
||||||
bool use_owner_colour_for_tunnelbridge;///< bridges and tunnels are rendered with their owner's colour
|
bool use_owner_colour_for_tunnelbridge;///< bridges and tunnels are rendered with their owner's colour
|
||||||
bool timetable_arrival_departure; ///< show arrivals and departures in vehicle timetables
|
bool timetable_arrival_departure; ///< show arrivals and departures in vehicle timetables
|
||||||
uint8 max_departures; ///< maximum number of departures to show per station
|
uint8 max_departures; ///< maximum number of departures to show per station
|
||||||
@@ -232,7 +230,10 @@ struct GUISettings : public TimeSettings {
|
|||||||
bool auto_remove_signals; ///< automatically remove signals when in the way during rail construction
|
bool auto_remove_signals; ///< automatically remove signals when in the way during rail construction
|
||||||
uint16 refresh_rate; ///< How often we refresh the screen (time between draw-ticks).
|
uint16 refresh_rate; ///< How often we refresh the screen (time between draw-ticks).
|
||||||
uint16 fast_forward_speed_limit; ///< Game speed to use when fast-forward is enabled.
|
uint16 fast_forward_speed_limit; ///< Game speed to use when fast-forward is enabled.
|
||||||
bool show_vehicle_route_steps; ///< when a window related to a specific vehicle is focused, show route steps
|
uint8 show_vehicle_route_mode; ///< How to show a vehicle's route when one of its windows is focused
|
||||||
|
bool show_vehicle_route; ///< Show route lines when vehicles route overlay is being shown
|
||||||
|
bool show_vehicle_route_steps; ///< Show route step markers when vehicles route overlay is being shown
|
||||||
|
uint8 dash_level_of_route_lines; ///< the dash level passed to GfxDrawLine() (plain if 0)
|
||||||
bool show_vehicle_list_company_colour; ///< show the company colour of vehicles which have an owner different to the owner of the vehicle list
|
bool show_vehicle_list_company_colour; ///< show the company colour of vehicles which have an owner different to the owner of the vehicle list
|
||||||
bool enable_single_veh_shared_order_gui; ///< enable showing a single vehicle in the shared order GUI window
|
bool enable_single_veh_shared_order_gui; ///< enable showing a single vehicle in the shared order GUI window
|
||||||
bool show_adv_load_mode_features; ///< enable advanced loading mode features in UI
|
bool show_adv_load_mode_features; ///< enable advanced loading mode features in UI
|
||||||
|
@@ -4664,20 +4664,37 @@ str = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_TUNNELS
|
|||||||
post_cb = ViewportMapShowTunnelModeChanged
|
post_cb = ViewportMapShowTunnelModeChanged
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.show_vehicle_route
|
var = gui.show_vehicle_route_mode
|
||||||
type = SLE_UINT32
|
type = SLE_UINT8
|
||||||
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN
|
||||||
def = 1
|
def = 1
|
||||||
min = 0
|
min = 0
|
||||||
max = 1
|
max = 2
|
||||||
interval = 1
|
interval = 1
|
||||||
|
str = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE
|
||||||
|
strhelp = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_HELPTEXT
|
||||||
|
strval = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_MODE_OFF
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }
|
||||||
|
|
||||||
|
[SDTC_BOOL]
|
||||||
|
var = gui.show_vehicle_route_steps
|
||||||
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
||||||
|
def = true
|
||||||
|
str = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS
|
||||||
|
strhelp = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS_HELPTEXT
|
||||||
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }
|
||||||
|
|
||||||
|
[SDTC_BOOL]
|
||||||
|
var = gui.show_vehicle_route
|
||||||
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
||||||
|
def = true
|
||||||
str = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE
|
str = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE
|
||||||
strval = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_NO
|
strhelp = STR_CONFIG_SETTING_VIEWPORT_MAP_SHOW_VEHICLE_ROUTE_HELPTEXT
|
||||||
post_cb = [](auto) { MarkWholeScreenDirty(); }
|
post_cb = [](auto) { InvalidateWindowClassesData(WC_GAME_OPTIONS); MarkWholeScreenDirty(); }
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.dash_level_of_route_lines
|
var = gui.dash_level_of_route_lines
|
||||||
type = SLE_UINT32
|
type = SLE_UINT8
|
||||||
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_0_IS_SPECIAL
|
||||||
def = 0
|
def = 0
|
||||||
min = 0
|
min = 0
|
||||||
@@ -5344,13 +5361,6 @@ strhelp = STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT
|
|||||||
strval = STR_JUST_COMMA
|
strval = STR_JUST_COMMA
|
||||||
post_cb = [](auto) { MarkWholeScreenDirty(); }
|
post_cb = [](auto) { MarkWholeScreenDirty(); }
|
||||||
|
|
||||||
[SDTC_BOOL]
|
|
||||||
var = gui.show_vehicle_route_steps
|
|
||||||
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
|
||||||
def = true
|
|
||||||
str = STR_CONFIG_SETTING_SHOW_VEHICLE_ROUTE_STEPS
|
|
||||||
post_cb = [](auto) { MarkWholeScreenDirty(); }
|
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.show_train_length_in_details
|
var = gui.show_train_length_in_details
|
||||||
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
|
||||||
|
119
src/viewport.cpp
119
src/viewport.cpp
@@ -2287,23 +2287,31 @@ static inline Vehicle *GetVehicleFromWindow(Window *w)
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool ViewportVehicleRouteShouldSkipOrder(const Order *order)
|
||||||
|
{
|
||||||
|
if (_settings_client.gui.show_vehicle_route_mode != 2) return false;
|
||||||
|
|
||||||
|
switch (order->GetType()) {
|
||||||
|
case OT_GOTO_STATION:
|
||||||
|
case OT_IMPLICIT:
|
||||||
|
return (order->GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION) != 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static inline TileIndex GetLastValidOrderLocation(const Vehicle *veh)
|
static inline TileIndex GetLastValidOrderLocation(const Vehicle *veh)
|
||||||
{
|
{
|
||||||
TileIndex tmp, result = INVALID_TILE;
|
VehicleOrderID order_id = veh->GetNumOrders();
|
||||||
for(const Order *order : veh->Orders()) {
|
while (order_id > 0) {
|
||||||
switch (order->GetType()) {
|
order_id--;
|
||||||
case OT_GOTO_STATION:
|
const Order *order = veh->GetOrder(order_id);
|
||||||
case OT_GOTO_WAYPOINT:
|
if (ViewportVehicleRouteShouldSkipOrder(order)) continue;
|
||||||
case OT_IMPLICIT:
|
TileIndex location = order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
||||||
case OT_GOTO_DEPOT:
|
if (location != INVALID_TILE) return location;
|
||||||
tmp = order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
|
||||||
if (tmp != INVALID_TILE) result = tmp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return result;
|
return INVALID_TILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline std::pair<const Order *, bool> GetFinalOrder(const Vehicle *veh, const Order *order)
|
static inline std::pair<const Order *, bool> GetFinalOrder(const Vehicle *veh, const Order *order)
|
||||||
@@ -2342,7 +2350,7 @@ static bool ViewportMapPrepareVehicleRoute(const Vehicle * const veh)
|
|||||||
TileIndex from_tile = GetLastValidOrderLocation(veh);
|
TileIndex from_tile = GetLastValidOrderLocation(veh);
|
||||||
if (from_tile == INVALID_TILE) return false;
|
if (from_tile == INVALID_TILE) return false;
|
||||||
|
|
||||||
for(const Order *order : veh->Orders()) {
|
for (const Order *order : veh->Orders()) {
|
||||||
auto guard = scope_guard([&]() {
|
auto guard = scope_guard([&]() {
|
||||||
if (order->IsType(OT_CONDITIONAL) && order->GetConditionVariable() == OCV_UNCONDITIONALLY) from_tile = INVALID_TILE;
|
if (order->IsType(OT_CONDITIONAL) && order->GetConditionVariable() == OCV_UNCONDITIONALLY) from_tile = INVALID_TILE;
|
||||||
});
|
});
|
||||||
@@ -2350,6 +2358,7 @@ static bool ViewportMapPrepareVehicleRoute(const Vehicle * const veh)
|
|||||||
bool conditional;
|
bool conditional;
|
||||||
std::tie(final_order, conditional) = GetFinalOrder(veh, order);
|
std::tie(final_order, conditional) = GetFinalOrder(veh, order);
|
||||||
if (final_order == nullptr) continue;
|
if (final_order == nullptr) continue;
|
||||||
|
if (ViewportVehicleRouteShouldSkipOrder(final_order)) continue;
|
||||||
const TileIndex to_tile = final_order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
const TileIndex to_tile = final_order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
||||||
if (to_tile == INVALID_TILE) continue;
|
if (to_tile == INVALID_TILE) continue;
|
||||||
|
|
||||||
@@ -2372,41 +2381,35 @@ static bool ViewportMapPrepareVehicleRoute(const Vehicle * const veh)
|
|||||||
/** Draw the route of a vehicle. */
|
/** Draw the route of a vehicle. */
|
||||||
static void ViewportMapDrawVehicleRoute(const Viewport *vp, ViewportDrawerDynamic *vdd)
|
static void ViewportMapDrawVehicleRoute(const Viewport *vp, ViewportDrawerDynamic *vdd)
|
||||||
{
|
{
|
||||||
switch (_settings_client.gui.show_vehicle_route) {
|
if (_vp_route_paths.empty()) return;
|
||||||
/* case 0: return; // No */
|
|
||||||
case 1: { // Simple
|
|
||||||
if (_vp_route_paths.empty()) return;
|
|
||||||
|
|
||||||
DrawPixelInfo dpi_for_text = vdd->MakeDPIForText();
|
DrawPixelInfo dpi_for_text = vdd->MakeDPIForText();
|
||||||
|
|
||||||
for (const auto &iter : _vp_route_paths) {
|
for (const auto &iter : _vp_route_paths) {
|
||||||
const int from_tile_x = TileX(iter.from_tile) * TILE_SIZE + TILE_SIZE / 2;
|
const int from_tile_x = TileX(iter.from_tile) * TILE_SIZE + TILE_SIZE / 2;
|
||||||
const int from_tile_y = TileY(iter.from_tile) * TILE_SIZE + TILE_SIZE / 2;
|
const int from_tile_y = TileY(iter.from_tile) * TILE_SIZE + TILE_SIZE / 2;
|
||||||
Point from_pt = RemapCoords(from_tile_x, from_tile_y, 0);
|
Point from_pt = RemapCoords(from_tile_x, from_tile_y, 0);
|
||||||
const int from_x = UnScaleByZoom(from_pt.x, vp->zoom);
|
const int from_x = UnScaleByZoom(from_pt.x, vp->zoom);
|
||||||
|
|
||||||
const int to_tile_x = TileX(iter.to_tile) * TILE_SIZE + TILE_SIZE / 2;
|
const int to_tile_x = TileX(iter.to_tile) * TILE_SIZE + TILE_SIZE / 2;
|
||||||
const int to_tile_y = TileY(iter.to_tile) * TILE_SIZE + TILE_SIZE / 2;
|
const int to_tile_y = TileY(iter.to_tile) * TILE_SIZE + TILE_SIZE / 2;
|
||||||
Point to_pt = RemapCoords(to_tile_x, to_tile_y, 0);
|
Point to_pt = RemapCoords(to_tile_x, to_tile_y, 0);
|
||||||
const int to_x = UnScaleByZoom(to_pt.x, vp->zoom);
|
const int to_x = UnScaleByZoom(to_pt.x, vp->zoom);
|
||||||
|
|
||||||
if (from_x < dpi_for_text.left - 1 && to_x < dpi_for_text.left - 1) continue;
|
if (from_x < dpi_for_text.left - 1 && to_x < dpi_for_text.left - 1) continue;
|
||||||
if (from_x > dpi_for_text.left + dpi_for_text.width + 1 && to_x > dpi_for_text.left + dpi_for_text.width + 1) continue;
|
if (from_x > dpi_for_text.left + dpi_for_text.width + 1 && to_x > dpi_for_text.left + dpi_for_text.width + 1) continue;
|
||||||
|
|
||||||
from_pt.y -= GetSlopePixelZ(from_tile_x, from_tile_y) * ZOOM_LVL_BASE;
|
from_pt.y -= GetSlopePixelZ(from_tile_x, from_tile_y) * ZOOM_LVL_BASE;
|
||||||
to_pt.y -= GetSlopePixelZ(to_tile_x, to_tile_y) * ZOOM_LVL_BASE;
|
to_pt.y -= GetSlopePixelZ(to_tile_x, to_tile_y) * ZOOM_LVL_BASE;
|
||||||
const int from_y = UnScaleByZoom(from_pt.y, vp->zoom);
|
const int from_y = UnScaleByZoom(from_pt.y, vp->zoom);
|
||||||
const int to_y = UnScaleByZoom(to_pt.y, vp->zoom);
|
const int to_y = UnScaleByZoom(to_pt.y, vp->zoom);
|
||||||
|
|
||||||
int line_width = 3;
|
int line_width = 3;
|
||||||
if (_settings_client.gui.dash_level_of_route_lines == 0) {
|
if (_settings_client.gui.dash_level_of_route_lines == 0) {
|
||||||
GfxDrawLine(&dpi_for_text, from_x, from_y, to_x, to_y, PC_BLACK, 3, _settings_client.gui.dash_level_of_route_lines);
|
GfxDrawLine(&dpi_for_text, from_x, from_y, to_x, to_y, PC_BLACK, 3, _settings_client.gui.dash_level_of_route_lines);
|
||||||
line_width = 1;
|
line_width = 1;
|
||||||
}
|
|
||||||
GfxDrawLine(&dpi_for_text, from_x, from_y, to_x, to_y, iter.order_match ? PC_WHITE : PC_YELLOW, line_width, _settings_client.gui.dash_level_of_route_lines);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
GfxDrawLine(&dpi_for_text, from_x, from_y, to_x, to_y, iter.order_match ? PC_WHITE : PC_YELLOW, line_width, _settings_client.gui.dash_level_of_route_lines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2507,9 +2510,10 @@ static bool ViewportPrepareVehicleRouteSteps(const Vehicle * const veh)
|
|||||||
if (_vp_route_steps.size() == 0) {
|
if (_vp_route_steps.size() == 0) {
|
||||||
/* Prepare data. */
|
/* Prepare data. */
|
||||||
int order_rank = 0;
|
int order_rank = 0;
|
||||||
for(const Order *order : veh->Orders()) {
|
for (const Order *order : veh->Orders()) {
|
||||||
const TileIndex tile = order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
|
||||||
order_rank++;
|
order_rank++;
|
||||||
|
if (ViewportVehicleRouteShouldSkipOrder(order)) continue;
|
||||||
|
const TileIndex tile = order->GetLocation(veh, veh->type == VEH_AIRCRAFT);
|
||||||
if (tile == INVALID_TILE) continue;
|
if (tile == INVALID_TILE) continue;
|
||||||
_vp_route_steps[tile].push_back(std::pair<int, OrderType>(order_rank, order->GetType()));
|
_vp_route_steps[tile].push_back(std::pair<int, OrderType>(order_rank, order->GetType()));
|
||||||
}
|
}
|
||||||
@@ -2520,6 +2524,7 @@ static bool ViewportPrepareVehicleRouteSteps(const Vehicle * const veh)
|
|||||||
|
|
||||||
void ViewportPrepareVehicleRoute()
|
void ViewportPrepareVehicleRoute()
|
||||||
{
|
{
|
||||||
|
if (_settings_client.gui.show_vehicle_route_mode == 0) return;
|
||||||
if (!_settings_client.gui.show_vehicle_route_steps && !_settings_client.gui.show_vehicle_route) return;
|
if (!_settings_client.gui.show_vehicle_route_steps && !_settings_client.gui.show_vehicle_route) return;
|
||||||
const Vehicle * const veh = GetVehicleFromWindow(_focused_window);
|
const Vehicle * const veh = GetVehicleFromWindow(_focused_window);
|
||||||
if (_settings_client.gui.show_vehicle_route_steps && veh && ViewportPrepareVehicleRouteSteps(veh)) {
|
if (_settings_client.gui.show_vehicle_route_steps && veh && ViewportPrepareVehicleRouteSteps(veh)) {
|
||||||
@@ -3780,7 +3785,7 @@ static void ViewportDoDrawPhase2(Viewport *vp, ViewportDrawerDynamic *vdd)
|
|||||||
vp->overlay->Draw(&dp);
|
vp->overlay->Draw(&dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_settings_client.gui.show_vehicle_route) ViewportMapDrawVehicleRoute(vp, vdd);
|
if (_settings_client.gui.show_vehicle_route_mode != 0 && _settings_client.gui.show_vehicle_route) ViewportMapDrawVehicleRoute(vp, vdd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is run in the main thread */
|
/* This is run in the main thread */
|
||||||
@@ -3798,7 +3803,7 @@ static void ViewportDoDrawPhase3(Viewport *vp)
|
|||||||
dp.top = UnScaleByZoom(_vdd->dpi.top, zoom);
|
dp.top = UnScaleByZoom(_vdd->dpi.top, zoom);
|
||||||
ViewportDrawStrings(_vdd.get(), zoom, &_vdd->string_sprites_to_draw);
|
ViewportDrawStrings(_vdd.get(), zoom, &_vdd->string_sprites_to_draw);
|
||||||
}
|
}
|
||||||
if (_settings_client.gui.show_vehicle_route_steps && !_vp_route_steps.empty()) {
|
if (_settings_client.gui.show_vehicle_route_mode != 0 && _settings_client.gui.show_vehicle_route_steps && !_vp_route_steps.empty()) {
|
||||||
dp.left = _vdd->offset_x + vp->left;
|
dp.left = _vdd->offset_x + vp->left;
|
||||||
dp.top = _vdd->offset_y + vp->top;
|
dp.top = _vdd->offset_y + vp->top;
|
||||||
ViewportDrawVehicleRouteSteps(vp);
|
ViewportDrawVehicleRouteSteps(vp);
|
||||||
@@ -4336,13 +4341,8 @@ static void MarkRoutePathsDirty(const std::vector<DrawnPathRouteTileLine> &lines
|
|||||||
|
|
||||||
void MarkAllRoutePathsDirty(const Vehicle *veh)
|
void MarkAllRoutePathsDirty(const Vehicle *veh)
|
||||||
{
|
{
|
||||||
switch (_settings_client.gui.show_vehicle_route) {
|
if (_settings_client.gui.show_vehicle_route) {
|
||||||
case 0: // No
|
ViewportMapPrepareVehicleRoute(veh);
|
||||||
return;
|
|
||||||
|
|
||||||
case 1: // Simple
|
|
||||||
ViewportMapPrepareVehicleRoute(veh);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
for (const auto &iter : _vp_route_paths) {
|
for (const auto &iter : _vp_route_paths) {
|
||||||
MarkTileLineDirty(iter.from_tile, iter.to_tile, VMDF_NOT_LANDSCAPE);
|
MarkTileLineDirty(iter.from_tile, iter.to_tile, VMDF_NOT_LANDSCAPE);
|
||||||
@@ -4354,12 +4354,21 @@ void MarkAllRoutePathsDirty(const Vehicle *veh)
|
|||||||
void CheckMarkDirtyFocusedRoutePaths(const Vehicle *veh)
|
void CheckMarkDirtyFocusedRoutePaths(const Vehicle *veh)
|
||||||
{
|
{
|
||||||
const Vehicle *focused_veh = GetVehicleFromWindow(_focused_window);
|
const Vehicle *focused_veh = GetVehicleFromWindow(_focused_window);
|
||||||
if (focused_veh && veh == focused_veh) {
|
if (focused_veh != nullptr && veh == focused_veh) {
|
||||||
MarkAllRoutePathsDirty(veh);
|
MarkAllRoutePathsDirty(veh);
|
||||||
MarkAllRouteStepsDirty(veh);
|
MarkAllRouteStepsDirty(veh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CheckMarkDirtyFocusedRoutePaths()
|
||||||
|
{
|
||||||
|
const Vehicle *focused_veh = GetVehicleFromWindow(_focused_window);
|
||||||
|
if (focused_veh != nullptr) {
|
||||||
|
MarkAllRoutePathsDirty(focused_veh);
|
||||||
|
MarkAllRouteStepsDirty(focused_veh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marks the selected tiles as dirty.
|
* Marks the selected tiles as dirty.
|
||||||
*
|
*
|
||||||
|
@@ -46,6 +46,7 @@ void MarkViewportLineDirty(Viewport * const vp, const Point from_pt, const Point
|
|||||||
void MarkTileLineDirty(const TileIndex from_tile, const TileIndex to_tile, ViewportMarkDirtyFlags flags);
|
void MarkTileLineDirty(const TileIndex from_tile, const TileIndex to_tile, ViewportMarkDirtyFlags flags);
|
||||||
void MarkAllRoutePathsDirty(const Vehicle *veh);
|
void MarkAllRoutePathsDirty(const Vehicle *veh);
|
||||||
void CheckMarkDirtyFocusedRoutePaths(const Vehicle *veh);
|
void CheckMarkDirtyFocusedRoutePaths(const Vehicle *veh);
|
||||||
|
void CheckMarkDirtyFocusedRoutePaths();
|
||||||
|
|
||||||
bool DoZoomInOutWindow(ZoomStateChange how, Window *w);
|
bool DoZoomInOutWindow(ZoomStateChange how, Window *w);
|
||||||
void ZoomInOrOutToCursorWindow(bool in, Window * w);
|
void ZoomInOrOutToCursorWindow(bool in, Window * w);
|
||||||
|
Reference in New Issue
Block a user