Add setting to show order number in vehicle view window

This commit is contained in:
Jonathan G Rennison
2023-07-17 18:42:46 +01:00
parent 3ae2ae8184
commit 11bf8e22d7
5 changed files with 37 additions and 7 deletions

View File

@@ -325,6 +325,9 @@ STR_CONFIG_SETTING_SHOW_GROUP_HIERARCHY_NAME_HELPTEXT :When enabled, g
STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME :Show group hierarchy in vehicle names: {STRING2} STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME :Show group hierarchy in vehicle names: {STRING2}
STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT :When enabled, and show group hierarchy in name is enabled, vehicle names which include a group name use the full group name with hierarchy STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT :When enabled, and show group hierarchy in name is enabled, vehicle names which include a group name use the full group name with hierarchy
STR_CONFIG_SETTING_SHOW_ORDER_NUMBER_IN_VEHICLE_VIEW :Show order number in vehicle view window: {STRING2}
STR_CONFIG_SETTING_SHOW_ORDER_NUMBER_IN_VEHICLE_VIEW_HELPTEXT :When enabled, the current vehicle order is shown in the vehicle view window start/stop bar
STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES :Enable signals on bridges/tunnels advanced modes: {STRING2} STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES :Enable signals on bridges/tunnels advanced modes: {STRING2}
STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT :Enables use of advanced modes of signal simulation on bridges and tunnels. When disabled, bridges/tunnels which are not already in an advanced mode cannot be changed to an advanced mode, however other players may choose to enable this setting and use an advanced mode. STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT :Enables use of advanced modes of signal simulation on bridges and tunnels. When disabled, bridges/tunnels which are not already in an advanced mode cannot be changed to an advanced mode, however other players may choose to enable this setting and use an advanced mode.
@@ -1489,6 +1492,8 @@ STR_VEHICLE_VIEW_SEND_TO_DEPOT_MENU :{BLACK}Cancel s
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP_EXTRA :{STRING}{BLACK}{}Shift+Click to toggle showing route overlay even when window is not focused STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP_EXTRA :{STRING}{BLACK}{}Shift+Click to toggle showing route overlay even when window is not focused
STR_VEHICLE_VIEW_ORDER_NUMBER :{COMMA}: {STRING}
STR_VEHICLE_STATUS_LOADING_UNLOADING_ADVANCE :{STRING}, {VELOCITY} STR_VEHICLE_STATUS_LOADING_UNLOADING_ADVANCE :{STRING}, {VELOCITY}
STR_VEHICLE_STATUS_BROKEN_DOWN_VEL :{RED}Broken down - {STRING2}, {LTBLUE} {VELOCITY} STR_VEHICLE_STATUS_BROKEN_DOWN_VEL :{RED}Broken down - {STRING2}, {LTBLUE} {VELOCITY}
STR_VEHICLE_STATUS_BROKEN_DOWN_VEL_SHORT :{RED}Broken down - {STRING2} STR_VEHICLE_STATUS_BROKEN_DOWN_VEL_SHORT :{RED}Broken down - {STRING2}

View File

@@ -2079,6 +2079,7 @@ static SettingsContainer &GetSettingsTree()
vehicle_windows->Add(new SettingEntry("gui.show_group_hierarchy_name")); vehicle_windows->Add(new SettingEntry("gui.show_group_hierarchy_name"));
vehicle_windows->Add(new ConditionallyHiddenSettingEntry("gui.show_vehicle_group_hierarchy_name", []() -> bool { return !_settings_client.gui.show_group_hierarchy_name; })); vehicle_windows->Add(new ConditionallyHiddenSettingEntry("gui.show_vehicle_group_hierarchy_name", []() -> bool { return !_settings_client.gui.show_group_hierarchy_name; }));
vehicle_windows->Add(new SettingEntry("gui.enable_single_veh_shared_order_gui")); vehicle_windows->Add(new SettingEntry("gui.enable_single_veh_shared_order_gui"));
vehicle_windows->Add(new SettingEntry("gui.show_order_number_vehicle_view"));
} }
SettingsPage *departureboards = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_DEPARTUREBOARDS)); SettingsPage *departureboards = interface->Add(new SettingsPage(STR_CONFIG_SETTING_INTERFACE_DEPARTUREBOARDS));

View File

@@ -277,6 +277,7 @@ struct GUISettings : public TimeSettings {
bool show_order_management_button; ///< Show order management button in vehicle order window bool show_order_management_button; ///< Show order management button in vehicle order window
bool show_group_hierarchy_name; ///< Show the full hierarchy in group names bool show_group_hierarchy_name; ///< Show the full hierarchy in group names
bool show_vehicle_group_hierarchy_name;///< Show the full group hierarchy in vehicle names bool show_vehicle_group_hierarchy_name;///< Show the full group hierarchy in vehicle names
bool show_order_number_vehicle_view; ///< Show order number in vehicle view window
uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity. uint16 console_backlog_timeout; ///< the minimum amount of time items should be in the console backlog before they will be removed in ~3 seconds granularity.
uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed. uint16 console_backlog_length; ///< the minimum amount of items in the console backlog before items will be removed.

View File

@@ -5919,6 +5919,14 @@ strhelp = STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_HIERARCHY_NAME_HELPTEXT
post_cb = [](auto) { MarkWholeScreenDirty(); } post_cb = [](auto) { MarkWholeScreenDirty(); }
cat = SC_ADVANCED cat = SC_ADVANCED
[SDTC_BOOL]
var = gui.show_order_number_vehicle_view
flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC
def = false
str = STR_CONFIG_SETTING_SHOW_ORDER_NUMBER_IN_VEHICLE_VIEW
strhelp = STR_CONFIG_SETTING_SHOW_ORDER_NUMBER_IN_VEHICLE_VIEW_HELPTEXT
post_cb = [](auto) { SetWindowClassesDirty(WC_VEHICLE_VIEW); }
; For the dedicated build we'll enable dates in logs by default. ; For the dedicated build we'll enable dates in logs by default.
[SDTC_BOOL] [SDTC_BOOL]
ifdef = DEDICATED ifdef = DEDICATED

View File

@@ -3774,6 +3774,7 @@ public:
if (widget != WID_VV_START_STOP) return; if (widget != WID_VV_START_STOP) return;
const Vehicle *v = Vehicle::Get(this->window_number); const Vehicle *v = Vehicle::Get(this->window_number);
bool show_order_number = false;
StringID str; StringID str;
TextColour text_colour = TC_FROMSTRING; TextColour text_colour = TC_FROMSTRING;
if (v->vehstatus & VS_CRASHED) { if (v->vehstatus & VS_CRASHED) {
@@ -3845,15 +3846,10 @@ public:
} else if (v->type == VEH_AIRCRAFT && HasBit(Aircraft::From(v)->flags, VAF_DEST_TOO_FAR) && !v->current_order.IsType(OT_LOADING)) { } else if (v->type == VEH_AIRCRAFT && HasBit(Aircraft::From(v)->flags, VAF_DEST_TOO_FAR) && !v->current_order.IsType(OT_LOADING)) {
str = STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR; str = STR_VEHICLE_STATUS_AIRCRAFT_TOO_FAR;
} else { // vehicle is in a "normal" state, show current order } else { // vehicle is in a "normal" state, show current order
if (mouse_over_start_stop) {
if (v->vehstatus & VS_STOPPED || (v->breakdown_ctr == 1 || (v->type == VEH_TRAIN && Train::From(v)->flags & VRF_IS_BROKEN))) {
text_colour = TC_RED | TC_FORCED;
} else if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_TRAIN_STUCK) && !v->current_order.IsType(OT_LOADING)) {
text_colour = TC_ORANGE | TC_FORCED;
}
}
switch (v->current_order.GetType()) { switch (v->current_order.GetType()) {
case OT_GOTO_STATION: { case OT_GOTO_STATION: {
show_order_number = true;
text_colour = TC_LIGHT_BLUE;
SetDParam(0, v->current_order.GetDestination()); SetDParam(0, v->current_order.GetDestination());
SetDParam(1, PackVelocity(v->GetDisplaySpeed(), v->type)); SetDParam(1, PackVelocity(v->GetDisplaySpeed(), v->type));
str = HasBit(v->vehicle_flags, VF_PATHFINDER_LOST) ? STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL : STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL; str = HasBit(v->vehicle_flags, VF_PATHFINDER_LOST) ? STR_VEHICLE_STATUS_CANNOT_REACH_STATION_VEL : STR_VEHICLE_STATUS_HEADING_FOR_STATION_VEL;
@@ -3861,6 +3857,8 @@ public:
} }
case OT_GOTO_DEPOT: { case OT_GOTO_DEPOT: {
show_order_number = true;
text_colour = TC_ORANGE;
SetDParam(0, v->type); SetDParam(0, v->type);
SetDParam(1, v->current_order.GetDestination()); SetDParam(1, v->current_order.GetDestination());
SetDParam(2, PackVelocity(v->GetDisplaySpeed(), v->type)); SetDParam(2, PackVelocity(v->GetDisplaySpeed(), v->type));
@@ -3893,6 +3891,8 @@ public:
break; break;
case OT_GOTO_WAYPOINT: { case OT_GOTO_WAYPOINT: {
show_order_number = true;
text_colour = TC_LIGHT_BLUE;
assert(v->type == VEH_TRAIN || v->type == VEH_ROAD || v->type == VEH_SHIP); assert(v->type == VEH_TRAIN || v->type == VEH_ROAD || v->type == VEH_SHIP);
SetDParam(0, v->current_order.GetDestination()); SetDParam(0, v->current_order.GetDestination());
str = HasBit(v->vehicle_flags, VF_PATHFINDER_LOST) ? STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL : STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL; str = HasBit(v->vehicle_flags, VF_PATHFINDER_LOST) ? STR_VEHICLE_STATUS_CANNOT_REACH_WAYPOINT_VEL : STR_VEHICLE_STATUS_HEADING_FOR_WAYPOINT_VEL;
@@ -3920,6 +3920,21 @@ public:
} }
break; break;
} }
if (mouse_over_start_stop) {
if (v->vehstatus & VS_STOPPED || (v->breakdown_ctr == 1 || (v->type == VEH_TRAIN && Train::From(v)->flags & VRF_IS_BROKEN))) {
text_colour = TC_RED | TC_FORCED;
} else if (v->type == VEH_TRAIN && HasBit(Train::From(v)->flags, VRF_TRAIN_STUCK) && !v->current_order.IsType(OT_LOADING)) {
text_colour = TC_ORANGE | TC_FORCED;
}
}
}
if (_settings_client.gui.show_order_number_vehicle_view && show_order_number && v->cur_implicit_order_index < v->GetNumOrders()) {
_temp_special_strings[0] = GetString(str);
SetDParam(0, v->cur_implicit_order_index + 1);
SetDParam(1, SPECSTR_TEMP_START);
str = STR_VEHICLE_VIEW_ORDER_NUMBER;
} }
/* Draw the flag plus orders. */ /* Draw the flag plus orders. */