Add button to toggle train purchase window dual pane mode
This commit is contained in:
@@ -61,6 +61,9 @@ static constexpr NWidgetPart _nested_build_vehicle_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_CAPTION, COLOUR_GREY, WID_BV_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BV_TOGGLE_DUAL_PANE_SEL),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_BV_TOGGLE_DUAL_PANE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_BUY_VEHICLE_TRAIN_TOGGLE_DUAL_PANE_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(WWT_SHADEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
@@ -101,6 +104,7 @@ static constexpr NWidgetPart _nested_build_vehicle_widgets_train_advanced[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_CAPTION, COLOUR_GREY, WID_BV_CAPTION), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), SetTextStyle(TC_WHITE),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_BV_TOGGLE_DUAL_PANE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_BUY_VEHICLE_TRAIN_TOGGLE_DUAL_PANE_TOOLTIP),
|
||||
NWidget(WWT_SHADEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
@@ -1393,6 +1397,7 @@ enum BuildVehicleHotkeys {
|
||||
|
||||
struct BuildVehicleWindowBase : Window {
|
||||
VehicleType vehicle_type; ///< Type of vehicles shown in the window.
|
||||
TileIndex tile; ///< Original tile.
|
||||
bool virtual_train_mode; ///< Are we building a virtual train?
|
||||
Train **virtual_train_out; ///< Virtual train ptr
|
||||
bool listview_mode; ///< If set, only display the available vehicles and do not show a 'build' button.
|
||||
@@ -1400,6 +1405,7 @@ struct BuildVehicleWindowBase : Window {
|
||||
BuildVehicleWindowBase(WindowDesc *desc, TileIndex tile, VehicleType type, Train **virtual_train_out) : Window(desc)
|
||||
{
|
||||
this->vehicle_type = type;
|
||||
this->tile = tile;
|
||||
this->window_number = tile == INVALID_TILE ? (int)type : tile;
|
||||
this->virtual_train_out = virtual_train_out;
|
||||
this->virtual_train_mode = (virtual_train_out != nullptr);
|
||||
@@ -1505,6 +1511,18 @@ struct BuildVehicleWindowBase : Window {
|
||||
te = {};
|
||||
te.FillDefaultCapacities(e);
|
||||
}
|
||||
|
||||
void ChangeDualPaneMode(bool new_value)
|
||||
{
|
||||
_settings_client.gui.dual_pane_train_purchase_window = new_value;
|
||||
SetWindowDirty(WC_GAME_OPTIONS, WN_GAME_OPTIONS_GAME_SETTINGS);
|
||||
|
||||
if (this->virtual_train_out != nullptr) {
|
||||
ShowTemplateTrainBuildVehicleWindow(this->virtual_train_out);
|
||||
} else {
|
||||
ShowBuildVehicleWindow(this->tile, this->vehicle_type);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1625,6 +1643,8 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
||||
|
||||
this->details_height = ((this->vehicle_type == VEH_TRAIN) ? 10 : 9);
|
||||
|
||||
this->GetWidget<NWidgetStacked>(WID_BV_TOGGLE_DUAL_PANE_SEL)->SetDisplayedPlane((this->vehicle_type == VEH_TRAIN) ? 0 : SZSP_NONE);
|
||||
|
||||
this->FinishInitNested(this->window_number);
|
||||
|
||||
this->querystrings[WID_BV_FILTER] = &this->vehicle_editbox;
|
||||
@@ -2054,6 +2074,11 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_BV_TOGGLE_DUAL_PANE: {
|
||||
this->ChangeDualPaneMode(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2788,6 +2813,10 @@ struct BuildVehicleWindowTrainAdvanced final : BuildVehicleWindowBase {
|
||||
}
|
||||
|
||||
switch (widget) {
|
||||
case WID_BV_TOGGLE_DUAL_PANE: {
|
||||
this->ChangeDualPaneMode(false);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Locomotives */
|
||||
|
||||
|
@@ -1574,6 +1574,7 @@ STR_BUY_VEHICLE_TRAIN_RENAME_LOCOMOTIVE_BUTTON :{BLACK}Rename L
|
||||
STR_BUY_VEHICLE_TRAIN_RENAME_WAGON_BUTTON :{BLACK}Rename Wagon
|
||||
STR_BUY_VEHICLE_TRAIN_RENAME_LOCOMOTIVE_TOOLTIP :{BLACK}Rename locomotive or power car
|
||||
STR_BUY_VEHICLE_TRAIN_RENAME_WAGON_TOOLTIP :{BLACK}Rename wagon
|
||||
STR_BUY_VEHICLE_TRAIN_TOGGLE_DUAL_PANE_TOOLTIP :{BLACK}Toggle separate locomotives and wagons
|
||||
|
||||
STR_QUERY_RENAME_TRAIN_TYPE_LOCOMOTIVE_CAPTION :{WHITE}Rename locomotive type
|
||||
STR_QUERY_RENAME_TRAIN_TYPE_WAGON_CAPTION :{WHITE}Rename wagon type
|
||||
|
@@ -105,8 +105,6 @@ static WindowDesc _template_create_window_desc(__FILE__, __LINE__,
|
||||
std::begin(_widgets), std::end(_widgets)
|
||||
);
|
||||
|
||||
void ShowTemplateTrainBuildVehicleWindow(Train **virtual_train);
|
||||
|
||||
static void TrainDepotMoveVehicle(const Vehicle *wagon, VehicleID sel, const Vehicle *head)
|
||||
{
|
||||
const Vehicle *v = Vehicle::Get(sel);
|
||||
|
@@ -57,6 +57,7 @@ void DrawShipImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineI
|
||||
void DrawAircraftImage(const Vehicle *v, const Rect &r, VehicleID selection, EngineImageType image_type);
|
||||
|
||||
void ShowBuildVehicleWindow(TileIndex tile, VehicleType type);
|
||||
void ShowTemplateTrainBuildVehicleWindow(Train **virtual_train);
|
||||
|
||||
uint ShowRefitOptionsList(int left, int right, int y, EngineID engine);
|
||||
StringID GetCargoSubtypeText(const Vehicle *v);
|
||||
|
@@ -25,6 +25,8 @@ enum BuildVehicleWidgets : WidgetID {
|
||||
WID_BV_SHOW_HIDE, ///< Button to hide or show the selected engine.
|
||||
WID_BV_BUILD_SEL, ///< Build button.
|
||||
WID_BV_RENAME, ///< Rename button.
|
||||
WID_BV_TOGGLE_DUAL_PANE, ///< Toggle dual pane windows.
|
||||
WID_BV_TOGGLE_DUAL_PANE_SEL, ///< Selection for WID_BV_TOGGLE_DUAL_PANE.
|
||||
|
||||
WID_BV_CAPTION_LOCO, ///< Caption of locomotive half of the window.
|
||||
WID_BV_SORT_ASCENDING_DESCENDING_LOCO, ///< Sort direction.
|
||||
|
Reference in New Issue
Block a user