From 136551408c344a605fb1d493aca9da0aeddec358 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 6 Nov 2023 22:35:01 +0000 Subject: [PATCH 01/54] Change: Show empty string drop down entries as divider. (#11447) --- src/widgets/dropdown.cpp | 10 +++++++--- src/widgets/dropdown_type.h | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 3b8054233a..492b6edb62 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -48,10 +48,14 @@ uint DropDownListStringItem::Width() const return GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal(); } -void DropDownListStringItem::Draw(const Rect &r, bool sel, Colours) const +void DropDownListStringItem::Draw(const Rect &r, bool sel, Colours bg_colour) const { - Rect ir = r.Shrink(WidgetDimensions::scaled.dropdowntext); - DrawString(ir.left, ir.right, r.top, this->String(), sel ? TC_WHITE : TC_BLACK); + if (this->String().empty()) { + this->DropDownListItem::Draw(r, sel, bg_colour); + } else { + Rect ir = r.Shrink(WidgetDimensions::scaled.dropdowntext); + DrawString(ir.left, ir.right, r.top, this->String(), sel ? TC_WHITE : TC_BLACK); + } } /** diff --git a/src/widgets/dropdown_type.h b/src/widgets/dropdown_type.h index 424b9906ae..3135073a0d 100644 --- a/src/widgets/dropdown_type.h +++ b/src/widgets/dropdown_type.h @@ -42,7 +42,7 @@ public: DropDownListStringItem(StringID string, int result, bool masked); DropDownListStringItem(const std::string &string, int result, bool masked); - bool Selectable() const override { return true; } + bool Selectable() const override { return !this->String().empty(); } uint Width() const override; void Draw(const Rect &r, bool sel, Colours bg_colour) const override; virtual const std::string &String() const { return this->string; } From 61deab08fc431d7811c7d6fbf8320b1ce7cd76e0 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 28 Oct 2023 01:35:09 +0100 Subject: [PATCH 02/54] Change: Improve layout of station picker. --- src/rail_gui.cpp | 157 ++++++++++++++++++++++------------------------- 1 file changed, 73 insertions(+), 84 deletions(-) diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 29d73102d0..2eb11ec160 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -969,7 +969,7 @@ private: public: BuildRailStationWindow(WindowDesc *desc, Window *parent, bool newstation) : PickerWindowBase(desc, parent), filter_editbox(EDITBOX_MAX_SIZE * MAX_CHAR_LENGTH, EDITBOX_MAX_SIZE) { - this->coverage_height = 2 * FONT_HEIGHT_NORMAL + 3 * WidgetDimensions::scaled.vsep_normal; + this->coverage_height = 2 * FONT_HEIGHT_NORMAL + WidgetDimensions::scaled.vsep_normal; this->vscroll = nullptr; _railstation.newstations = newstation; @@ -1173,9 +1173,9 @@ public: if (this->IsShaded()) return; /* 'Accepts' and 'Supplies' texts. */ Rect r = this->GetWidget(WID_BRAS_COVERAGE_TEXTS)->GetCurrentRect(); - int top = r.top + WidgetDimensions::scaled.vsep_normal; + int top = r.top; top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, false) + WidgetDimensions::scaled.vsep_normal; - top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true) + WidgetDimensions::scaled.vsep_normal; + top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true); /* Resize background if the window is too small. * Never make the window smaller to avoid oscillating if the size change affects the acceptance. * (This is the case, if making the window bigger moves the mouse into the window.) */ @@ -1536,93 +1536,82 @@ static const NWidgetPart _nested_station_builder_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), - NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 2), - NWidget(NWID_VERTICAL), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_FILTER_CONTAINER), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BRAS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_ADDITIONS), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BRAS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), - SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BRAS_NEWST_SCROLL), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BRAS_NEWST_SCROLL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_FILTER_CONTAINER), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BRAS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_ADDITIONS), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BRAS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), + SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BRAS_NEWST_SCROLL), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BRAS_NEWST_SCROLL), + EndContainer(), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 1), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_X), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_Y), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BRAS_SHOW_NEWST_TYPE), SetMinimalSize(144, 11), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_NUMBER_OF_TRACKS, STR_NULL), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_1), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_1, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_2), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_2, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_3), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_3, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_4), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_4, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_5), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_5, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_6), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_6, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_7), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_7, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_PLATFORM_LENGTH, STR_NULL), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_1), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_1, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_2), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_2, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_3), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_3, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_4), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_4, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_5), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_5, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_6), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_6, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_7), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_7, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_DRAG_N_DROP), SetMinimalSize(75, 12), SetDataTip(STR_STATION_BUILD_DRAG_DROP, STR_STATION_BUILD_DRAG_DROP_TOOLTIP), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_HIGHLIGHT_OFF), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_HIGHLIGHT_ON), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + EndContainer(), EndContainer(), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetPadding(1, 2, 0, 0), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(7, 0), SetFill(1, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_X), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BRAS_PLATFORM_DIR_Y), SetMinimalSize(66, 60), SetFill(0, 0), SetDataTip(0x0, STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(7, 0), SetFill(1, 0), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BRAS_SHOW_NEWST_TYPE), SetMinimalSize(144, 11), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetPadding(1, 2, 4, 2), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_NUMBER_OF_TRACKS, STR_NULL), SetPadding(0, 2, 0, 2), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_1), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_1, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_2), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_2, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_3), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_3, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_4), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_4, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_5), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_5, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_6), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_6, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_NUM_7), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_7, STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_PLATFORM_LENGTH, STR_NULL), SetPadding(2, 2, 0, 2), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_1), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_1, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_2), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_2, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_3), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_3, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_4), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_4, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_5), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_5, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_6), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_6, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_LEN_7), SetMinimalSize(15, 12), SetDataTip(STR_BLACK_7, STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_PLATFORM_DRAG_N_DROP), SetMinimalSize(75, 12), SetDataTip(STR_STATION_BUILD_DRAG_DROP, STR_STATION_BUILD_DRAG_DROP_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_HIGHLIGHT_OFF), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BRAS_HIGHLIGHT_ON), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_MATRIX), - /* We need an additional background for the matrix, as the matrix cannot handle the scrollbar due to not being an NWidgetCore. */ - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BRAS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRAS_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BRAS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BRAS_MATRIX_SCROLL), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_MATRIX), + /* We need an additional background for the matrix, as the matrix cannot handle the scrollbar due to not being an NWidgetCore. */ + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BRAS_MATRIX_SCROLL), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRAS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BRAS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BRAS_MATRIX_SCROLL), + EndContainer(), + EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BRAS_MATRIX_SCROLL), EndContainer(), EndContainer(), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BRAS_COVERAGE_TEXTS), SetFill(1, 1), SetResize(1, 0), SetMinimalTextLines(2, WidgetDimensions::unscaled.vsep_normal), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BRAS_COVERAGE_TEXTS), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 1), SetResize(1, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_RESIZE), - NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(0, 1), EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), - EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_RESIZE), + NWidget(NWID_VERTICAL), + NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BRAS_MATRIX_SCROLL), + NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), EndContainer(), @@ -2181,7 +2170,7 @@ static const NWidgetPart _nested_build_waypoint_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BRW_SCROLL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRW_WAYPOINT_MATRIX), SetPIP(0, 2, 0), SetPadding(3), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRW_WAYPOINT_MATRIX), SetPIP(0, 2, 0), SetPadding(WidgetDimensions::unscaled.picker), NWidget(WWT_PANEL, COLOUR_GREY, WID_BRW_WAYPOINT), SetDataTip(0x0, STR_WAYPOINT_GRAPHICS_TOOLTIP), SetScrollbar(WID_BRW_SCROLL), EndContainer(), EndContainer(), EndContainer(), From db18f60beba200c442d6d9a7d0b1105c005dde9a Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Tue, 31 Oct 2023 20:22:05 +0000 Subject: [PATCH 03/54] Change: Improve layout of road/tram stop pickers. --- src/road_gui.cpp | 226 +++++++++++++++++++------------------- src/widgets/road_widget.h | 1 - 2 files changed, 110 insertions(+), 117 deletions(-) diff --git a/src/road_gui.cpp b/src/road_gui.cpp index 383b3c6395..2f606cf131 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -1140,7 +1140,7 @@ private: public: BuildRoadStationWindow(WindowDesc *desc, Window *parent, RoadStopType rs) : PickerWindowBase(desc, parent), filter_editbox(EDITBOX_MAX_SIZE * MAX_CHAR_LENGTH, EDITBOX_MAX_SIZE) { - this->coverage_height = 2 * FONT_HEIGHT_NORMAL + 3 * WidgetDimensions::scaled.vsep_normal; + this->coverage_height = 2 * FONT_HEIGHT_NORMAL + WidgetDimensions::scaled.vsep_normal; this->vscrollList = nullptr; this->vscrollMatrix = nullptr; this->roadStopType = rs; @@ -1328,9 +1328,9 @@ public: /* 'Accepts' and 'Supplies' texts. */ StationCoverageType sct = (this->window_class == WC_BUS_STATION) ? SCT_PASSENGERS_ONLY : SCT_NON_PASSENGERS_ONLY; Rect r = this->GetWidget(WID_BROS_ACCEPTANCE)->GetCurrentRect(); - int top = r.top + WidgetDimensions::scaled.vsep_normal; + int top = r.top; top = DrawStationCoverageAreaText(r.left, r.right, top, sct, rad, false) + WidgetDimensions::scaled.vsep_normal; - top = DrawStationCoverageAreaText(r.left, r.right, top, sct, rad, true) + WidgetDimensions::scaled.vsep_normal; + top = DrawStationCoverageAreaText(r.left, r.right, top, sct, rad, true); /* Resize background if the window is too small. * Never make the window smaller to avoid oscillating if the size change affects the acceptance. * (This is the case, if making the window bigger moves the mouse into the window.) */ @@ -1601,75 +1601,75 @@ static const NWidgetPart _nested_road_station_picker_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_BACKGROUND), - NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 2), - NWidget(NWID_VERTICAL), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_FILTER_CONTAINER), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BROS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ADDITIONS), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BROS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), - SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BROS_NEWST_SCROLL), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BROS_NEWST_SCROLL), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ORIENTATION), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetPadding(4, 2, 1, 2), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPadding(3), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(NWID_VERTICAL), SetPIP(0, 2, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_FILTER_CONTAINER), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BROS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), + EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ADDITIONS), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BROS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), + SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BROS_NEWST_SCROLL), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BROS_NEWST_SCROLL), + EndContainer(), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ORIENTATION), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetFill(1, 0), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 1), + NWidget(NWID_HORIZONTAL_LTR), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_NE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 1), + NWidget(NWID_HORIZONTAL_LTR), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SW), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_SE), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + EndContainer(), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), + EndContainer(), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_TYPE_SEL), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BROS_SHOW_NEWST_TYPE), SetMinimalSize(144, 8), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetFill(1, 0), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_OFF), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_ON), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_TYPE_SEL), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BROS_SHOW_NEWST_TYPE), SetMinimalSize(144, 8), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetPadding(4, 2, 4, 2), SetFill(1, 0), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_OFF), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_ON), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), + /* Hidden panel as NWID_MATRIX does not support SetScrollbar() */ + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), + EndContainer(), + EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BROS_MATRIX_SCROLL), EndContainer(), EndContainer(), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BROS_ACCEPTANCE), SetFill(1, 1), SetResize(1, 0), SetMinimalTextLines(2, WidgetDimensions::unscaled.vsep_normal), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BROS_ACCEPTANCE), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 1), SetResize(1, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_RESIZE), - NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(0, 1), EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), - EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_RESIZE), + NWidget(NWID_VERTICAL), + NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BROS_MATRIX_SCROLL), + NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), EndContainer(), @@ -1692,69 +1692,63 @@ static const NWidgetPart _nested_tram_station_picker_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_BACKGROUND), - NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 2), - NWidget(NWID_VERTICAL), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_FILTER_CONTAINER), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BROS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ADDITIONS), - NWidget(NWID_HORIZONTAL), SetPadding(0, 5, 2, 0), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BROS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), - SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BROS_NEWST_SCROLL), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BROS_NEWST_SCROLL), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ORIENTATION), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetPadding(4, 2, 1, 2), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPadding(3), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(NWID_VERTICAL), SetPIP(0, 2, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 2, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_FILTER_CONTAINER), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BROS_FILTER_EDITBOX), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ADDITIONS), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BROS_NEWST_LIST), SetMinimalSize(122, 71), SetFill(1, 0), + SetMatrixDataTip(1, 0, STR_STATION_BUILD_STATION_CLASS_TOOLTIP), SetScrollbar(WID_BROS_NEWST_SCROLL), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BROS_NEWST_SCROLL), + EndContainer(), + EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_ORIENTATION), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(144, 11), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL_LTR), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 1), NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_X), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_BROS_STATION_Y), SetMinimalSize(66, 50), SetFill(0, 0), EndContainer(), EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_TYPE_SEL), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BROS_SHOW_NEWST_TYPE), SetMinimalSize(144, 8), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetFill(1, 0), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_OFF), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_ON), SetMinimalSize(60, 12), + SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_TYPE_SEL), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN, WID_BROS_SHOW_NEWST_TYPE), SetMinimalSize(144, 8), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetPadding(4, 2, 4, 2), SetFill(1, 0), - EndContainer(), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_OFF), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BROS_LT_ON), SetMinimalSize(60, 12), - SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(2, 0), SetFill(1, 0), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), SetPadding(2, 0, 0, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), + /* Hidden panel as NWID_MATRIX does not support SetScrollbar() */ + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), + EndContainer(), + EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BROS_MATRIX_SCROLL), EndContainer(), EndContainer(), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BROS_ACCEPTANCE), SetFill(1, 1), SetResize(1, 0), SetMinimalTextLines(2, WidgetDimensions::unscaled.vsep_normal), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BROS_ACCEPTANCE), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 1), SetResize(1, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_RESIZE), - NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(0, 1), EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), - EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_RESIZE), + NWidget(NWID_VERTICAL), + NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BROS_MATRIX_SCROLL), + NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), EndContainer(), diff --git a/src/widgets/road_widget.h b/src/widgets/road_widget.h index 58825f1fe2..9050480bfb 100644 --- a/src/widgets/road_widget.h +++ b/src/widgets/road_widget.h @@ -44,7 +44,6 @@ enum BuildRoadDepotWidgets { enum BuildRoadStationWidgets { /* Name starts with BRO instead of BR, because of collision with BuildRailStationWidgets */ WID_BROS_CAPTION, ///< Caption of the window. - WID_BROS_BACKGROUND, ///< Background of the window. WID_BROS_STATION_NE, ///< Terminal station with NE entry. WID_BROS_STATION_SE, ///< Terminal station with SE entry. WID_BROS_STATION_SW, ///< Terminal station with SW entry. From 27b5979056e536f95ed68fa918a0eb98718cc1ab Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 2 Nov 2023 01:43:39 +0000 Subject: [PATCH 04/54] Change: Improve layout of object picker. --- src/object_gui.cpp | 60 +++++++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/src/object_gui.cpp b/src/object_gui.cpp index 9f22b22735..5a63690f39 100644 --- a/src/object_gui.cpp +++ b/src/object_gui.cpp @@ -667,43 +667,43 @@ static const NWidgetPart _nested_build_object_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN), NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN), EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), - NWidget(NWID_HORIZONTAL), SetPadding(2, 0, 0, 2), - NWidget(NWID_VERTICAL), SetPadding(0, 5, 2, 0), SetPIP(0, 2, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BO_FILTER), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_BO_CLASS_LIST), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_OBJECT_BUILD_CLASS_TOOLTIP), SetScrollbar(WID_BO_SCROLLBAR), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BO_SCROLLBAR), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_OBJECT_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_GREY, WID_BO_OBJECT_SPRITE), SetDataTip(0x0, STR_OBJECT_BUILD_PREVIEW_TOOLTIP), EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN), SetFill(0, 1), SetDataTip(STR_LIST_FILTER_TITLE, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_BO_FILTER), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), + EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_BO_CLASS_LIST), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_OBJECT_BUILD_CLASS_TOOLTIP), SetScrollbar(WID_BO_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BO_SCROLLBAR), EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_OBJECT_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_GREY, WID_BO_OBJECT_SPRITE), SetDataTip(0x0, STR_OBJECT_BUILD_PREVIEW_TOOLTIP), EndContainer(), + EndContainer(), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_NAME), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), SetAlignment(SA_CENTER), + NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_SIZE), SetDataTip(STR_OBJECT_BUILD_SIZE, STR_NULL), SetAlignment(SA_CENTER), EndContainer(), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_NAME), SetDataTip(STR_JUST_STRING, STR_NULL), SetTextStyle(TC_ORANGE), - NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_SIZE), SetDataTip(STR_OBJECT_BUILD_SIZE, STR_NULL), - EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BO_SELECT_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_SELECT_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BO_SELECT_IMAGE), SetMinimalSize(66, 60), SetDataTip(0x0, STR_OBJECT_BUILD_TOOLTIP), - SetFill(0, 0), SetResize(0, 0), SetScrollbar(WID_BO_SELECT_SCROLL), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BO_SELECT_SCROLL), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_SELECT_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BO_SELECT_IMAGE), SetMinimalSize(66, 60), SetDataTip(0x0, STR_OBJECT_BUILD_TOOLTIP), + SetFill(0, 0), SetResize(0, 0), SetScrollbar(WID_BO_SELECT_SCROLL), + EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BO_SELECT_SCROLL), EndContainer(), EndContainer(), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BO_INFO), SetPadding(WidgetDimensions::unscaled.framerect), SetFill(1, 0), SetResize(1, 0), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BO_INFO), SetPadding(0, 5, 2, 2), SetFill(1, 0), SetResize(1, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(0, 1), EndContainer(), - NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), - EndContainer(), + NWidget(NWID_VERTICAL), + NWidget(NWID_VSCROLLBAR, COLOUR_DARK_GREEN, WID_BO_SELECT_SCROLL), + NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN), EndContainer(), EndContainer(), }; From b216dc493f6942d8410f14d451e97c8a47b9a4d8 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 28 Oct 2023 01:34:57 +0100 Subject: [PATCH 05/54] Change: Bring dock picker inline with other pickers. --- src/dock_gui.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/dock_gui.cpp b/src/dock_gui.cpp index 7e03a93d5c..c74eed9e94 100644 --- a/src/dock_gui.cpp +++ b/src/dock_gui.cpp @@ -442,9 +442,9 @@ public: /* strings such as 'Size' and 'Coverage Area' */ Rect r = this->GetWidget(BDSW_ACCEPTANCE)->GetCurrentRect(); - int top = r.top + WidgetDimensions::scaled.vsep_normal; + int top = r.top; top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, false) + WidgetDimensions::scaled.vsep_normal; - top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true) + WidgetDimensions::scaled.vsep_normal; + top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true); /* Resize background if the window is too small. * Never make the window smaller to avoid oscillating if the size change affects the acceptance. * (This is the case, if making the window bigger moves the mouse into the window.) */ @@ -485,12 +485,16 @@ static const NWidgetPart _nested_build_dock_station_widgets[] = { NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_DOCK_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BDSW_BACKGROUND), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN, BDSW_INFO), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(14, 0, 14), - NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_OFF), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_ON), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN, BDSW_INFO), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(14, 0, 14), + NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_OFF), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, BDSW_LT_ON), SetMinimalSize(60, 12), SetFill(1, 0), SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(WWT_EMPTY, COLOUR_GREY, BDSW_ACCEPTANCE), SetResize(0, 1), SetMinimalTextLines(2, WidgetDimensions::unscaled.vsep_normal), EndContainer(), - NWidget(WWT_EMPTY, COLOUR_GREY, BDSW_ACCEPTANCE), SetPadding(WidgetDimensions::unscaled.framerect), SetResize(0, 1), EndContainer(), }; From 842cf87765688e810736844f133c8b46fada398e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 28 Oct 2023 01:34:51 +0100 Subject: [PATCH 06/54] Change: Bring airport picker inline with other pickers. --- src/airport_gui.cpp | 58 ++++++++++++++++++------------------ src/widgets/airport_widget.h | 1 - 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp index 4638822c33..b7b6284388 100644 --- a/src/airport_gui.cpp +++ b/src/airport_gui.cpp @@ -420,7 +420,7 @@ public: this->DrawWidgets(); Rect r = this->GetWidget(WID_AP_ACCEPTANCE)->GetCurrentRect(); - int top = r.top + WidgetDimensions::scaled.vsep_normal; + int top = r.top; if (_selected_airport_index != -1) { const AirportSpec *as = AirportClass::Get(_selected_airport_class)->GetSpec(_selected_airport_index); @@ -443,7 +443,7 @@ public: /* strings such as 'Size' and 'Coverage Area' */ top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, false) + WidgetDimensions::scaled.vsep_normal; - top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true) + WidgetDimensions::scaled.vsep_normal; + top = DrawStationCoverageAreaText(r.left, r.right, top, SCT_ALL, rad, true); } /* Resize background if the window is too small. @@ -586,35 +586,35 @@ static const NWidgetPart _nested_build_airport_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN), NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 0), SetPIP(2, 0, 2), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_AP_CLASS_DROPDOWN), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_STATION_BUILD_AIRPORT_TOOLTIP), - NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_GREY, WID_AP_AIRPORT_LIST), SetFill(1, 0), SetMatrixDataTip(1, 5, STR_STATION_BUILD_AIRPORT_TOOLTIP), SetScrollbar(WID_AP_SCROLLBAR), - NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AP_SCROLLBAR), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL), - NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING1, STR_NULL), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL), - EndContainer(), - NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0), - EndContainer(), - /* Bottom panel. */ - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_AP_BOTTOMPANEL), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetPadding(WidgetDimensions::unscaled.framerect), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(14, 0), SetFill(1, 0), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DONTHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), - SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DOHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), - SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_picker, 0), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_AP_CLASS_DROPDOWN), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_STATION_BUILD_AIRPORT_TOOLTIP), + NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_GREY, WID_AP_AIRPORT_LIST), SetFill(1, 0), SetMatrixDataTip(1, 5, STR_STATION_BUILD_AIRPORT_TOOLTIP), SetScrollbar(WID_AP_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AP_SCROLLBAR), + EndContainer(), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_ORIENTATION, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL), + NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING1, STR_NULL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL), + EndContainer(), + NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0), + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_STATION_BUILD_COVERAGE_AREA_TITLE, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(14, 0, 14), SetPIPRatio(1, 0, 1), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DONTHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), + SetDataTip(STR_STATION_BUILD_COVERAGE_OFF, STR_STATION_BUILD_COVERAGE_AREA_OFF_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_AP_BTN_DOHILIGHT), SetMinimalSize(60, 12), SetFill(1, 0), + SetDataTip(STR_STATION_BUILD_COVERAGE_ON, STR_STATION_BUILD_COVERAGE_AREA_ON_TOOLTIP), + EndContainer(), + EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(14, 0), SetFill(1, 0), + NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_ACCEPTANCE), SetResize(0, 1), SetFill(1, 0), SetMinimalTextLines(2, WidgetDimensions::unscaled.vsep_normal), EndContainer(), - NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_ACCEPTANCE), SetPadding(WidgetDimensions::unscaled.framerect), SetResize(0, 1), SetFill(1, 0), EndContainer(), }; diff --git a/src/widgets/airport_widget.h b/src/widgets/airport_widget.h index f923512199..514a44e88a 100644 --- a/src/widgets/airport_widget.h +++ b/src/widgets/airport_widget.h @@ -28,7 +28,6 @@ enum AirportPickerWidgets { WID_AP_LAYOUT_INCREASE, ///< Increase the layout number. WID_AP_AIRPORT_SPRITE, ///< A visual display of the airport currently selected. WID_AP_EXTRA_TEXT, ///< Additional text about the airport. - WID_AP_BOTTOMPANEL, ///< Panel at the bottom. WID_AP_COVERAGE_LABEL, ///< Label if you want to see the coverage. WID_AP_BTN_DONTHILIGHT, ///< Don't show the coverage button. WID_AP_BTN_DOHILIGHT, ///< Show the coverage button. From 56657eeaaefa11fe9d08576919e87fd97c95d9d7 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 7 Nov 2023 18:37:45 +0000 Subject: [PATCH 07/54] Update: Translations from eints chinese (simplified): 1 change by WenSimEHRP danish: 1 change by bscargo hindi: 111 changes by NisheshTyagi --- src/lang/danish.txt | 1 + src/lang/hindi.txt | 111 ++++++++++++++++++++++++++++++++ src/lang/simplified_chinese.txt | 1 + 3 files changed, 113 insertions(+) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index f8870f34b3..fff87ed157 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -5189,6 +5189,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kan ikke STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Transportmidler kan kun vente ved stationer. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Dette transportmiddel stopper ikke ved denne station. STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... tidsplanen er ufuldstændig +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... tidsplanen er ikke startet endnu # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... for mange skilte diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index a5da9e538d..90747ae493 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -39,11 +39,14 @@ STR_CARGO_PLURAL_VALUABLES :मूल्य STR_CARGO_PLURAL_COPPER_ORE :ताम्र अयस्क STR_CARGO_PLURAL_MAIZE :मक्के STR_CARGO_PLURAL_FRUIT :फल +STR_CARGO_PLURAL_CANDYFLOSS :कैंडी के फ्लॉस # Singular cargo name STR_CARGO_SINGULAR_NOTHING : +STR_CARGO_SINGULAR_PASSENGER :यात्री STR_CARGO_SINGULAR_MAIZE :मक्का STR_CARGO_SINGULAR_SWEETS :मिठाई +STR_CARGO_SINGULAR_CANDYFLOSS :कैंडी का फ्लॉस STR_CARGO_SINGULAR_BUBBLE :बुलबुला STR_CARGO_SINGULAR_TOFFEE :टॉफी @@ -63,6 +66,7 @@ STR_COLOUR_PINK :गुलाब STR_COLOUR_RED :लाल ###length 17 +STR_COLOUR_SECONDARY_YELLOW :पीला # Units used in OpenTTD @@ -78,6 +82,7 @@ STR_UNITS_POWER_METRIC :{DECIMAL}{NBSP} # Common window strings +STR_TOOLTIP_SORT_ORDER :{BLACK}क्रमबद्धता क्रम चुनें (अवरोही/आरोही) STR_TOOLTIP_RESIZE :{BLACK}खिड़की का आकार बदलने के लिये क्लिक करके खींचें @@ -87,6 +92,7 @@ STR_TOOLTIP_RESIZE :{BLACK}खि ###length VEHICLE_TYPES # Query window +STR_BUTTON_CANCEL :{BLACK}रद्द करें # On screen keyboard window @@ -99,6 +105,8 @@ STR_SORT_BY_CAPTION_DATE :{BLACK}दि # These are used in dropdowns STR_SORT_BY_PRODUCTION :उत्पादन STR_SORT_BY_PROFIT_LAST_YEAR :पिछले वर्ष का लाभ +STR_SORT_BY_LIFE_TIME :शेष जीवनकाल +STR_SORT_BY_RATING_MAX :उच्चतम कार्गो रेटिंग STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :इस वर्ष का कुल लाभ STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :पिछले वर्ष का औसत लाभ @@ -211,6 +219,7 @@ STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}वा STR_PERFORMANCE_DETAIL_CARGO :{BLACK}माल : ###length 10 +STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}सबसे कम आय में वाहन का लाभ (केवल दो वर्ष से अधिक पुराने वाहनों पर विचार किया जाता है) # Music window STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM} @@ -225,15 +234,20 @@ STR_HIGHSCORE_PRESIDENT_OF_COMPANY_ACHIEVES_STATUS :{BIG_FONT}{WHIT ###length 7 STR_SMALLMAP_TYPE_VEGETATION :वनस्पति +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}मानचित्र पर वनस्पति दिखाएँ +STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}जहाजें STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY :{TINY_FONT}{BLACK}ट्रक लदान वीथी +STR_SMALLMAP_LEGENDA_BUS_STATION :{TINY_FONT}{BLACK}बस स्टेशन STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}खुरदरा भूमि STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}रिक्त भूमि +STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLACK}पानी STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}नगर STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY} STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN} +STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}कंपनी की सभी संपत्ति को नक्शे पर प्रदर्शित करें # Status bar messages STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * ठहरा हुआ (संपर्क चित्र अद्यतन के लिये प्रतीक्षारत) * * @@ -270,6 +284,7 @@ STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLAC # Extra view window +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}इस व्यूपोर्ट के स्थान को मुख्य दृश्य में कॉपी करें # Game options window @@ -286,14 +301,17 @@ STR_GAME_OPTIONS_CURRENCY_HKD :हाँग # Autosave dropdown ###length 5 +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_60_MINUTES :हर 60 मिनट में STR_GAME_OPTIONS_LANGUAGE_PERCENTAGE :{STRING} ({NUM}% पूर्ण) +STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}हार्डवेयर एक्सिलरेशन +STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इंटरफ़ेस का आकार @@ -312,17 +330,21 @@ STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक +STR_NUM_HIGH :उच्च STR_VARIETY_MEDIUM :मध्यम +STR_VARIETY_VERY_HIGH :बहुत ऊँचा ###length 5 STR_AI_SPEED_SLOW :धीमा +STR_AI_SPEED_FAST :तेज़ ###length 6 ###length 4 ###length 3 +STR_DISASTER_NORMAL :सामान्य ###length 4 @@ -331,9 +353,11 @@ STR_AI_SPEED_SLOW :धीमा ###length 7 ###length 4 +STR_CITY_APPROVAL_TOLERANT :सहिष्णु # Settings tree window +STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}डिफ़ॉल्ट मान: {ORANGE}{STRING} @@ -361,6 +385,7 @@ STR_CONFIG_SETTING_COMPANIES_OFF :बन्द +STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :यदि सक्षम किया गया है, तो ट्रेनें गैर-टर्मिनस स्टेशनों पर रिवर्स नहीं होंगी, भले ही रिवर्स करते समय उनके अगले गंतव्य के लिए छोटा रास्ता हो। @@ -388,6 +413,7 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :ट्रेन ###length 3 +STR_CONFIG_SETTING_MULTIPINDTOWN :प्रति शहर अनेक समान उद्योगों को अनुमति दें: {STRING} ###length 3 @@ -409,6 +435,7 @@ STR_CONFIG_SETTING_BRIBE_HELPTEXT :कंपनि +STR_CONFIG_SETTING_PLANE_CRASHES :विमान दुर्घटनाओं की संख्या: {STRING} ###length 3 @@ -428,6 +455,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_OFF :नहीं ###length 2 +STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :लाल विंडो में त्रुटि संदेश प्रदर्शित करने की अवधि। ध्यान दें कि कुछ (महत्वपूर्ण) त्रुटि संदेश इस समय के बाद स्वचालित रूप से बंद नहीं होते हैं, लेकिन उन्हें मैन्युअल रूप से बंद किया जाना चाहिए ###setting-zero-is-special @@ -510,6 +538,7 @@ STR_CONFIG_SETTING_SOUND_NEWS :समाचा +STR_CONFIG_SETTING_SOUND_DISASTER :आपदाएँ/दुर्घटनाएँ: {STRING} @@ -518,8 +547,10 @@ STR_CONFIG_SETTING_SOUND_NEWS :समाचा STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :एक कंपनी के पास जहाजों की अधिकतम संख्या +STR_CONFIG_SETTING_AI_BUILDS_TRAINS :कंप्यूटर के लिए ट्रेन अक्षम करें: {STRING} +STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :कंप्यूटर के लिए विमान अक्षम करें: {STRING} ###length 3 @@ -550,6 +581,7 @@ STR_CONFIG_SETTING_NEWS_ACCIDENTS_DISASTERS :दुर्घ ###length 3 +STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :रंगीन समाचार इसमें दिखाई देता है: {STRING} STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###setting-zero-is-special @@ -560,13 +592,16 @@ STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM} ###length 2 +STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :केवल पथ संकेत ###length 2 ###length 5 +STR_CONFIG_SETTING_NOISE_LEVEL :शोर स्तर के आधार पर हवाईअड्डे पर स्थान सीमित करें: {STRING} +STR_CONFIG_SETTING_TOWN_FOUNDING :खेल में कस्बों की स्थापना: {STRING} ###length 3 STR_CONFIG_SETTING_TOWN_CARGOGENMODE :नगर में माल उत्पादन: {STRING} @@ -575,6 +610,7 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE :नगर म ###length 4 STR_CONFIG_SETTING_TOOLBAR_POS :मुख्य टूलबार की स्थिति: {STRING} +STR_CONFIG_SETTING_SNAP_RADIUS :विंडो स्नैप त्रिज्या: {STRING} ###setting-zero-is-special STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} ###setting-zero-is-special @@ -585,10 +621,12 @@ STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :२x ###length 5 +STR_CONFIG_SETTING_TOWN_GROWTH_NONE :कोई नहीं ###setting-zero-is-special +STR_CONFIG_SETTING_DISTRIBUTION_MAIL :मेल के लिए वितरण मोड: {STRING} ###length 3 @@ -608,8 +646,11 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :अंतर् ###length 3 STR_CONFIG_SETTING_INTERFACE_GENERAL :सामान्य +STR_CONFIG_SETTING_COMPANY :कंपनी +STR_CONFIG_SETTING_VEHICLES_ROUTING :मार्ग STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओं द्वारा उपयोग किया जाने वाला पथान्वेषी +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :यदि ट्रेनें लंबे समय तक वहां प्रतीक्षा करती हैं तो उन्हें सिग्नल पर रिवर्स करने की अनुमति दें ###length 2 @@ -617,13 +658,17 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :नौकाओ # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}वीडियो विन्यास में त्रुटि... +STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}...कोई संगत जीपीयू नहीं मिला। हार्डवेयर त्वरण अक्षम किया गया +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... GPU ड्राइवर ने गेम को क्रैश कर दिया। हार्डवेयर त्वरण अक्षम किया गया # Intro window STR_INTRO_PLAY_HEIGHTMAP :{BLACK}उभार-मानचित्र खेलें +STR_INTRO_GAME_OPTIONS :{BLACK}गेम विकल्प STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}अपनी इच्छानुसार एक क्रीड़ा-विश्व/परिदृश्य बनायें +STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}मल्टीप्लेयर गेम प्रारंभ करें STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}'समशीतोष्ण' जलवायु वाला क्षेत्र चुनें @@ -646,6 +691,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}क् STR_LIVERY_TRAIN_TOOLTIP :{BLACK} ट्रेन रंग योजनाएं दिखाएं ###length 23 +STR_LIVERY_ELECTRIC :इलेक्ट्रिक इंजन # Face selection window @@ -660,6 +706,7 @@ STR_FACE_COLLAR_TOOLTIP :{BLACK}कॉ STR_NETWORK_SERVER_LIST_MAP_SIZE_SHORT :{BLACK}{COMMA}x{COMMA} +STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}नक़्शे का आकार: {WHITE}{COMMA}x{COMMA} STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर्वर की जानकारी अद्यतन करें @@ -680,6 +727,7 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर # Network company list added strings # Network client list +STR_NETWORK_CLIENT_LIST_SERVER_NAME_QUERY_CAPTION :सर्वर का नाम # Matches ConnectionType ###length 5 @@ -692,15 +740,20 @@ STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}सर # Network set password # Network company info join/password +STR_COMPANY_VIEW_PASSWORD :{BLACK}पासवर्ड # Network chat # Network messages +STR_NETWORK_ERROR_BAD_PLAYER_NAME :{WHITE}आपके खिलाड़ी का नाम सेट नहीं किया गया है. नाम मल्टीप्लेयर विंडो के शीर्ष पर सेट किया जा सकता है +STR_NETWORK_ERROR_WRONG_PASSWORD :गलत पासवर्ड STR_NETWORK_ERROR_CLIENT_GUI_LOST_CONNECTION_CAPTION :{WHITE}संपर्क विच्छेद संभावित ###length 21 +STR_NETWORK_ERROR_CLIENT_GENERAL :सामान्य त्रुटि +STR_NETWORK_ERROR_CLIENT_SAVEGAME :मानचित्र लोड नहीं हो सका # Network related errors @@ -727,6 +780,7 @@ STR_CONTENT_DOWNLOAD_COMPLETE :{WHITE}डा # Content downloading error messages STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}डाउनलोड असफल हुआ... +STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}अनुपलब्ध ग्राफ़िक्स # Transparency settings window @@ -743,6 +797,7 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}डा # Generic toolbar +STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}अक्षम है क्योंकि वर्तमान में इस बुनियादी ढांचे के लिए कोई वाहन उपलब्ध नहीं है # Rail construction toolbar @@ -782,6 +837,7 @@ STR_WATERWAYS_TOOLBAR_BUILD_CANALS_TOOLTIP :{BLACK}नह # Airport construction window +STR_AIRPORT_CITY :शहर STR_AIRPORT_INTERCONTINENTAL :अंतरमहाद्वीपीय STR_AIRPORT_CLASS_SMALL :लघु विमानतल @@ -812,11 +868,14 @@ STR_FOUND_TOWN_CITY :{BLACK}शह STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}उद्योग चुनें # Land area window +STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}सड़क मालिक: {LTBLUE}{STRING} # Description of land area of different tiles STR_LAI_CLEAR_DESCRIPTION_BARE_LAND :रिक्त भूमि +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :कॉम्बो-सिग्नल वाला रेलवे ट्रैक +STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :स्ट्रीट लाइट वाली सड़क STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :वृक्ष आच्छादित सड़क # Houses come directly from their building names @@ -824,6 +883,7 @@ STR_LAI_ROAD_DESCRIPTION_TREE_LINED_ROAD :वृक्ष STR_LAI_STATION_DESCRIPTION_RAILROAD_STATION :रेलवे स्टेशन +STR_LAI_WATER_DESCRIPTION_RIVER :नदी # Industries come directly from their industry names @@ -833,6 +893,8 @@ STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :इस्पा +STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :प्रकाशस्तंभ +STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :कंपनी के स्वामित्व वाली भूमि # About OpenTTD window @@ -845,9 +907,12 @@ STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES} ###length 15 STR_FRAMETIME_CAPTION_GL_ECONOMY :माल प्रबंधन +STR_FRAMETIME_CAPTION_GL_TRAINS :ट्रेन टिक टिक +STR_FRAMETIME_CAPTION_VIDEO :वीडियो आउटपुट # Save/load game/scenario +STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}सहेजे गए गेम के लिए वर्तमान में चयनित नाम # World generation @@ -855,6 +920,7 @@ STR_FRAMETIME_CAPTION_GL_ECONOMY :माल प ###length 21 STR_MAPGEN_TOWN_NAME_FRENCH :फ़्रेंच STR_MAPGEN_TOWN_NAME_POLISH :पोलिश +STR_MAPGEN_TOWN_NAME_HUNGARIAN :हंगेरी STR_MAPGEN_TOWN_NAME_TURKISH :तुर्की STR_MAPGEN_TOWN_NAME_ITALIAN :इटैलियन @@ -871,12 +937,15 @@ STR_MAPGEN_BORDER_RANDOM :{BLACK}या STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM} # NewGRF settings +STR_NEWGRF_FILTER_TITLE :{ORANGE}फ़िल्टर: STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}चुने गये पूर्वनिश्चित समायोजन को खोलें +STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}उभाड़ STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :मूल (D) +STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}सूचना उपलब्ध नहीं # NewGRF save preset window @@ -895,6 +964,7 @@ STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :मूल (D) # NewGRF (self) generated warnings/errors STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING} +STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF फ़ाइल का अनुवाद करने के लिए इसे डिज़ाइन किया गया था # NewGRF related 'general' warnings @@ -923,6 +993,7 @@ STR_NEWGRF_SCAN_MESSAGE :{BLACK}NewGRF # Town view window STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_DELIVERED :{ORANGE}{CARGO_TINY} / {CARGO_LONG}{GREEN} (पहुंचाया गया) +STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}शहर में शोर की सीमा: {ORANGE}{COMMA}{BLACK} अधिकतम: {ORANGE}{COMMA} STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}स्थानीय प्रशासन STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}स्थानीय प्राधिकारी के बारे में जानकारी दिखाएँ @@ -952,6 +1023,7 @@ STR_SUBSIDIES_OFFERED_TITLE :{BLACK}इन # Story book window STR_STORY_BOOK_TITLE :{YELLOW}{STRING} +STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}इस ड्रॉप डाउन सूची में इसे चुनकर किसी विशिष्ट पृष्ठ पर जाएं। STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}अगले पृष्ठ पर जाएँ # Station list window @@ -962,6 +1034,7 @@ STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOI # Station view window STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} +STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} लोडिंग के लिए आरक्षित) @@ -970,6 +1043,7 @@ STR_STATION_VIEW_VIA :{YELLOW}{CARGO_ ###length 8 +STR_CARGO_RATING_VERY_POOR :बहुत गरीब @@ -996,6 +1070,7 @@ STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE :{WHITE}{PRESIDENT_NAME}{}{GOLD}(प्रबन्धक) +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}मुख्यालय देखें STR_COMPANY_VIEW_COMPANY_NAME_BUTTON :{BLACK}कंपनी का नाम @@ -1029,10 +1104,12 @@ STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING # Group window ###length VEHICLE_TYPES +STR_GROUP_ALL_ROAD_VEHICLES :सभी सड़क वाहन ###length VEHICLE_TYPES +STR_GROUP_CREATE_TOOLTIP :{BLACK}समूह बनाने के लिए क्लिक करें @@ -1047,6 +1124,7 @@ STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :नई ट्रेनें STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}मूल्य : {GOLD}{CURRENCY_LONG}{BLACK} भार : {GOLD}{WEIGHT_SHORT} +STR_PURCHASE_INFO_SPEED :{BLACK}रफ़्तार: {GOLD}{VELOCITY} STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}भार : {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT}) ###length 3 @@ -1089,6 +1167,7 @@ STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE} STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}डिपो में सभी सड़क वाहन बेचते हैं ###length VEHICLE_TYPES +STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}डिपो में सभी जहाजों को स्वतः बदलें ###length VEHICLE_TYPES @@ -1116,10 +1195,12 @@ STR_ENGINE_PREVIEW_SHIP :जहाज # Autoreplace window +STR_REPLACE_VEHICLE_VEHICLES_IN_USE :{YELLOW}उपयोग में आने वाले वाहन ###length VEHICLE_TYPES +STR_REPLACE_VEHICLES_START :{BLACK}वाहन बदलना प्रारंभ करेंवाहन बदलना प्रारंभ करें STR_REPLACE_VEHICLES_STOP :वाहन प्रतिस्थापित करना बन्द करें @@ -1162,6 +1243,7 @@ STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}वर ###length VEHICLE_TYPES +STR_VEHICLE_INFO_MAX_SPEED_TYPE :अधिकतम रफ़्तार: {LTBLUE}{VELOCITY} {BLACK}विमान के प्रकार: {LTBLUE}{STRING} @@ -1175,6 +1257,7 @@ STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE +STR_VEHICLE_DETAIL_TAB_CAPACITIES :{BLACK}क्षमता # Vehicle refit @@ -1201,10 +1284,13 @@ STR_ORDER_REFIT_TOOLTIP :{BLACK}इस # Conditional order variables, must follow order of OrderConditionVariable enum ###length 8 +STR_ORDER_CONDITIONAL_RELIABILITY :विश्वसनीयता +STR_ORDER_CONDITIONAL_UNCONDITIONALLY :हमेशा ###next-name-looks-similar STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :के बराबर है +STR_ORDER_CONDITIONAL_VALUE_TOOLTIP :{BLACK}वाहन डेटा की तुलना करने का मान @@ -1236,6 +1322,7 @@ STR_ORDER_NO_LOAD :(कोई ल # Time table window +STR_TIMETABLE_ORDER_VIEW :{BLACK}आदेश @@ -1253,6 +1340,7 @@ STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}इस # Date window (for timetable) +STR_DATE_SET_DATE_TOOLTIP :{BLACK}समय सारिणी के लिए प्रारंभिक तिथि के रूप में चयनित तिथि का उपयोग करें STR_DATE_MONTH_TOOLTIP :{BLACK}महीना चुनें @@ -1269,11 +1357,13 @@ STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} +STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}मिनिमैप स्क्रीनशॉट # Script Parameters # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}विषयसूची ###length 5 @@ -1281,6 +1371,7 @@ STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} # Income 'floats' STR_INCOME_FLOAT_COST :{RED}मूल्य: {CURRENCY_LONG} +STR_INCOME_FLOAT_INCOME :{GREEN}आय: {CURRENCY_LONG} STR_FEEDER_COST :{YELLOW}हस्तांतरण : {CURRENCY_LONG}{WHITE} / {RED}मूल्य : {CURRENCY_LONG} # Saveload messages @@ -1289,6 +1380,7 @@ STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :फाइल # Map generation messages +STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... छवि प्रकार परिवर्तित नहीं किया जा सका @@ -1303,9 +1395,11 @@ STR_ERROR_MESSAGE_CAPTION :{YELLOW}सन # Generic construction errors # Local authority errors +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} स्थानीय प्राधिकारी ने शोर की चिंताओं के कारण हवाई अड्डे के लिए अनुमति देने से इनकार कर दिया # Levelling errors STR_ERROR_TOO_HIGH :{WHITE}... बहुत ऊँचा +STR_ERROR_BRIDGE_TOO_HIGH_AFTER_LOWER_LAND :{WHITE}बाद में इसके ऊपर का पुल बहुत ऊंचा हो जाएगा। # Company related errors @@ -1315,6 +1409,7 @@ STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}नग STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... मानचित्र के किनारों के बहुत समीप # Industry related errors +STR_ERROR_CAN_ONLY_BE_BUILT_IN_DESERT :{WHITE}... केवल रेगिस्तानी इलाकों में ही बनाया जा सकता है STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... वन केवल बर्फ की सीमा के ऊपर ही लगाये जा सकते हैं। @@ -1323,6 +1418,7 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... व STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}अत्यधिक स्टेशन/लादन क्षेत्र # Station destruction related errors +STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}यात्री ट्राम स्टेशन नहीं हटा सकते... # Waypoint related errors @@ -1330,6 +1426,8 @@ STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}अत # Depot related errors +STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}यहां सड़क वाहन डिपो नहीं बना सकते... +STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}यहां ट्राम वाहन डिपो नहीं बना सकते... @@ -1339,6 +1437,7 @@ STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE} स् # Autoreplace related errors STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}स्वतः नवीनीकरण/बदलाव का कोई भी नियम लागू नहीं किया गया +STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(धन सीमा) # Rail construction errors STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}पटरियों को यहाँ से नहीं हटा सकते... @@ -1349,10 +1448,13 @@ STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE} ट् # Waterway construction errors STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... पानी पर बनाया जाना चाहिये। +STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... पानी पर निर्माण नहीं किया जा सकता # Tree related errors # Bridge related errors +STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}पहले पुल तोड़ना होगा +STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}इलाके के हिसाब से पुल बहुत नीचा है # Tunnel related errors @@ -1365,8 +1467,10 @@ STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... प ###length VEHICLE_TYPES ###length VEHICLE_TYPES +STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}विमान उपलब्ध नहीं है ###length VEHICLE_TYPES +STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}सड़क वाहन को फिर से फिट नहीं किया जा सकता... ###length VEHICLE_TYPES STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}जहाज का नामकरण नहीं कर सकते... @@ -1387,10 +1491,12 @@ STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}रे # Specific vehicle errors +STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}ट्रेन की दिशा उलट नहीं सकते... # Order related errors +STR_ERROR_CAN_T_INSERT_NEW_ORDER :{WHITE}नया ऑर्डर सम्मिलित नहीं किया जा सकता... STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}... वाहन सभी स्टेशनों तक नहीं जा सकता @@ -1409,6 +1515,8 @@ STR_BASESOUNDS_WIN_DESCRIPTION :ट्रां ##id 0x2000 # Town building names +STR_TOWN_BUILDING_NAME_FLATS_1 :फ्लैटों +STR_TOWN_BUILDING_NAME_THEATER_1 :थिएटर ##id 0x4800 # industry names @@ -1436,9 +1544,11 @@ STR_SV_STNAME_WAYPOINT :{STRING} ##id 0x8000 ###length 116 # Vehicle names +STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :यात्री गाड़ी STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :कोयला वाहन STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_FRUIT_TRUCK :फल वाहन STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (विद्युतीय) +STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :यात्री गाड़ी STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :खिलौनों का डब्बा STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :फ़िज़ी ड्रिंक ट्रक STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_WATER_TANKER :पानी का टैंकर @@ -1477,6 +1587,7 @@ STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} # _SERIAL version of AIRACRAFT doesn't exist +STR_UNKNOWN_STATION :अज्ञात स्टेशन # Viewport strings diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index c0fb39f00d..a00584b03e 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -5189,6 +5189,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}不能 STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}车辆只能在站内等候。 STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}此车辆将不停靠本站。 STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... 时间表不完整 +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}……时间表尚未开始 # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}……标志太多了 From 55adbe10b74e6b4abfa2cdda6320afb4ebb8b092 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 25 Oct 2023 01:04:42 +0100 Subject: [PATCH 08/54] Add: WidgetDimensions for 'sparse' widget windows. These are for windows that have space between widgets instead of being clumped together. --- src/widget.cpp | 3 +++ src/window_gui.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/widget.cpp b/src/widget.cpp index 95d177484a..74bf61b2db 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -152,9 +152,12 @@ const WidgetDimensions WidgetDimensions::unscaled = { {WD_DROPDOWNTEXT_LEFT, WD_DROPDOWNTEXT_TOP, WD_DROPDOWNTEXT_RIGHT, WD_DROPDOWNTEXT_BOTTOM}, ///< dropdowntext {20, 10, 20, 10}, ///< modalpopup {3, 3, 3, 3}, ///< picker + {10, 8, 10, 8}, ///< sparse window padding + {10, 8, 10, 1}, ///< resizable sparse window padding 1, ///< pressed 1, ///< vsep_picker WD_PAR_VSEP_NORMAL, ///< vsep_normal + 4, ///< vsep_sparse WD_PAR_VSEP_WIDE, ///< vsep_wide 2, ///< hsep_normal 6, ///< hsep_wide diff --git a/src/window_gui.h b/src/window_gui.h index 46dcdd6acb..f78cc0d907 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -51,10 +51,13 @@ struct WidgetDimensions { RectPadding dropdowntext; ///< Offsets of text within a dropdown widget. RectPadding modalpopup; ///< Padding for a modal popup. RectPadding picker; ///< Padding for a picker (dock, station, etc) window. + RectPadding sparse; ///< Padding used for 'sparse' widget window, usually containing multiple frames. + RectPadding sparse_resize; ///< Padding used for a resizeable 'sparse' widget window, usually containing multiple frames. int pressed; ///< Offset for contents of depressed widget. int vsep_picker; ///< Vertical spacing of picker-window widgets. int vsep_normal; ///< Normal vertical spacing. + int vsep_sparse; ///< Normal vertical spacing for 'sparse' widget window. int vsep_wide; ///< Wide vertical spacing. int hsep_normal; ///< Normal horizontal spacing. int hsep_wide; ///< Wide horizontal spacing. From 90bd8e64d8705bd4b822b7fa7ed40ae9a2053925 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 25 Oct 2023 01:07:12 +0100 Subject: [PATCH 09/54] Change: Simplify help window widgets and use sparse padding. --- src/help_gui.cpp | 36 +++++++++++------------------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/src/help_gui.cpp b/src/help_gui.cpp index be28a24de7..4ee33529d0 100644 --- a/src/help_gui.cpp +++ b/src/help_gui.cpp @@ -173,35 +173,21 @@ static const NWidgetPart _nested_helpwin_widgets[] = { EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), - NWidget(NWID_SPACER), SetMinimalSize(0, 8), - - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - - NWidget(NWID_VERTICAL), SetPIP(0, 2, 0), - NWidget(WWT_FRAME, COLOUR_DARK_GREEN), SetDataTip(STR_HELP_WINDOW_WEBSITES, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_WEBSITE), SetDataTip(STR_HELP_WINDOW_MAIN_WEBSITE, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_WIKI), SetDataTip(STR_HELP_WINDOW_MANUAL_WIKI, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_BUGTRACKER), SetDataTip(STR_HELP_WINDOW_BUGTRACKER, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_COMMUNITY), SetDataTip(STR_HELP_WINDOW_COMMUNITY, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + NWidget(WWT_FRAME, COLOUR_DARK_GREEN), SetDataTip(STR_HELP_WINDOW_WEBSITES, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_WEBSITE), SetDataTip(STR_HELP_WINDOW_MAIN_WEBSITE, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_WIKI), SetDataTip(STR_HELP_WINDOW_MANUAL_WIKI, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_BUGTRACKER), SetDataTip(STR_HELP_WINDOW_BUGTRACKER, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_COMMUNITY), SetDataTip(STR_HELP_WINDOW_COMMUNITY, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), - - NWidget(NWID_VERTICAL), SetPIP(0, 2, 0), - NWidget(WWT_FRAME, COLOUR_DARK_GREEN), SetDataTip(STR_HELP_WINDOW_DOCUMENTS, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_README), SetDataTip(STR_HELP_WINDOW_README, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_CHANGELOG), SetDataTip(STR_HELP_WINDOW_CHANGELOG, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_KNOWN_BUGS),SetDataTip(STR_HELP_WINDOW_KNOWN_BUGS, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_LICENSE), SetDataTip(STR_HELP_WINDOW_LICENSE, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), - EndContainer(), + NWidget(WWT_FRAME, COLOUR_DARK_GREEN), SetDataTip(STR_HELP_WINDOW_DOCUMENTS, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_README), SetDataTip(STR_HELP_WINDOW_README, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_CHANGELOG), SetDataTip(STR_HELP_WINDOW_CHANGELOG, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_KNOWN_BUGS),SetDataTip(STR_HELP_WINDOW_KNOWN_BUGS, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_HW_LICENSE), SetDataTip(STR_HELP_WINDOW_LICENSE, STR_NULL), SetMinimalSize(128, 12), SetFill(1, 0), EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(10, 0), EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 8), EndContainer(), }; From 763f0eb1f0af04d8b1210fdf0698fe615656c982 Mon Sep 17 00:00:00 2001 From: Christopher Lee Date: Tue, 7 Nov 2023 16:27:50 -0800 Subject: [PATCH 10/54] Add: LSB_RELEASE_ID Linuxmint to .deb package (#11390) --- cmake/InstallAndPackage.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/InstallAndPackage.cmake b/cmake/InstallAndPackage.cmake index 759f45612c..03eb26ee0d 100644 --- a/cmake/InstallAndPackage.cmake +++ b/cmake/InstallAndPackage.cmake @@ -183,7 +183,7 @@ elseif(UNIX) OUTPUT_STRIP_TRAILING_WHITESPACE ) if(LSB_RELEASE_ID) - if(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian") + if(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian" OR LSB_RELEASE_ID STREQUAL "Linuxmint") execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs OUTPUT_VARIABLE LSB_RELEASE_CODENAME OUTPUT_STRIP_TRAILING_WHITESPACE From 382d7a9076cfcd2d72b07cd37f4e9e12e5e57f28 Mon Sep 17 00:00:00 2001 From: translators Date: Wed, 8 Nov 2023 18:39:05 +0000 Subject: [PATCH 11/54] Update: Translations from eints hungarian: 54 changes by titanicbobo --- src/lang/hungarian.txt | 79 +++++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 71a80eed18..a4c3772ec3 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -254,8 +254,22 @@ STR_COLOUR_WHITE :Fehér STR_COLOUR_RANDOM :Véletlenszerű ###length 17 +STR_COLOUR_SECONDARY_DARK_BLUE :Sötétkék +STR_COLOUR_SECONDARY_PALE_GREEN :Halványzöld +STR_COLOUR_SECONDARY_SECONDARY_PINK :Rózsaszín +STR_COLOUR_SECONDARY_YELLOW :Sárga +STR_COLOUR_SECONDARY_RED :Piros +STR_COLOUR_SECONDARY_LIGHT_BLUE :Világoskék +STR_COLOUR_SECONDARY_GREEN :Zöld +STR_COLOUR_SECONDARY_DARK_GREEN :Sötétzöld +STR_COLOUR_SECONDARY_BLUE :Kék +STR_COLOUR_SECONDARY_CREAM :Krémszín +STR_COLOUR_SECONDARY_MAUVE :Mályvaszín +STR_COLOUR_SECONDARY_PURPLE :Lila STR_COLOUR_SECONDARY_ORANGE :Narancssárga +STR_COLOUR_SECONDARY_BROWN :Barna STR_COLOUR_SECONDARY_GREY :Szürke +STR_COLOUR_SECONDARY_WHITE :Fehér STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Ugyanaz mint az elsődleges @@ -582,6 +596,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Az 'OpenTTD'-r STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite elhelyező STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Befoglaló doboz ki/bekapcsolása STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Koszos épületek színezésének be/kikapcsolása +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Widget körvonalak ki/bekapcsolása # Place in highscore window ###length 15 @@ -674,7 +689,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Működ STR_GRAPH_INCOME_CAPTION :{WHITE}Bevétel grafikon STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Elszállított áruk mennyisége STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Vállalatok teljesítménye (legjobb teljesítmény=1000) -STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vállalatok értéke +STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Vállalatok értéke grafikon STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Rakományok szállítási díja STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}ÚTON TÖLTÖTT NAPOK @@ -917,7 +932,7 @@ STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLAC STR_NEWS_COMPANY_BANKRUPT_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} felszámolásra került a hitelezői által és minden vagyonát elárverezték! STR_NEWS_COMPANY_LAUNCH_TITLE :{BIG_FONT}{BLACK}Új szállítási vállalat alakult! STR_NEWS_COMPANY_LAUNCH_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} {TOWN} közelében kezd építkezni! -STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} felvásárlásra került {STRING} által! +STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLACK}{STRING} felvásárlásra került, egy meg nem nevezett összegért, {STRING} által! STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Elnök) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} támogatásával új várost alapítottak {TOWN} néven! @@ -974,6 +989,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Új {STR STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Ide kattintva megnyílik a járműlista, kijelölve a jármű csoportját +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} többé nem fogad el: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} most már elfogad: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}A támogatás határideje lejárt:{}{}{STRING} szállításáért {STRING} és {STRING} között már nem jár támogatás STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Támogatás visszavonva:{}{}{STRING} szállítása {STRING} és {STRING} között már nem támogatott @@ -1018,6 +1035,7 @@ STR_GAME_OPTIONS_VOLUME_100 :100% STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}Pénznem STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}A használt pénznem kiválasztása +STR_GAME_OPTIONS_CURRENCY_CODE :{STRING} ({STRING}) ###length 42 STR_GAME_OPTIONS_CURRENCY_GBP :Angol Font @@ -1125,12 +1143,12 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}A 60 Hz-nél nagyobb frekvencia befolyással lehet a teljesítményre. STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikus alapcsomag -STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása +STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása (nem módosítható a játékban, csak a főmenüben) STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} hiányzó/hibás fájl STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}További információk a grafikus alapcsomagról STR_GAME_OPTIONS_BASE_SFX :{BLACK}Hang alapcsomag -STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Használandó hang alapcsomag kiválasztása +STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}Használandó hang alapcsomag kiválasztása (nem módosítható a játékban, csak a főmenüben) STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}További információk a hang alapcsomagról STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Zenei alapcsomag @@ -1429,7 +1447,7 @@ STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Minden új utas STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Alapvetően egy jármű megáll minden útjába eső állomáson. Ezzel a beállítással a járművek a következő célpontjukig nem állnak meg egy útjukba eső állomáson sem. Ez a beállítás csak új utasítások esetén működik. Az egyes célpontok viszont beállíthatók másfajta működésmódra is természetesen STR_CONFIG_SETTING_STOP_LOCATION :A vonatok az állomások {STRING} állnak meg új utasításokban -STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :A hely, ahol a vonat az állomási peron mellett alapértelmezetten megáll. Az 'elején' jelentése, hogy a vonat a peron belépéshez legközelebbi pontján fog megállni, 'közepén' jelentése, hogy a vonat a peron közepén fog megállni, 'végén' jelentése, hogy a vonat a peron belépéshez ellentétes végén fog megállni. Ez a beállítás csak egy alapértelmezett értéket jelent új utasítások részére, az egyes utasítások viszont beállíthatóak másfajta működésmódra is természetesen +STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :A hely, ahol a vonat az állomási peron mellett alapértelmezetten megáll. Az 'elején' jelentése, hogy a vonat a peron belépéshez legközelebbi pontján fog megállni, 'közepén' jelentése, hogy a vonat a peron közepén fog megállni, 'végén' jelentése, hogy a vonat a peron belépéshez ellentétes végén fog megállni. Ez a beállítás csak egy alapértelmezett értéket jelent új utasítások részére, az egyes utasítások viszont beállíthatóak másfajta működésmódra is az utasítás szövegére kattintva ###length 3 STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :elején STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :közepén @@ -1633,7 +1651,7 @@ STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :Szürkéről pi STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :Szürkeárnyalat STR_CONFIG_SETTING_SCROLLMODE :A látkép mozgatása: {STRING} -STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :A látkép mozgatásának módja +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :A látkép mozgatásának módja. Az "zárolt egérpozíció" beállítás nem működik minden rendszeren, például webes verziókon, érintőképernyőkön, Linuxon Waylanddel és másokon. ###length 4 STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :A látkép mozgatása jobb egérgombbal, fix kurzorral STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :A térkép mozgatása jobb egérgombbal, fix kurzorral @@ -1815,7 +1833,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Mennyi memóri STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB STR_CONFIG_SETTING_SERVINT_ISPERCENT :Javítási intervallumok százalékban: {STRING} -STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :A járművek javítási módjának kiválasztása, hogy az utolsó javítás óta eltelt idő, vagy a maximális megbízhatósághoz képesti százalékos csökkenés alapján kerüljelek javításra +STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Ha ez engedélyezve van, a járművek megpróbálnak karbantartásra menni, amikor a megbízhatóságuk a maximális megbízhatóság egy adott százalékára csökken.{}{}Például, ha egy jármű maximális megbízhatósága 90%, és a szervizintervallum 20%, akkor a jármű karbantartásra fog menni, amikor eléri a 72%-os megbízhatóságot. STR_CONFIG_SETTING_SERVINT_TRAINS :Alapértelmezett javítási intervallum vonatoknak: {STRING} STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Alapértelmezett javítási intervallum beállítása új vonatoknak, ha nincs külön javítási intervallum beállítva a járműre @@ -1945,8 +1963,8 @@ STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Településekne STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :A városok építhetnek vasúti átjárókat: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Engedélyezve a települések építhetnek vasúti átjárókat -STR_CONFIG_SETTING_NOISE_LEVEL :Település által szabályzott zajszint reptereknek: {STRING} -STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kikapcsolva településenként csak kettő repülőtér építhető. Bekapcsolva a repülőterek száma a település által megengedett zajszinttől függ, ami a lakosságszámtól és a távolságtól függ +STR_CONFIG_SETTING_NOISE_LEVEL :A repülőtér elhelyezésének korlátozása a zajszint alapján: {STRING} +STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kikapcsolva településenként csak kettő repülőtér építhető kivéve, ha a helyi önkormányzat hozzáállása "engedékeny" értékre van állítva. Bekapcsolva a repülőterek száma a település által megengedett zajszinttől függ, ami a lakosságszámtól és a távolságtól függ STR_CONFIG_SETTING_TOWN_FOUNDING :Város alapítása játék közben: {STRING} STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Bekapcsolva a játékosok alapíthatnak új településeket a játék során @@ -2020,7 +2038,7 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :nincs STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Kezdeti városméret-szorzó: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Átlagos városméret a normál településekhez képest a játék kezdetén -STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Kapcsolatgrafikon frissítése minden {STRING}{NBSP}másodpercben{P 0:2 "" s} +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Kapcsolatgrafikon frissítése minden {STRING} STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :A kapcsolatgrafikon következő újrakalkulálása között eltelt idő. Minden újrakalkulálás során egy komponens tervei kerülnek kiszámításra. Ez azt jelenti, hogy az X érték beállítása nem jelenti azt, hogy az egész grafikon X másodpercenként frissül. Csak néhány komponens lesz frissítve. Minél rövidebbre van állítva, annál több CPU időre van szükség a kiszámításhoz. Ha hosszabbra van állítva, akkor hosszabb időbe telik, amíg az áruelosztás elkezdődik az új útvonalakon. STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :A kapcsolatgrafikon újrakalkulálására szánt idő, {STRING} STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :A kapcsolatgrafikon újrakalkulálására szánt idő. Egy újrakalkulálás megkezdésekor létrejön egy új szál ami ennyi másodpercig futhat. Minél rövidebbre állítod ezt a paramétert annál valószínűbb hogy a számítás nem készül el mire kellene. Ha ez megtörténik akkor a játék megáll amíg el nem készül a számítással ("laggol"). Minél hosszabbra állítod ezt az időt annál hosszabb idő telik el az útvonalak változása és az eloszlás frissítése között. @@ -2218,8 +2236,11 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Biztosa STR_HELP_WINDOW_CAPTION :{BLACK}Súgó és útmutatók STR_HELP_WINDOW_WEBSITES :{BLACK}Weboldalak STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumentumok +STR_HELP_WINDOW_README :{BLACK}Olvassel STR_HELP_WINDOW_CHANGELOG :{BLACK}Változtatások listája STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Ismert hibák +STR_HELP_WINDOW_LICENSE :Licenc +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Útmutató / Wiki STR_HELP_WINDOW_BUGTRACKER :{BLACK}Hiba jelentése STR_HELP_WINDOW_COMMUNITY :{BLACK}Közösség @@ -2238,6 +2259,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}A térk STR_CHEAT_CHANGE_DATE :{LTBLUE}Dátum módosítás: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Aktuális év megváltoztatása STR_CHEAT_SETUP_PROD :{LTBLUE}A nyersanyagüzemek termelése változtatható: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Az állomások értékelésének rögzítése 100%-ra: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} színsémája @@ -3007,7 +3029,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}3x3-as h STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Véletlenszerű # Fund new industry window -STR_FUND_INDUSTRY_CAPTION :{WHITE}Új gazdasági épület +STR_FUND_INDUSTRY_CAPTION :{WHITE}Ipar finanszírozása STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Megfelelő gazdasági épülettípus kiválasztása a listából STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Sok véletlen gazdasági épület STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Elhelyez a térképen véletlenszerüen sok gazdasági épületet @@ -3023,14 +3045,14 @@ STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Összes STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Biztosan el akarod távolítani az összes gazdasági épületet? # Industry cargoes window -STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ipari láncolat {STRING} gazdasági épületnek -STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ipari láncolat {STRING} rakománynak +STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ipari láncolat - {STRING} +STR_INDUSTRY_CARGOES_CARGO_CAPTION :{WHITE}Ipari láncolat - {STRING} STR_INDUSTRY_CARGOES_PRODUCERS :{WHITE}Termelő gazdasági épületek STR_INDUSTRY_CARGOES_CUSTOMERS :{WHITE}Elfogadó gazdasági épületek STR_INDUSTRY_CARGOES_HOUSES :{WHITE}Házak STR_INDUSTRY_CARGOES_INDUSTRY_TOOLTIP :{BLACK}Kattints a gazdasági épületre az ellátók és a fogyasztók megjelenítéséhez STR_INDUSTRY_CARGOES_CARGO_TOOLTIP :{BLACK}{STRING}{}Kattints a rakományra az ellátók és a fogyasztók megjelenítéséhez. -STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Láncolat mutatása +STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Ipari láncolat STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Rakományellátó és fogyasztó gazdasági épületek megjelenítése STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Térképre kapcsolás STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}A térképen megjelenített gazdasági épületek kiválasztása @@ -3426,6 +3448,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Mentés STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}A lista mentése a megadott névvel # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Alap grafikai paraméterek módosítása STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF paraméterek megváltoztatása STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Bezárás STR_NEWGRF_PARAMETERS_RESET :{BLACK}Alapértelmezett @@ -3626,8 +3649,8 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{PUSH_COLOUR}{Y STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{PUSH_COLOUR}{YELLOW}A városi úthálózat felújításának támogatása.{}Hat hónapig jelentősen összezavarja a közúti forgalmat.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{PUSH_COLOUR}{YELLOW}Szobor építése a vállalatod tiszteletére.{}Javítja az állomásaid értékelését a városban.{}{POP_COLOUR}Ára: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{PUSH_COLOUR}{YELLOW}Új kereskedelmi épületek építésének támogatása a városban.{}A város egy ideig gyorsabban fog növekedni.{}{POP_COLOUR}Ára: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{PUSH_COLOUR}{YELLOW}Egy éves kizárólagos szállítási jogok vásárlása a városban.{}Az önkormányzat megtiltja az utasoknak és a rakományoknak, hogy más vállalatok állomásait használják.{}{POP_COLOUR}Ára: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}A megítélésed növelése az önkormányzat megvesztegetésével, komoly büntetést kockáztatva, ha az kiderül.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{PUSH_COLOUR}{YELLOW}Egy éves kizárólagos szállítási jogok vásárlása a városban.{}Az önkormányzat megtiltja az utasoknak és a rakományoknak, hogy más vállalatok állomásait használják. Egy versenytárs sikeres megvesztegetése felbontja ezt a szerződést.{}{POP_COLOUR}Ára: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{PUSH_COLOUR}{YELLOW}A megítélésed növelése az önkormányzat megvesztegetésével, komoly büntetést kockáztatva, ha az kiderül.Ezzel megszüntetheted egy versenytársad kizárólagos szállítási jogát is.{}{POP_COLOUR}Ára: {CURRENCY_LONG} # Goal window STR_GOALS_CAPTION :{WHITE}{COMPANY} céljai @@ -3937,16 +3960,16 @@ STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Elérhető rep STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}Lista kezelése STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}A listán szereplő járműveknek utasítás küldése STR_VEHICLE_LIST_REPLACE_VEHICLES :Járművek lecserélése -STR_VEHICLE_LIST_SEND_FOR_SERVICING :Javításra küld +STR_VEHICLE_LIST_SEND_FOR_SERVICING :Javításra küldés STR_VEHICLE_LIST_CREATE_GROUP :Csoport létrehozása STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Idei nyereség: {CURRENCY_LONG} (Tavalyi: {CURRENCY_LONG}) STR_VEHICLE_LIST_CARGO :[{CARGO_LIST}] STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRING} -STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Elküldi járműtelepre -STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Elküldi garázsba -STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Elküldi dokkba -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Elküldi hangárba +STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Elküldés járműtelepre +STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Elküldés garázsba +STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Elküldés dokkba +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Elküldés hangárba STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Kattints ide a listán lévő összes jármű leállításához STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Kattints ide a listán lévő összes jármű elindításához @@ -4661,6 +4684,8 @@ STR_TIMETABLE_EXPECTED :{BLACK}Várhat STR_TIMETABLE_SCHEDULED :{BLACK}Tervezett STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Váltás a várható és a tervezett időpontok között +STR_TIMETABLE_ARRIVAL :Érk: {COLOUR}{DATE_TINY} +STR_TIMETABLE_DEPARTURE :Ind: {COLOUR}{DATE_TINY} # Date window (for timetable) @@ -4697,8 +4722,8 @@ STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Az egyik STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}Az MI / Játékszkript nyomkövetés ablak csak a szerver számára elérhető # AI configuration window -STR_AI_CONFIG_CAPTION_AI :{WHITE}MI Konfigurálás -STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Játékszkript konfiguráció +STR_AI_CONFIG_CAPTION_AI :{WHITE}MI beállítások +STR_AI_CONFIG_CAPTION_GAMESCRIPT :{WHITE}Játékszkript beállítások STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}A következő játékban betöltődő játékszkript STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}A következő játékban betöltődő MI-k STR_AI_CONFIG_HUMAN_PLAYER :Játékos @@ -4748,7 +4773,7 @@ STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Minitér # Script Parameters STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Paraméterek -STR_AI_SETTINGS_CAPTION_AI :{WHITE}MI paraméterei +STR_AI_SETTINGS_CAPTION_AI :MI STR_AI_SETTINGS_CAPTION_GAMESCRIPT :Játékszkript STR_AI_SETTINGS_CLOSE :{BLACK}Bezárás STR_AI_SETTINGS_RESET :{BLACK}Visszaállítás @@ -4758,6 +4783,7 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN # Textfile window STR_TEXTFILE_JUMPLIST :{WHITE}Tartalomjegyzék STR_TEXTFILE_JUMPLIST_TOOLTIP :{BLACK}Ugrás egy fejezetre a jelenlegi fileban ezzel a listával +STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Lépj vissza a navigáció történetben STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Lépj előre a navigáció történetben STR_TEXTFILE_WRAP_TEXT :{WHITE}Szöveg törése @@ -4952,7 +4978,7 @@ STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}Túl sok STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Túl közel van egy másik kikötőhöz STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Túl közel van egy másik repülőtérhez STR_ERROR_CAN_T_RENAME_STATION :{WHITE}Nem nevezheted át az állomást... -STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ez egy városi tulajdonú út +STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... városi tulajdonban lévő út STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... az út a másik irányba vezet STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... áthaladó megállóhelyeken nem lehet kanyar STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... áthaladó megállóhelyeken nem lehet elágazás @@ -5227,6 +5253,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}A járm STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}A járművek csak az állomáson várakozhatnak STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Ez a jármű nem áll meg ezen az állomáson STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... menetrend befejezetlen +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... a menetrend még nincs megkezdve # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... túl sok a felirat @@ -5760,6 +5787,8 @@ STR_JUST_DATE_SHORT :{DATE_SHORT} STR_JUST_DATE_LONG :{DATE_LONG} STR_JUST_DATE_ISO :{DATE_ISO} STR_JUST_STRING :{STRING} +STR_JUST_STRING1 :{STRING} +STR_JUST_STRING2 :{STRING} STR_JUST_STRING_STRING :{STRING}{STRING} STR_JUST_RAW_STRING :{STRING} STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING} From 9f90ab7b04e9bc675ae13357c00ab7621daf0776 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 8 Nov 2023 23:45:08 +0000 Subject: [PATCH 12/54] Codechange: Use rail/road type label constants instead of literals. (#11450) --- src/road_type.h | 3 +++ src/table/railtypes.h | 8 ++++---- src/table/roadtypes.h | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/road_type.h b/src/road_type.h index 172ea83ed4..b0b99b76e1 100644 --- a/src/road_type.h +++ b/src/road_type.h @@ -14,6 +14,9 @@ typedef uint32_t RoadTypeLabel; +static const RoadTypeLabel ROADTYPE_ROAD_LABEL = 'ROAD'; +static const RoadTypeLabel ROADTYPE_TRAM_LABEL = 'ELRL'; + /** * The different roadtypes we support * diff --git a/src/table/railtypes.h b/src/table/railtypes.h index 7346e0470a..2f913d6b2e 100644 --- a/src/table/railtypes.h +++ b/src/table/railtypes.h @@ -90,7 +90,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - 'RAIL', + RAILTYPE_RAIL_LABEL, /* alternate labels */ RailTypeLabelList(), @@ -191,7 +191,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - 'ELRL', + RAILTYPE_ELECTRIC_LABEL, /* alternate labels */ RailTypeLabelList(), @@ -288,7 +288,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - 'MONO', + RAILTYPE_MONO_LABEL, /* alternate labels */ RailTypeLabelList(), @@ -385,7 +385,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - 'MGLV', + RAILTYPE_MAGLEV_LABEL, /* alternate labels */ RailTypeLabelList(), diff --git a/src/table/roadtypes.h b/src/table/roadtypes.h index 7d5e321a77..77813bec08 100644 --- a/src/table/roadtypes.h +++ b/src/table/roadtypes.h @@ -73,7 +73,7 @@ static const RoadTypeInfo _original_roadtypes[] = { 0, /* road type label */ - 'ROAD', + ROADTYPE_ROAD_LABEL, /* alternate labels */ RoadTypeLabelList(), @@ -153,7 +153,7 @@ static const RoadTypeInfo _original_roadtypes[] = { 0, /* road type label */ - 'ELRL', + ROADTYPE_TRAM_LABEL, /* alternate labels */ RoadTypeLabelList(), From 92816ac96b69b5e8027ee0da01ad988e1f968a4a Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 9 Nov 2023 18:37:36 +0000 Subject: [PATCH 13/54] Update: Translations from eints german: 3 changes by SecretIdetity romanian: 6 changes by bnegrut --- src/lang/german.txt | 3 +++ src/lang/romanian.txt | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/lang/german.txt b/src/lang/german.txt index a5c0e25b4e..64a8720d01 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -534,6 +534,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Über OpenTTD STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite-Ausrichtung STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hüllquader anzeigen/ausblenden STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Neugezeichnete Felder farbig markieren +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Widget-Umrisse anzeigen/ausblenden # Place in highscore window ###length 15 @@ -3384,6 +3385,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Speicher STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Voreinstellung unter dem ausgewählten Namen speichern # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Parameter der Basisgrafiken ändern STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF Parameter ändern STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Schließen STR_NEWGRF_PARAMETERS_RESET :{BLACK}Zurücksetzen @@ -5188,6 +5190,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Fahrplan STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Fahrzeuge halten nur an Stationen STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Das Fahrzeug hält nicht an dieser Station STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... Fahrplan ist unvollständig +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... Fahrplan hat noch nicht begonnen # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... zu viele Schilder diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 8cba1351bb..d4c8b9e218 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -533,6 +533,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Despre 'OpenTTD STR_ABOUT_MENU_SPRITE_ALIGNER :Aliniere imagini STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Afişează/ascunde casetele de încadrare STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Comutator pentru colorarea secțiunilor murdare +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Comutați contururile widgetului # Place in highscore window ###length 15 @@ -924,6 +925,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Un nou t STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Deschide fereastra grupului fixată pe grupul vehiculului +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} nu mai acceptă: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} acceptă acum: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Ofertă expirată:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai fi subvenţionat STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Ofertă retrasă:{}{}Transportul de {STRING} de la {STRING} la {STRING} nu va mai fi subvenţionat @@ -2191,6 +2194,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Schimbă STR_CHEAT_CHANGE_DATE :{LTBLUE}Schimbă data: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Schimbă anul curent STR_CHEAT_SETUP_PROD :{LTBLUE}Activează accesul la valorile de producţie: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Remediați evaluările staţiei la 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Schemă de culori @@ -3379,6 +3383,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Salveaz STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salvează setarea pe numele selectat # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Schimbați parametrii grafici de bază STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Schimbă parametrii NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Închide STR_NEWGRF_PARAMETERS_RESET :{BLACK}Resetează @@ -5183,6 +5188,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Nu pot p STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Vehiculele pot aştepta numai în staţii STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Acest vehicul nu are oprire în această staţie STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... orarul este incomplet +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... orarul nu a început încă # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... prea multe semne From 1de1af08b92da6a34b83370d51dedac8d154e0fa Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 9 Nov 2023 19:43:47 +0000 Subject: [PATCH 14/54] Codechange: Replace AllocatedStringParameters with ArrayStringParameters (#11452) All uses of AllocatedStringParameters are with a compile-time fixed constant. Use of a dynamically allocated buffer on the heap is unnecessary and increases overhead, particularly due to frequent use as a temporary. --- src/strings.cpp | 14 +++++++------- src/strings_internal.h | 28 +++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/strings.cpp b/src/strings.cpp index 56f7ed452f..6742f7565e 100644 --- a/src/strings.cpp +++ b/src/strings.cpp @@ -58,7 +58,7 @@ TextDirection _current_text_dir; ///< Text direction of the currently selected l std::unique_ptr _current_collator; ///< Collator for the language currently in use. #endif /* WITH_ICU_I18N */ -AllocatedStringParameters _global_string_params(20); +ArrayStringParameters<20> _global_string_params; /** * Prepare the string parameters for the next formatting run. This means @@ -927,7 +927,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara args.SetTypeOfNextParameter(b); switch (b) { case SCC_ENCODED: { - AllocatedStringParameters sub_args(20); + ArrayStringParameters<20> sub_args; char *p; uint32_t stringid = std::strtoul(str, &p, 16); @@ -1440,7 +1440,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara assert(grffile != nullptr); StartTextRefStackUsage(grffile, 6); - AllocatedStringParameters tmp_params(6); + ArrayStringParameters<6> tmp_params; GetStringWithArgs(builder, GetGRFStringID(grffile->grfid, 0xD000 + callback), tmp_params); StopTextRefStackUsage(); @@ -1448,7 +1448,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } } - auto tmp_params = AllocatedStringParameters(); + auto tmp_params = ArrayStringParameters<0>(); GetStringWithArgs(builder, e->info.string_id, tmp_params); break; } @@ -1478,7 +1478,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara } else if (_scan_for_gender_data) { /* Gender is defined by the industry type. * STR_FORMAT_INDUSTRY_NAME may have the town first, so it would result in the gender of the town name */ - auto tmp_params = AllocatedStringParameters(); + auto tmp_params = ArrayStringParameters<0>(); FormatString(builder, GetStringPtr(GetIndustrySpec(i->type)->name), tmp_params, next_substr_case_index); } else { /* First print the town name and the industry type name. */ @@ -1511,7 +1511,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara /* The station doesn't exist anymore. The only place where we might * be "drawing" an invalid station is in the case of cargo that is * in transit. */ - auto tmp_params = AllocatedStringParameters(); + auto tmp_params = ArrayStringParameters<0>(); GetStringWithArgs(builder, STR_UNKNOWN_STATION, tmp_params); break; } @@ -1612,7 +1612,7 @@ static void FormatString(StringBuilder &builder, const char *str_arg, StringPara auto tmp_params = MakeParameters(si->name); GetStringWithArgs(builder, STR_JUST_RAW_STRING, tmp_params); } else { - auto tmp_params = AllocatedStringParameters(); + auto tmp_params = ArrayStringParameters<0>(); GetStringWithArgs(builder, STR_DEFAULT_SIGN_NAME, tmp_params); } break; diff --git a/src/strings_internal.h b/src/strings_internal.h index f5648d3d39..75168ad78b 100644 --- a/src/strings_internal.h +++ b/src/strings_internal.h @@ -198,17 +198,35 @@ public: }; /** - * Extension of StringParameters with its own statically allocated buffer for + * Extension of StringParameters with its own statically sized buffer for * the parameters. */ -class AllocatedStringParameters : public StringParameters { - std::vector params; ///< The actual parameters +template +class ArrayStringParameters : public StringParameters { + std::array params{}; ///< The actual parameters public: - AllocatedStringParameters(size_t parameters = 0) : params(parameters) + ArrayStringParameters() { this->parameters = span(params.data(), params.size()); } + + ArrayStringParameters(ArrayStringParameters&& other) noexcept + { + *this = std::move(other); + } + + ArrayStringParameters& operator=(ArrayStringParameters &&other) noexcept + { + this->offset = other.offset; + this->next_type = other.next_type; + this->params = std::move(other.params); + this->parameters = span(params.data(), params.size()); + return *this; + } + + ArrayStringParameters(const ArrayStringParameters& other) = delete; + ArrayStringParameters& operator=(const ArrayStringParameters &other) = delete; }; /** @@ -220,7 +238,7 @@ public: template static auto MakeParameters(const Args&... args) { - AllocatedStringParameters parameters(sizeof...(args)); + ArrayStringParameters parameters; size_t index = 0; (parameters.SetParam(index++, std::forward(args)), ...); return parameters; From d4008850e3324e9d5d83d922b4a123684d5079a9 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 9 Nov 2023 19:20:41 +0000 Subject: [PATCH 15/54] Codechange: Ensure function opening `{` is on new line. --- src/core/format.hpp | 12 ++++++++---- src/error_gui.cpp | 3 ++- src/gfx_layout_icu.cpp | 3 ++- src/linkgraph/linkgraph_gui.cpp | 3 ++- src/misc/endian_buffer.hpp | 6 ++++-- src/music/dmusic.cpp | 3 ++- src/music/music_driver.hpp | 3 ++- src/news_gui.cpp | 3 ++- src/os/unix/unix.cpp | 3 ++- src/os/windows/font_win32.cpp | 3 ++- src/road_gui.cpp | 9 ++++++--- src/script/squirrel_helper.hpp | 3 ++- src/settings_type.h | 3 ++- src/sound/sound_driver.hpp | 3 ++- src/spritecache.cpp | 3 ++- src/station.cpp | 3 ++- src/timer/timer_manager.h | 12 ++++++++---- src/toolbar_gui.cpp | 3 ++- src/town.h | 3 ++- src/video/video_driver.hpp | 6 ++++-- src/water_cmd.cpp | 3 ++- src/window_gui.h | 3 ++- 22 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/core/format.hpp b/src/core/format.hpp index a94c1580eb..d0267e4394 100644 --- a/src/core/format.hpp +++ b/src/core/format.hpp @@ -18,11 +18,13 @@ struct fmt::formatter::value>> : fmt:: using underlying_type = typename std::underlying_type::type; using parent = typename fmt::formatter; - constexpr fmt::format_parse_context::iterator parse(fmt::format_parse_context &ctx) { + constexpr fmt::format_parse_context::iterator parse(fmt::format_parse_context &ctx) + { return parent::parse(ctx); } - fmt::format_context::iterator format(const E &e, format_context &ctx) const { + fmt::format_context::iterator format(const E &e, format_context &ctx) const + { return parent::format(underlying_type(e), ctx); } }; @@ -32,11 +34,13 @@ struct fmt::formatter; - constexpr fmt::format_parse_context::iterator parse(fmt::format_parse_context &ctx) { + constexpr fmt::format_parse_context::iterator parse(fmt::format_parse_context &ctx) + { return parent::parse(ctx); } - fmt::format_context::iterator format(const T &t, format_context &ctx) const { + fmt::format_context::iterator format(const T &t, format_context &ctx) const + { return parent::format(t.base(), ctx); } }; diff --git a/src/error_gui.cpp b/src/error_gui.cpp index cb8e800afc..5e3a42a0d4 100644 --- a/src/error_gui.cpp +++ b/src/error_gui.cpp @@ -444,7 +444,8 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel * Close active error message window * @return true if a window was closed. */ -bool HideActiveErrorMessage() { +bool HideActiveErrorMessage() +{ ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0); if (w == nullptr) return false; w->Close(); diff --git a/src/gfx_layout_icu.cpp b/src/gfx_layout_icu.cpp index bd93842b8a..83dbf2584d 100644 --- a/src/gfx_layout_icu.cpp +++ b/src/gfx_layout_icu.cpp @@ -154,7 +154,8 @@ ICUParagraphLayout::ICUVisualRun::ICUVisualRun(const ICURun &run, int x) : * @param buff The buffer of which a partial (depending on start/length of the run) will be shaped. * @param length The length of the buffer. */ -void ICURun::Shape(UChar *buff, size_t buff_length) { +void ICURun::Shape(UChar *buff, size_t buff_length) +{ auto hbfont = hb_ft_font_create_referenced(*(static_cast(font->fc->GetOSHandle()))); hb_font_set_scale(hbfont, this->font->fc->GetFontSize() * FONT_SCALE, this->font->fc->GetFontSize() * FONT_SCALE); diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index 2fb08618d2..23bcd1b852 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -569,7 +569,8 @@ LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc *desc, int window_number * Set the overlay belonging to this menu and import its company/cargo settings. * @param overlay New overlay for this menu. */ -void LinkGraphLegendWindow::SetOverlay(std::shared_ptr overlay) { +void LinkGraphLegendWindow::SetOverlay(std::shared_ptr overlay) +{ this->overlay = overlay; CompanyMask companies = this->overlay->GetCompanyMask(); for (uint c = 0; c < MAX_COMPANIES; c++) { diff --git a/src/misc/endian_buffer.hpp b/src/misc/endian_buffer.hpp index 17cb576878..749657786c 100644 --- a/src/misc/endian_buffer.hpp +++ b/src/misc/endian_buffer.hpp @@ -72,7 +72,8 @@ public: private: /** Helper function to write a tuple to the buffer. */ template - void WriteTuple(const Ttuple &values, std::index_sequence) { + void WriteTuple(const Ttuple &values, std::index_sequence) + { ((*this << std::get(values)), ...); } @@ -165,7 +166,8 @@ public: private: /** Helper function to read a tuple from the buffer. */ template - void ReadTuple(Ttuple &values, std::index_sequence) { + void ReadTuple(Ttuple &values, std::index_sequence) + { ((*this >> std::get(values)), ...); } diff --git a/src/music/dmusic.cpp b/src/music/dmusic.cpp index a528d8063b..d180886a38 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -71,7 +71,8 @@ struct DLSFile { WSMPL wave_sample; std::vector wave_loops; - bool operator ==(long offset) const { + bool operator ==(long offset) const + { return this->file_offset == offset; } }; diff --git a/src/music/music_driver.hpp b/src/music/music_driver.hpp index 3953685bf0..f8aff0e716 100644 --- a/src/music/music_driver.hpp +++ b/src/music/music_driver.hpp @@ -43,7 +43,8 @@ public: /** * Get the currently active instance of the music driver. */ - static MusicDriver *GetInstance() { + static MusicDriver *GetInstance() + { return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_MUSIC)); } }; diff --git a/src/news_gui.cpp b/src/news_gui.cpp index 7f461ce406..be3c73ad02 100644 --- a/src/news_gui.cpp +++ b/src/news_gui.cpp @@ -1043,7 +1043,8 @@ static void ShowNewsMessage(const NewsItem *ni) * Close active news message window * @return true if a window was closed. */ -bool HideActiveNewsMessage() { +bool HideActiveNewsMessage() +{ NewsWindow *w = (NewsWindow*)FindWindowById(WC_NEWS_WINDOW, 0); if (w == nullptr) return false; w->Close(); diff --git a/src/os/unix/unix.cpp b/src/os/unix/unix.cpp index b178581529..ee4d0b7e15 100644 --- a/src/os/unix/unix.cpp +++ b/src/os/unix/unix.cpp @@ -251,7 +251,8 @@ void OSOpenBrowser(const char *url) } #endif /* __APPLE__ */ -void SetCurrentThreadName([[maybe_unused]] const char *threadName) { +void SetCurrentThreadName([[maybe_unused]] const char *threadName) +{ #if defined(__GLIBC__) if (threadName) pthread_setname_np(pthread_self(), threadName); #endif /* defined(__GLIBC__) */ diff --git a/src/os/windows/font_win32.cpp b/src/os/windows/font_win32.cpp index 466ef1c01d..ddc275fc45 100644 --- a/src/os/windows/font_win32.cpp +++ b/src/os/windows/font_win32.cpp @@ -38,7 +38,8 @@ struct EFCParam { MissingGlyphSearcher *callback; std::vector fonts; - bool Add(const std::wstring_view &font) { + bool Add(const std::wstring_view &font) + { for (const auto &entry : this->fonts) { if (font.compare(entry) == 0) return false; } diff --git a/src/road_gui.cpp b/src/road_gui.cpp index 2f606cf131..a9aa238df8 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -1395,7 +1395,8 @@ public: /** * Simply to have a easier way to get the StationType for bus, truck and trams from the WindowClass. */ - StationType GetRoadStationTypeByWindowClass(WindowClass window_class) const { + StationType GetRoadStationTypeByWindowClass(WindowClass window_class) const + { switch (window_class) { case WC_BUS_STATION: return STATION_BUS; case WC_TRUCK_STATION: return STATION_TRUCK; @@ -1475,13 +1476,15 @@ public: } } - void OnResize() override { + void OnResize() override + { if (this->vscrollList != nullptr) { this->vscrollList->SetCapacityFromWidget(this, WID_BROS_NEWST_LIST); } } - void SetStringParameters(int widget) const override { + void SetStringParameters(int widget) const override + { if (widget == WID_BROS_SHOW_NEWST_TYPE) { const RoadStopSpec *roadstopspec = RoadStopClass::Get(_roadstop_gui_settings.roadstop_class)->GetSpec(_roadstop_gui_settings.roadstop_type); SetDParam(0, (roadstopspec != nullptr && roadstopspec->name != 0) ? roadstopspec->name : STR_STATION_CLASS_DFLT_ROADSTOP); diff --git a/src/script/squirrel_helper.hpp b/src/script/squirrel_helper.hpp index cff129c6d2..3adf637500 100644 --- a/src/script/squirrel_helper.hpp +++ b/src/script/squirrel_helper.hpp @@ -45,7 +45,8 @@ namespace SQConvert { template <> struct Return { static inline int Set(HSQUIRRELVM vm, HSQOBJECT res) { sq_pushobject(vm, res); return 1; } }; template <> struct Return> { - static inline int Set(HSQUIRRELVM vm, std::optional res) { + static inline int Set(HSQUIRRELVM vm, std::optional res) + { if (res.has_value()) { sq_pushstring(vm, res.value(), -1); } else { diff --git a/src/settings_type.h b/src/settings_type.h index b345caae11..0c8b963f07 100644 --- a/src/settings_type.h +++ b/src/settings_type.h @@ -563,7 +563,8 @@ struct LinkGraphSettings { uint8_t demand_distance; ///< influence of distance between stations on the demand function uint8_t short_path_saturation; ///< percentage up to which short paths are saturated before saturating most capacious paths - inline DistributionType GetDistributionType(CargoID cargo) const { + inline DistributionType GetDistributionType(CargoID cargo) const + { if (IsCargoInClass(cargo, CC_PASSENGERS)) return this->distribution_pax; if (IsCargoInClass(cargo, CC_MAIL)) return this->distribution_mail; if (IsCargoInClass(cargo, CC_ARMOURED)) return this->distribution_armoured; diff --git a/src/sound/sound_driver.hpp b/src/sound/sound_driver.hpp index 062e7704d5..300433e5ae 100644 --- a/src/sound/sound_driver.hpp +++ b/src/sound/sound_driver.hpp @@ -32,7 +32,8 @@ public: /** * Get the currently active instance of the sound driver. */ - static SoundDriver *GetInstance() { + static SoundDriver *GetInstance() + { return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_SOUND)); } }; diff --git a/src/spritecache.cpp b/src/spritecache.cpp index 2cb32eb6c8..e840045ca9 100644 --- a/src/spritecache.cpp +++ b/src/spritecache.cpp @@ -64,7 +64,8 @@ SpriteCache *AllocateSpriteCache(uint index) * @param filename The name of the file at the disk. * @return The SpriteFile or \c null. */ -static SpriteFile *GetCachedSpriteFileByName(const std::string &filename) { +static SpriteFile *GetCachedSpriteFileByName(const std::string &filename) +{ for (auto &f : _sprite_files) { if (f->GetFilename() == filename) { return f.get(); diff --git a/src/station.cpp b/src/station.cpp index 99957cd2f1..4abc2de378 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -413,7 +413,8 @@ void Station::AddIndustryToDeliver(Industry *ind, TileIndex tile) * Remove nearby industry from station's industries_near list. * @param ind Industry */ -void Station::RemoveIndustryToDeliver(Industry *ind) { +void Station::RemoveIndustryToDeliver(Industry *ind) +{ auto pos = std::find_if(this->industries_near.begin(), this->industries_near.end(), [&](const IndustryListEntry &e) { return e.industry->index == ind->index; }); if (pos != this->industries_near.end()) { this->industries_near.erase(pos); diff --git a/src/timer/timer_manager.h b/src/timer/timer_manager.h index 8d62675988..ca87ec4edc 100644 --- a/src/timer/timer_manager.h +++ b/src/timer/timer_manager.h @@ -38,7 +38,8 @@ public: * * @param timer The timer to register. */ - static void RegisterTimer(BaseTimer &timer) { + static void RegisterTimer(BaseTimer &timer) + { #ifdef WITH_ASSERT Validate(timer.period); #endif /* WITH_ASSERT */ @@ -50,7 +51,8 @@ public: * * @param timer The timer to unregister. */ - static void UnregisterTimer(BaseTimer &timer) { + static void UnregisterTimer(BaseTimer &timer) + { GetTimers().erase(&timer); } @@ -87,14 +89,16 @@ private: * same, it will sort based on the pointer value. */ struct base_timer_sorter { - bool operator() (BaseTimer *a, BaseTimer *b) const { + bool operator() (BaseTimer *a, BaseTimer *b) const + { if (a->period == b->period) return a < b; return a->period < b->period; } }; /** Singleton list, to store all the active timers. */ - static std::set *, base_timer_sorter> &GetTimers() { + static std::set *, base_timer_sorter> &GetTimers() + { static std::set *, base_timer_sorter> timers; return timers; } diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 8919c99dac..25032ae136 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -690,7 +690,8 @@ static const int LTMN_PERFORMANCE_LEAGUE = -7; ///< Show default league t static const int LTMN_PERFORMANCE_RATING = -8; ///< Show detailed performance rating static const int LTMN_HIGHSCORE = -9; ///< Show highscrore table -static void AddDropDownLeagueTableOptions(DropDownList &list) { +static void AddDropDownLeagueTableOptions(DropDownList &list) +{ if (LeagueTable::GetNumItems() > 0) { for (LeagueTable *lt : LeagueTable::Iterate()) { list.push_back(std::make_unique(lt->title, lt->index, false)); diff --git a/src/town.h b/src/town.h index 5b400217b6..dd88d03323 100644 --- a/src/town.h +++ b/src/town.h @@ -304,7 +304,8 @@ void MakeDefaultName(T *obj) * Converts original town ticks counters to plain game ticks. Note that * tick 0 is a valid tick so actual amount is one more than the counter value. */ -static inline uint16_t TownTicksToGameTicks(uint16_t ticks) { +static inline uint16_t TownTicksToGameTicks(uint16_t ticks) +{ return (std::min(ticks, MAX_TOWN_GROWTH_TICKS) + 1) * Ticks::TOWN_GROWTH_TICKS - 1; } diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp index 32f1582e71..24b6232e29 100644 --- a/src/video/video_driver.hpp +++ b/src/video/video_driver.hpp @@ -197,7 +197,8 @@ public: /** * Get the currently active instance of the video driver. */ - static VideoDriver *GetInstance() { + static VideoDriver *GetInstance() + { return static_cast(*DriverFactoryBase::GetActiveDriver(Driver::DT_VIDEO)); } @@ -260,7 +261,8 @@ protected: * Make sure the video buffer is ready for drawing. * @returns True if the video buffer has to be unlocked. */ - virtual bool LockVideoBuffer() { + virtual bool LockVideoBuffer() + { return false; } diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 15e24734ba..2e78c2df56 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -434,7 +434,8 @@ bool RiverModifyDesertZone(TileIndex tile, void *) * Make a river tile and remove desert directly around it. * @param tile The tile to change into river and create non-desert around */ -void MakeRiverAndModifyDesertZoneAround(TileIndex tile) { +void MakeRiverAndModifyDesertZoneAround(TileIndex tile) +{ MakeRiver(tile, Random()); MarkTileDirtyByTile(tile); diff --git a/src/window_gui.h b/src/window_gui.h index f78cc0d907..400e2ed180 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -483,7 +483,8 @@ public: * @param widgets list of widgets */ template - void RaiseWidgetsWhenLowered(Args... widgets) { + void RaiseWidgetsWhenLowered(Args... widgets) + { (this->RaiseWidgetWhenLowered(widgets), ...); } From 938c8339d2939b989fd6fa614be1284e361851da Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 9 Nov 2023 19:23:26 +0000 Subject: [PATCH 16/54] Codechange: Ensure space between `for`/`if` and `(`. --- src/league_gui.cpp | 2 +- src/order_gui.cpp | 2 +- src/rail_cmd.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/league_gui.cpp b/src/league_gui.cpp index 3998f2e571..a1c64a6c8f 100644 --- a/src/league_gui.cpp +++ b/src/league_gui.cpp @@ -278,7 +278,7 @@ private: this->title = lt->title; std::vector elements; - for(LeagueTableElement *lte : LeagueTableElement::Iterate()) { + for (LeagueTableElement *lte : LeagueTableElement::Iterate()) { if (lte->table == this->table) { elements.push_back(lte); } diff --git a/src/order_gui.cpp b/src/order_gui.cpp index 0335ff4d68..0bf8857efd 100644 --- a/src/order_gui.cpp +++ b/src/order_gui.cpp @@ -792,7 +792,7 @@ public: if (_settings_client.gui.quick_goto && v->owner == _local_company) { /* If there are less than 2 station, make Go To active. */ int station_orders = 0; - for(const Order *order : v->Orders()) { + for (const Order *order : v->Orders()) { if (order->IsType(OT_GOTO_STATION)) station_orders++; } diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index d4dd2fe65d..2689f7f170 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -1372,7 +1372,7 @@ static CommandCost CmdSignalTrackHelper(DoCommandFlag flags, TileIndex tile, Til last_suitable_trackdir = trackdir; } } - } else if(signal_ctr >= last_used_ctr + signal_density) { + } else if (signal_ctr >= last_used_ctr + signal_density) { /* We're always keeping regular interval between signals so doesn't matter whether we succeed or not. */ build_signal(tile, trackdir, false); last_used_ctr = signal_ctr; @@ -1396,7 +1396,7 @@ static CommandCost CmdSignalTrackHelper(DoCommandFlag flags, TileIndex tile, Til /* To keep regular interval we need to emulate placing signals on a bridge. * We start with TILE_AXIAL_DISTANCE as one bridge tile gets processed in the main loop. */ signal_ctr += TILE_AXIAL_DISTANCE; - for(uint i = TILE_AXIAL_DISTANCE; i < len; i += TILE_AXIAL_DISTANCE) { + for (uint i = TILE_AXIAL_DISTANCE; i < len; i += TILE_AXIAL_DISTANCE) { if (signal_ctr >= last_used_ctr + signal_density) last_used_ctr = signal_ctr; signal_ctr += TILE_AXIAL_DISTANCE; } From 1071acb4831be15b1e671bec15bee058b5bef6f9 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 10 Nov 2023 00:17:36 +0000 Subject: [PATCH 17/54] Codechange: Redundant use of char * and c_str(). (#11454) --- src/base_media_base.h | 8 ++++---- src/base_station_base.h | 6 +++--- src/os/macosx/font_osx.cpp | 2 +- src/script/script_instance.cpp | 2 +- src/settings.cpp | 2 +- src/strgen/strgen.cpp | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/base_media_base.h b/src/base_media_base.h index 0875996103..6321b48339 100644 --- a/src/base_media_base.h +++ b/src/base_media_base.h @@ -106,19 +106,19 @@ struct BaseSet { * @param isocode the isocode to search for * @return the description */ - const char *GetDescription(const std::string &isocode) const + const std::string &GetDescription(const std::string &isocode) const { if (!isocode.empty()) { /* First the full ISO code */ auto desc = this->description.find(isocode); - if (desc != this->description.end()) return desc->second.c_str(); + if (desc != this->description.end()) return desc->second; /* Then the first two characters */ desc = this->description.find(isocode.substr(0, 2)); - if (desc != this->description.end()) return desc->second.c_str(); + if (desc != this->description.end()) return desc->second; } /* Then fall back */ - return this->description.at(std::string{}).c_str(); + return this->description.at(std::string{}); } /** diff --git a/src/base_station_base.h b/src/base_station_base.h index 5a76744a17..82b6c967b2 100644 --- a/src/base_station_base.h +++ b/src/base_station_base.h @@ -125,11 +125,11 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> { */ virtual void UpdateVirtCoord() = 0; - inline const char *GetCachedName() const + inline const std::string &GetCachedName() const { - if (!this->name.empty()) return this->name.c_str(); + if (!this->name.empty()) return this->name; if (this->cached_name.empty()) this->FillCachedName(); - return this->cached_name.c_str(); + return this->cached_name; } virtual void MoveSign(TileIndex new_xy) diff --git a/src/os/macosx/font_osx.cpp b/src/os/macosx/font_osx.cpp index 2eed279c1d..a9fad3764a 100644 --- a/src/os/macosx/font_osx.cpp +++ b/src/os/macosx/font_osx.cpp @@ -326,7 +326,7 @@ void LoadCoreTextFont(FontSize fs) path.reset(CFStringCreateWithCString(kCFAllocatorDefault, settings->font.c_str(), kCFStringEncodingUTF8)); } else { /* Scan the search-paths to see if it can be found. */ - std::string full_font = FioFindFullPath(BASE_DIR, settings->font.c_str()); + std::string full_font = FioFindFullPath(BASE_DIR, settings->font); if (!full_font.empty()) { path.reset(CFStringCreateWithCString(kCFAllocatorDefault, full_font.c_str(), kCFStringEncodingUTF8)); } diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp index 84a9ee3a70..42d536b028 100644 --- a/src/script/script_instance.cpp +++ b/src/script/script_instance.cpp @@ -46,7 +46,7 @@ ScriptStorage::~ScriptStorage() static void PrintFunc(bool error_msg, const std::string &message) { /* Convert to OpenTTD internal capable string */ - ScriptController::Print(error_msg, message.c_str()); + ScriptController::Print(error_msg, message); } ScriptInstance::ScriptInstance(const char *APIName) : diff --git a/src/settings.cpp b/src/settings.cpp index bbf603413a..5e8c0b266f 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1552,7 +1552,7 @@ void DeleteGRFPresetFromConfig(const char *config_name) section += config_name; ConfigIniFile ini(_config_file); - ini.RemoveGroup(section.c_str()); + ini.RemoveGroup(section); ini.SaveToDisk(_config_file); } diff --git a/src/strgen/strgen.cpp b/src/strgen/strgen.cpp index ce8f98517f..49ca24087e 100644 --- a/src/strgen/strgen.cpp +++ b/src/strgen/strgen.cpp @@ -79,7 +79,7 @@ struct FileStringReader : StringReader { * @param translation Are we reading a translation? */ FileStringReader(StringData &data, const std::filesystem::path &file, bool master, bool translation) : - StringReader(data, file.generic_string().c_str(), master, translation) + StringReader(data, file.generic_string(), master, translation) { this->input_stream.open(file, std::ifstream::binary); } From bd2ddb07ca4ffff782a680177475d82dfe83acbc Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 10 Nov 2023 12:25:56 +0000 Subject: [PATCH 18/54] Change: Move baseset missing/corrupted files label to list item. (#11455) This allows any baseset error to be displayed in the drop down list so it is more easily visible, and avoids wasted space in the layout. --- src/base_media_base.h | 15 +++++++++++ src/lang/english.txt | 4 +-- src/settings_gui.cpp | 49 +++++------------------------------ src/settings_gui.h | 2 +- src/widgets/settings_widget.h | 2 -- 5 files changed, 24 insertions(+), 48 deletions(-) diff --git a/src/base_media_base.h b/src/base_media_base.h index 6321b48339..f52abaefce 100644 --- a/src/base_media_base.h +++ b/src/base_media_base.h @@ -121,6 +121,21 @@ struct BaseSet { return this->description.at(std::string{}); } + /** + * Get string to use when listing this set in the settings window. + * If there are no invalid files, then this is just the set name, + * otherwise a string is formatted including the number of invalid files. + * @return the string to display. + */ + std::string GetListLabel() const + { + if (this->GetNumInvalid() == 0) return this->name; + + SetDParamStr(0, this->name); + SetDParam(1, this->GetNumInvalid()); + return GetString(STR_BASESET_STATUS); + } + /** * Calculate and check the MD5 hash of the supplied file. * @param file The file get the hash of. diff --git a/src/lang/english.txt b/src/lang/english.txt index baa40974e6..27c0d81b5b 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Refresh STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use (cannot be changed in-game, only from the main menu) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base graphics set STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base sounds set @@ -1089,9 +1088,10 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addition STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base music set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_BASESET_STATUS :{RAW_STRING} {RED}({NUM} missing/corrupted file{P "" s}) + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 3d54c5ee3d..adbdba7437 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -327,11 +327,9 @@ struct GameOptionsWindow : Window { break; } case WID_GO_LANG_DROPDOWN: SetDParamStr(0, _current_language->own_name); break; - case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->name); break; - case WID_GO_BASE_GRF_STATUS: SetDParam(0, BaseGraphics::GetUsedSet()->GetNumInvalid()); break; - case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->name); break; - case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->name); break; - case WID_GO_BASE_MUSIC_STATUS: SetDParam(0, BaseMusic::GetUsedSet()->GetNumInvalid()); break; + case WID_GO_BASE_GRF_DROPDOWN: SetDParamStr(0, BaseGraphics::GetUsedSet()->GetListLabel()); break; + case WID_GO_BASE_SFX_DROPDOWN: SetDParamStr(0, BaseSounds::GetUsedSet()->GetListLabel()); break; + case WID_GO_BASE_MUSIC_DROPDOWN: SetDParamStr(0, BaseMusic::GetUsedSet()->GetListLabel()); break; case WID_GO_REFRESH_RATE_DROPDOWN: SetDParam(0, _settings_client.gui.refresh_rate); break; case WID_GO_RESOLUTION_DROPDOWN: { auto current_resolution = GetCurrentResolutionIndex(); @@ -436,28 +434,6 @@ struct GameOptionsWindow : Window { void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override { switch (widget) { - case WID_GO_BASE_GRF_STATUS: - /* Find the biggest description for the default size. */ - for (int i = 0; i < BaseGraphics::GetNumSets(); i++) { - uint invalid_files = BaseGraphics::GetSet(i)->GetNumInvalid(); - if (invalid_files == 0) continue; - - SetDParam(0, invalid_files); - *size = maxdim(*size, GetStringBoundingBox(STR_GAME_OPTIONS_BASE_GRF_STATUS)); - } - break; - - case WID_GO_BASE_MUSIC_STATUS: - /* Find the biggest description for the default size. */ - for (int i = 0; i < BaseMusic::GetNumSets(); i++) { - uint invalid_files = BaseMusic::GetSet(i)->GetNumInvalid(); - if (invalid_files == 0) continue; - - SetDParam(0, invalid_files); - *size = maxdim(*size, GetStringBoundingBox(STR_GAME_OPTIONS_BASE_MUSIC_STATUS)); - } - break; - case WID_GO_TEXT_SFX_VOLUME: case WID_GO_TEXT_MUSIC_VOLUME: { Dimension d = maxdim(GetStringBoundingBox(STR_GAME_OPTIONS_SFX_VOLUME), GetStringBoundingBox(STR_GAME_OPTIONS_MUSIC_VOLUME)); @@ -751,9 +727,6 @@ struct GameOptionsWindow : Window { this->SetWidgetDisabledState(WID_GO_BASE_GRF_DROPDOWN, _game_mode != GM_MENU); this->SetWidgetDisabledState(WID_GO_BASE_SFX_DROPDOWN, _game_mode != GM_MENU); - bool missing_files = BaseGraphics::GetUsedSet()->GetNumMissing() == 0; - this->GetWidget(WID_GO_BASE_GRF_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_GRF_STATUS, STR_NULL); - this->SetWidgetDisabledState(WID_GO_BASE_GRF_PARAMETERS, BaseGraphics::GetUsedSet() == nullptr || !BaseGraphics::GetUsedSet()->IsConfigurable()); for (TextfileType tft = TFT_CONTENT_BEGIN; tft < TFT_CONTENT_END; tft++) { @@ -761,9 +734,6 @@ struct GameOptionsWindow : Window { this->SetWidgetDisabledState(WID_GO_BASE_SFX_TEXTFILE + tft, BaseSounds::GetUsedSet() == nullptr || !BaseSounds::GetUsedSet()->GetTextfile(tft).has_value()); this->SetWidgetDisabledState(WID_GO_BASE_MUSIC_TEXTFILE + tft, BaseMusic::GetUsedSet() == nullptr || !BaseMusic::GetUsedSet()->GetTextfile(tft).has_value()); } - - missing_files = BaseMusic::GetUsedSet()->GetNumInvalid() == 0; - this->GetWidget(WID_GO_BASE_MUSIC_STATUS)->SetDataTip(missing_files ? STR_EMPTY : STR_GAME_OPTIONS_BASE_MUSIC_STATUS, STR_NULL); } }; @@ -865,8 +835,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_STATUS), SetMinimalSize(100, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_PARAMETERS), SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL), EndContainer(), NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(200, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), @@ -894,10 +863,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_SFX, STR_NULL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 7), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(100, 12), SetFill(1, 0), - EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP), SetFill(1, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_SFX_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_SFX_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), @@ -907,10 +873,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 7), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_MUSIC_STATUS), SetMinimalSize(100, 12), SetDataTip(STR_EMPTY, STR_NULL), SetFill(1, 0), - EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP), SetFill(1, 0), NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 7), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_MUSIC_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), NWidget(NWID_VERTICAL), SetPIP(0, 0, 0), diff --git a/src/settings_gui.h b/src/settings_gui.h index f4352f4fbd..335dd65285 100644 --- a/src/settings_gui.h +++ b/src/settings_gui.h @@ -29,7 +29,7 @@ DropDownList BuildSetDropDownList(int *selected_index) *selected_index = T::GetIndexOfUsedSet(); DropDownList list; for (int i = 0; i < n; i++) { - list.push_back(std::make_unique(T::GetSet(i)->name, i, false)); + list.push_back(std::make_unique(T::GetSet(i)->GetListLabel(), i, false)); } return list; } diff --git a/src/widgets/settings_widget.h b/src/widgets/settings_widget.h index 58541546d5..816512105c 100644 --- a/src/widgets/settings_widget.h +++ b/src/widgets/settings_widget.h @@ -27,7 +27,6 @@ enum GameOptionsWidgets { WID_GO_GUI_SCALE_BEVEL_BUTTON, ///< Toggle for chunky bevels. WID_GO_BASE_GRF_DROPDOWN, ///< Use to select a base GRF. WID_GO_BASE_GRF_PARAMETERS, ///< Base GRF parameters. - WID_GO_BASE_GRF_STATUS, ///< Info about missing files etc. WID_GO_BASE_GRF_TEXTFILE, ///< Open base GRF readme, changelog (+1) or license (+2). WID_GO_BASE_GRF_DESCRIPTION = WID_GO_BASE_GRF_TEXTFILE + TFT_CONTENT_END, ///< Description of selected base GRF. WID_GO_BASE_SFX_DROPDOWN, ///< Use to select a base SFX. @@ -39,7 +38,6 @@ enum GameOptionsWidgets { WID_GO_TEXT_MUSIC_VOLUME, ///< Music volume label. WID_GO_BASE_MUSIC_VOLUME, ///< Change music volume. WID_GO_BASE_MUSIC_JUKEBOX, ///< Open the jukebox. - WID_GO_BASE_MUSIC_STATUS, ///< Info about corrupted files etc. WID_GO_BASE_MUSIC_TEXTFILE, ///< Open base music readme, changelog (+1) or license (+2). WID_GO_BASE_MUSIC_DESCRIPTION = WID_GO_BASE_MUSIC_TEXTFILE + TFT_CONTENT_END, ///< Description of selected base music set. WID_GO_VIDEO_ACCEL_BUTTON, ///< Toggle for video acceleration. From ef1abbcd1f73f736771c0139266c906316ba0887 Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 10 Nov 2023 18:38:29 +0000 Subject: [PATCH 19/54] Update: Translations from eints --- src/lang/afrikaans.txt | 3 +-- src/lang/arabic_egypt.txt | 3 +-- src/lang/basque.txt | 3 +-- src/lang/belarusian.txt | 3 +-- src/lang/brazilian_portuguese.txt | 3 +-- src/lang/bulgarian.txt | 3 +-- src/lang/catalan.txt | 3 +-- src/lang/chuvash.txt | 1 + src/lang/croatian.txt | 3 +-- src/lang/czech.txt | 3 +-- src/lang/danish.txt | 3 +-- src/lang/dutch.txt | 3 +-- src/lang/english_AU.txt | 3 +-- src/lang/english_US.txt | 3 +-- src/lang/esperanto.txt | 3 +-- src/lang/estonian.txt | 3 +-- src/lang/faroese.txt | 3 +-- src/lang/finnish.txt | 3 +-- src/lang/french.txt | 3 +-- src/lang/frisian.txt | 3 +-- src/lang/gaelic.txt | 3 +-- src/lang/galician.txt | 3 +-- src/lang/german.txt | 3 +-- src/lang/greek.txt | 3 +-- src/lang/hebrew.txt | 3 +-- src/lang/hindi.txt | 1 + src/lang/hungarian.txt | 3 +-- src/lang/icelandic.txt | 3 +-- src/lang/ido.txt | 1 + src/lang/indonesian.txt | 3 +-- src/lang/irish.txt | 3 +-- src/lang/italian.txt | 3 +-- src/lang/japanese.txt | 3 +-- src/lang/korean.txt | 3 +-- src/lang/latin.txt | 3 +-- src/lang/latvian.txt | 3 +-- src/lang/lithuanian.txt | 3 +-- src/lang/luxembourgish.txt | 3 +-- src/lang/macedonian.txt | 1 + src/lang/malay.txt | 3 +-- src/lang/maltese.txt | 1 + src/lang/marathi.txt | 1 + src/lang/norwegian_bokmal.txt | 3 +-- src/lang/norwegian_nynorsk.txt | 3 +-- src/lang/persian.txt | 3 +-- src/lang/polish.txt | 3 +-- src/lang/portuguese.txt | 3 +-- src/lang/romanian.txt | 3 +-- src/lang/russian.txt | 3 +-- src/lang/serbian.txt | 3 +-- src/lang/simplified_chinese.txt | 3 +-- src/lang/slovak.txt | 3 +-- src/lang/slovenian.txt | 3 +-- src/lang/spanish.txt | 3 +-- src/lang/spanish_MX.txt | 3 +-- src/lang/swedish.txt | 3 +-- src/lang/tamil.txt | 3 +-- src/lang/thai.txt | 3 +-- src/lang/traditional_chinese.txt | 3 +-- src/lang/turkish.txt | 3 +-- src/lang/ukrainian.txt | 3 +-- src/lang/urdu.txt | 3 +-- src/lang/vietnamese.txt | 3 +-- src/lang/welsh.txt | 3 +-- 64 files changed, 64 insertions(+), 116 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index d8b8bd7397..8cfc326ac7 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -977,7 +977,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :ander STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafikastel STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis-grafikastel stel om te gebruik -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} verlore / korrupte ler{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meer inligting oor die basis-grafikastel STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis klank stel @@ -986,9 +985,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addision STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis musiek stel STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kies die basis musiek stel om te gebruik -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupte lêer{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Addisionele informasie oor die basis musiek stel + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kon nie 'n lys van beskikbare skermresolusies bepaal nie STR_ERROR_FULLSCREEN_FAILED :{WHITE}Volskerm metode gedop diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index a9bed1ff7c..49750bc89c 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -981,7 +981,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}قد ت STR_GAME_OPTIONS_BASE_GRF :{BLACK} الواجهة الرسومية الاساسية STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK} اختر مجموعة الواجهة الرسومية -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ملف مفقود او غير صالح STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} معلومات اضافية عن القاعدة الرسومية STR_GAME_OPTIONS_BASE_SFX :{BLACK}قاعدة الاصوات الاساسية @@ -990,9 +989,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}معلو STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}قاعده الموسيقى الاساسيه STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}اختر الموسيقى الاساسية التي تود استخدامها -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية عن الموسيقى الاساسية + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}فشل في استرداد قائمة الدقة المدعومة STR_ERROR_FULLSCREEN_FAILED :{WHITE}فشل تشغيل نمط الشاشة الكاملة diff --git a/src/lang/basque.txt b/src/lang/basque.txt index ad9da0d302..1a1905c70a 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -948,7 +948,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :besteak STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafiko basea markatu STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Aukeratu erabili beharreko grafiko paketea -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} galdutako/hautsitako artxiboa{P "" k} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Markatutako grafiko basearen informazio gehiago STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base musika paketea @@ -957,9 +956,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Soinu pa STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base musika konfiguratu STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Aukeratu erabili beharreko musika paketea -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} hautsitako artcxiboa{P "" k} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Musika paketearen informazio gehiago + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Pantaila osoko moduak huts egin du # Custom currency window diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 26e579233d..c3522b3588 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1287,7 +1287,6 @@ STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Чашч STR_GAME_OPTIONS_BASE_GRF :{BLACK}Набор базавай ґрафікі STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбар базавага набору ґрафічных аб'ектаў -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} адсутнічаюч{P ы ых ых}/пашкоджан{P ы ых ых} файл{P "" ы аў} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Дадатковая інфармацыя аб базавым ґрафічным наборы STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базавы набор гукаў @@ -1296,9 +1295,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Дада STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Базавы набор музыкі STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выберыце базавы музычны набор для выкарыстаньня -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} пашкоджан{P ы ых ых} файл{P 0 "" ы аў} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дадатковая інфармацыя аб базавым музычным наборы + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не атрымалася атрымаць сьпіс падтрымліваемых разрозненьняў экрана STR_ERROR_FULLSCREEN_FAILED :{WHITE}Памылка поўнаэкраннага рэжыму diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index c78d558080..0c5862e8bb 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -1081,7 +1081,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Taxas de STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecione o conjunto de gráficos base a usar (não pode ser alterado no jogo, só a partir do menu principal) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arquivo{P "" s} faltando/corrompido{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informações adicionais sobre o conjunto de gráficos base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sons base @@ -1090,9 +1089,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informa STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto de músicas base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecionar o conjunto de músicas base para usar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} arquivo{P "" s} corrompido{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de músicas base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Falha ao obter a lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de tela cheia falhou diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index aa72e586e0..2e442359cb 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -956,7 +956,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :друго STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базов графичен набор STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Изберете базов графичен набор -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} липсващи/повредени файлове STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Допълнителна информация за базовия графичен пакет STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базов звуков пакет @@ -965,9 +964,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Допъ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Пакет базова музика STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Избери пакет базова музика -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} повреден файл{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допълнителна информация за пакетът базовата музика + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Неуспешно извличане на списък с поддържаните резолюции STR_ERROR_FULLSCREEN_FAILED :{WHITE}Проблем при включване на режим "цял екран" diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index e1dba69756..99acbd4508 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -1078,7 +1078,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Ratis de STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunt de gràfics base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunt de gràfics base a utilitzar (no es pot canviar des de dins de la partida; s'ha de canviar des del menú principal). -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arxiu{P "" s} absent{P "" s} o corromput{P "" s}. STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de gràfics base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunt de sons base @@ -1087,9 +1086,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informac STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunt de peces de música base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona el conjunt de peces de música base a utilitzar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fitxer{P "" s} corromput{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de peces de música base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No s'ha pogut obtenir la llista de resolucions permeses STR_ERROR_FULLSCREEN_FAILED :{WHITE}Ha fallat el mode pantalla completa diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index d1c4d29734..4a97f5217a 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -519,6 +519,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна + # Custom currency window diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 703afef72c..6b55a490ca 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1079,7 +1079,6 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni set grafike STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} datotek{P a e a} nedostaj{P e u e}/korumpiran{P a e o} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnom grafičkom setu STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set osnovnih zvukova @@ -1088,9 +1087,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatne STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set osnovne glazbe STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberi set osnovne glazbe za uporabu -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} neispravn{P a e ih} datotek{P a e a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o setu osnovne glazbe + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Povlačenje liste podržanih rezolucija nije uspjelo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Prikaz na cijelom zaslonu nije uspio diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 12db381041..51dcb5f12f 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1137,7 +1137,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Obnovova STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základní sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} chybějící{P "" "" ch}/poškozen{P ý é ých} soubor{P "" y ů} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základní sadě grafiky STR_GAME_OPTIONS_BASE_SFX :{BLACK}Základní sada zvuků @@ -1146,9 +1145,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Další STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Základní hudební set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vyberte jaký základní hudební set použít -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškozen{P ý é é} soubor{P "" y y} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Další informace o základním hudebním setu + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepodařilo se získat seznam podporovaných rozlišení STR_ERROR_FULLSCREEN_FAILED :{WHITE}Selhalo přepnutí na celou obrazovku diff --git a/src/lang/danish.txt b/src/lang/danish.txt index fff87ed157..00dc3a3f1c 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Opdateri STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafiksæt STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vælg det grundlæggende grafiksæt, der skal bruges -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} forsvund{P en ne}/ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Yderligere information om basis-grafiksættet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis-lydsæt @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Mere inf STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis-musiksæt STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vælg basismusik-sæt -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} beskadiget fil{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yderligere information om basismusik-sættet + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Det lykkedes ikke at hente en liste over understøttede opløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fuldskærmstilstand fejlede diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 9b393a2e1b..99c1dad6b2 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Verversi STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset voor graphics STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecteer de te gebruiken basisset voor grafische elementen (kan tijdens het spel niet worden gewijzigd, alleen in het hoofdmenu) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ontbrekend{P "" e}/beschadigd{P "" e} bestand{P "" en} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Aanvullende informatie over de basisset voor graphics STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basisset voor geluidseffecten @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aanvulle STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset voor muziek STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecteer de te gebruiken basisset voor muziek -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} beschadigd{P "" e} bestand{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Aanvullende informatie over the basisset voor muziek + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislukt om een lijst met ondersteunde resoluties op te halen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus voor volledig scherm is mislukt diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 2aed159f88..cf7cddeb47 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Refresh STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use (cannot be changed in-game, only from the main menu) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base graphics set STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base sounds set @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addition STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base music set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 71bb571f1c..258e12f94e 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Refresh STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use (cannot be changed in-game, only from the main menu) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base graphics set STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base sounds set @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Addition STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base music set STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 088b7b3856..ed74133028 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1128,7 +1128,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Aktualig STR_GAME_OPTIONS_BASE_GRF :{BLACK}Baza grafikaro STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektu la uzendan bazgrafikaron -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} mankanta{P "" j}/koruptita{P "" j} dosiero{P "" j} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj informoj pri la baza grafikaro STR_GAME_OPTIONS_BASE_SFX :{BLACK}Baza sonaro @@ -1137,9 +1136,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aldonaj STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Baza muzikaro. STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Elekti bazan muzikaron por uzi. -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} difektita{P "" j} dosiero{P "" j} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Pluaj informoj pri la baza muzikaro. + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Ne eblis akiri liston de subtenataj distingivoj STR_ERROR_FULLSCREEN_FAILED :{WHITE}Plenekrana moduso fiaskis diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index bbb5263e74..6773e4acee 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -1088,7 +1088,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Värsken STR_GAME_OPTIONS_BASE_GRF :{BLACK}Lähtegraafikakogu STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valib kasutatava lähtegraafikakogu -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} puuduv{P "" ad}/viga{P ne sed} fail{P "" id} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisateave lähtegraafikakogu kohta STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lähtehelikogu @@ -1097,9 +1096,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Lisateav STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Lähtemuusikakogu STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valib kasutatava lähtemuusikakogu -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} viga{P "ne" "sed"} fail{P "" "id"} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Rohkem teavet lähtemuusikakogu kohta + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Ei õnnestunud tuvastada toetatud resulutsioone STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täisekraanrežiim ebaõnnestus diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index f9b602fb66..072ed31c9c 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -928,7 +928,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} vantandi/oyðiløgd fíl{P a ir} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base grafikk setti STR_GAME_OPTIONS_BASE_SFX :{BLACK}Base ljóð sett @@ -937,9 +936,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Meira ku STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base tónleika sett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel ta base tónleika setti tú vil brúka -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} oyðilagd{P "" ar} fíl{P a ir} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base tónleika setti + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Eydnaðist ikki at brúka fullan skerm # Custom currency window diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 6eff0ad21f..a65cfc35dd 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Yli 60 H STR_GAME_OPTIONS_BASE_GRF :{BLACK}Perusgrafiikat STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Valitse käytettävät perusgrafiikat (ei vaihdettavissa pelin aikana, ainoastaan päävalikosta) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} puuttuva{P "" a}/korruptoitunut{P "" ta} tiedosto{P "" a} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Lisätietoja perusgrafiikoista STR_GAME_OPTIONS_BASE_SFX :{BLACK}Perusäänet @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Lisätie STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musiikkipaketti STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valitse käytettävä musiikkipaketti -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korruptoitun{P ut utta} tiedosto{P "" a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Lisätietoja musiikkipaketista + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tuettujen näyttötarkkuuksien hakeminen epäonnistui STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täyskuvatila ei toimi diff --git a/src/lang/french.txt b/src/lang/french.txt index 493d63b711..b0c8f0fab6 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1081,7 +1081,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE} Les tau STR_GAME_OPTIONS_BASE_GRF :{BLACK}Graphiques de base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Sélectionner les graphiques de base à utiliser (ne peuvent pas être modifiés en jeu, que depuis le menu principal) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fichier{P "" s} manquant{P "" s}/corrompu{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informations additionnelles sur les graphiques de base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Sons de base @@ -1090,9 +1089,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informat STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musique de base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Sélectionner la musique de base à utiliser -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fichier{P "" s} corrompu{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informations additionnelles sur la musique de base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Échec de la récupération de la liste des résolutions prises en charge STR_ERROR_FULLSCREEN_FAILED :{WHITE}Échec du mode plein écran diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index 78d5428cb0..722d0507cf 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -975,7 +975,6 @@ STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Byldferf STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset for ôfbyldings STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selektearje de basis ôfbyldingsset om te brûken -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ûntbrekke{P "" nde}/korrupt{P "" e} bestân STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar ôfbyldings STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basisset foar lûdseffekten @@ -984,9 +983,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Oanfolje STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset foar musyk STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selektearje de basisset foar musyk om te brûken -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupt{P "" e} bestân{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Oanfoljende ynformaasje oer de basisset foar musyk + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Koe gjin list mei brûkbere resolúsjes ophelje STR_ERROR_FULLSCREEN_FAILED :{WHITE}Folslein skermmodus mislearre diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index a07f94f5d3..e673f71cf4 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -1161,7 +1161,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte STR_GAME_OPTIONS_BASE_GRF :{BLACK}Seata grafaigeachd bunasach STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} a dhìth/coirbte STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata ghrafaigeachd bhunasach STR_GAME_OPTIONS_BASE_SFX :{BLACK}Seata fhuaimean bunasach @@ -1170,9 +1169,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Barrachd STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Seata ciùil bunasach STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Tagh an seata ciùil bunasach a chleachdas tu -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P fhaidhle fhaidhle faidhlichean faidhle} coirbte STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata chiùil bhunasach + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Cha deach leinn liosta dhe na dùmhlaidhean-breacaidh ris an cuirear taic fhaighinn STR_ERROR_FULLSCREEN_FAILED :{WHITE}Dh'fhàillig leis a' mhodh làn-sgrìn diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 6b6e1990a2..b2d105c665 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -1059,7 +1059,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}As tasas STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conxunto básico de gráficos STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona o conxunto de gráficos básico a empregar -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} arquivo{P "" s} inexistente{P "" s}/erróneo{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de gráficos básico STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conxunto de sons base @@ -1068,9 +1067,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informac STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conxunto de música base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona o conxunto de música base a empregar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} arquivo{P "" s} corrupto{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre o conxunto de música base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Erro ao obter a lista de resolucións soportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}O modo de pantalla completa fallou diff --git a/src/lang/german.txt b/src/lang/german.txt index 64a8720d01..ad88809dc9 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -1081,7 +1081,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Wiederho STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisgrafiken STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zu benutzendes Set an Basisgrafiken auswählen (kann nicht im Spiel geändert werden, nur im Hauptmenü) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fehlende/fehlerhafte Datei{P "" en} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Zusatzinformationen zu den Basisgrafiken STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basissounds @@ -1090,9 +1089,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Zusatzin STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basismusikset STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Ein Basismusikset auswählen -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fehlerhafte Datei{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Zusätzliche Informationen über das Basismusikset + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Eine Liste unterstützter Auflösungen konnte nicht ermittelt werden STR_ERROR_FULLSCREEN_FAILED :{WHITE}Vollbildmodus nicht möglich diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 500cd421d2..5432f984b0 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1138,7 +1138,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Ρυθμ STR_GAME_OPTIONS_BASE_GRF :{BLACK}Βασικό σετ γραφικών STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Επιλογή του βασικού σετ γραφικών που θα χρησιμοποιηθεί -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} αρχεί{P ο α} που λείπ{P ει ουν} ή είναι κατεστραμμέν{P ο α} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ γραφικών STR_GAME_OPTIONS_BASE_SFX :{BLACK}Σετ βασικών ήχων @@ -1147,9 +1146,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Επιπ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Βασικό σετ μουσικής STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Επιλέξτε το βασικό σετ μουσικής για χρήση -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} κατεστραμμέν{P ο α} αρχεί{P ο α} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Επιπλέον πληροφορίες σχετικά με το βασικό σετ μουσικής + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Αποτυχία ανάκτησης λίστας υποστηριζόμενων αναλύσεων STR_ERROR_FULLSCREEN_FAILED :{WHITE}Θέση του παιχνιδιού σε λειτουργία πλήρης οθόνης απέτυχε diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index e409829af8..31e35e322e 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -987,7 +987,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}עדכו STR_GAME_OPTIONS_BASE_GRF :{BLACK}ערכת גרפיקה בסיסית STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}בחר בערכת גרפיקה בסיסית לשימוש -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{P 0 "קובץ " ""}{NUM}{P "" " קבצים"} חסר{P 0 "" ים}/הושחט{P 0 "" ו} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת הגרפיקה הבסיסית STR_GAME_OPTIONS_BASE_SFX :{BLACK}ערכת צלילים בסיסיים @@ -996,9 +995,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}מידע STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}ערכת מוזיקת בסיס STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}בחר בערכת מוזיקת הבסיס לשימוש -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} קובץ פגום{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}מידע נוסף אודות ערכת המוזיקה הבסיסית + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}שגיאה ביצירת רשימה של רזולוציות אפשריות STR_ERROR_FULLSCREEN_FAILED :{WHITE}נכשל בשינויי למסך מלא diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 90747ae493..07ed1715c0 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -322,6 +322,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इं + # Custom currency window STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक पाउंड (£) की तुलना में अपनी मुद्रा का अवमूल्यन करें diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index a4c3772ec3..76ecc7c290 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1144,7 +1144,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}A 60 Hz- STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikus alapcsomag STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}A játékhoz használandó grafikus alapcsomag kiválasztása (nem módosítható a játékban, csak a főmenüben) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} hiányzó/hibás fájl STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}További információk a grafikus alapcsomagról STR_GAME_OPTIONS_BASE_SFX :{BLACK}Hang alapcsomag @@ -1153,9 +1152,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}További STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Zenei alapcsomag STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Használandó zenei alapcsomag kiválasztása -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} hibás fájl STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}További információk a zenei alapcsomagról + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nem sikerült a támogatott felbontások lekérdezése STR_ERROR_FULLSCREEN_FAILED :{WHITE}Teljes képernyős módra váltás sikertelen diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 6019a057c5..a75123cd0b 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -927,7 +927,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} týnd{P "" ar} eða ónýt{P "" ar} skrá{P "" r} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Frekari upplýsingar um grunngrafíkpakkann STR_GAME_OPTIONS_BASE_SFX :{BLACK}Grunn hljóðasafn @@ -936,9 +935,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Aukauppl STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Grunntónlistarsafn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Veld grunntónlistarsafn til að nota -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ónýt{P "" ar} skrá{P "" r} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Auka upplýsingar um grunntónlistarsafnið + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Skjáfyllihamur brást # Custom currency window diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 7afdd71629..fcf9653fdf 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -502,6 +502,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra + # Custom currency window diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index e7663af051..887e5bb15e 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -1061,7 +1061,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Kecepata STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set Grafik Dasar STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih grafik dasar yang digunakan (tidak dapat diubah didalam permainan, hanya dari menu utama) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} berkas hilang atau rusak STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informasi tambahan tentang set grafik dasar STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set suara dasar @@ -1070,9 +1069,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informas STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set Musik Dasar STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih musik dasar yang akan digunakan -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} berkas rusak STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informasi tambahan tentang musik dasar + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tidak bisa mendapatkan daftar resolusi layak STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus layar penuh gagal diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 7aac54a49c..7437cee17c 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -1009,7 +1009,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}D'fhéad STR_GAME_OPTIONS_BASE_GRF :{BLACK}Sraith graifice bunaidh STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Roghnaigh an sraith grafaice bunaidh le húsáid -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad ar iarraidh/truaillithe STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin sraith grafaice bunaidh STR_GAME_OPTIONS_BASE_SFX :{BLACK}Sraith fuaimeanna bunaidh @@ -1018,9 +1017,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Faisnéi STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Sraith ceoil bunaidh STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Roghnaigh an tsraith ceoil bunaidh le húsáid -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P ch ch ch gc c}omhad truaillithe STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Faisnéis breise faoin tsraith ceoil bunaidh + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Teipeadh liosta de na taifigh a dtacaítear leo a fháil STR_ERROR_FULLSCREEN_FAILED :{WHITE}Theip ar an mód lánscáileáin diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 9a9e3970c9..e61b26a3b6 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -1079,7 +1079,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Frequenz STR_GAME_OPTIONS_BASE_GRF :{BLACK}Pacchetto grafico di base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selezionare il pacchetto grafico di base da utilizzare (non può essere modificato in gioco, solo dal menu principale). -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} file mancant{P e i}/corrott{P o i} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informazioni aggiuntive sul pacchetto grafico di base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Pacchetto sonoro di base @@ -1088,9 +1087,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informaz STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pacchetto musicale di base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleziona il pacchetto musicale di base da utilizzare -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} file corrott{P o i} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informazioni aggiuntive sul pacchetto musicale di base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Errore nel recupero della lista delle risoluzioni supportate STR_ERROR_FULLSCREEN_FAILED :{WHITE}Attivazione modalità schermo intero non riuscita diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index d123ba4f21..8b2d7dbc76 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -1051,7 +1051,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}60Hzを STR_GAME_OPTIONS_BASE_GRF :{BLACK}基本グラフィックセット STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}使用するグラフィックセットを選択します -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}見つからないか破損しているファイルが{NUM}個あります STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}基本グラフィックセットについての追加情報 STR_GAME_OPTIONS_BASE_SFX :{BLACK}基本効果音セット @@ -1060,9 +1059,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}基本 STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基本音楽セット STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}使用する音楽セットを選択します -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM}個の破損ファイルがあります STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}基本音楽セットについての追加情報 + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}サポートされている解像度リストの回復に失敗しました STR_ERROR_FULLSCREEN_FAILED :{WHITE}フルスクリーンモードでの実行に失敗しました diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 5f39f87721..12c642cfc0 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1081,7 +1081,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}60Hz를 STR_GAME_OPTIONS_BASE_GRF :{BLACK}기본 그래픽 세트 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}게임에 사용할 기본 그래픽 세트를 선택하세요 (플레이 도중에는 변경할 수 없고 메인 메뉴에서만 변경 가능합니다) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM}개 파일 손실 STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}기본 그래픽 세트에 대한 추가 정보를 봅니다. STR_GAME_OPTIONS_BASE_SFX :{BLACK}기본 효과음 세트 @@ -1090,9 +1089,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}기본 STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}기본 배경 음악 세트 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}게임에 사용할 기본 배경 음악 세트를 선택하세요 -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM}개의 파일이 손상되었습니다. STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}기본 배경 음악 세트에 대한 추가 정보를 봅니다. + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}지원되는 해상도 목록을 불러오는데 실패하였습니다. STR_ERROR_FULLSCREEN_FAILED :{WHITE}전체화면 모드 실패 diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 82a7e4dd80..a75f1bb61e 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -1153,7 +1153,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :alia STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fascicul{P us i} absen{P s tes}/corrupt{P us i} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento graphico STR_GAME_OPTIONS_BASE_SFX :{BLACK}Fundamentum sonicum @@ -1162,9 +1161,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Indicia STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Fundamentum musicum STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Eligere fundamentum musicum adhibendum -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fascicul{P us i} corrupt{P us i} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento musico + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Non potuit repperire indicem resolutionum STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mutatio ad cunctum scrinium defecit diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 86ce8feef1..6aa336e8fe 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -1034,7 +1034,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Atsvaidz STR_GAME_OPTIONS_BASE_GRF :{BLACK}Pamata grafikas kopa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Atlasīt lietošanai pamata grafikas kopu -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} iztrūkstošs/bojāts fail{P s i ""} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata grafikas kopu STR_GAME_OPTIONS_BASE_SFX :{BLACK}Pamata skaņas kopa @@ -1043,9 +1042,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Papildin STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pamata mūzikas kopa STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Atlasīt lietošanai pamata mūzikas kopu -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} bojāt{P s i u} fail{P s i u} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildinformācija par pamata mūzikas kopu + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Neizdevās saņemt sarakstu ar atbalstītajām izšķirtspējām STR_ERROR_FULLSCREEN_FAILED :{WHITE}Pilnekrāna spēles iestatīšana neizdevās diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 77cf804e6b..8befc1ba53 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1227,7 +1227,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Didesnis STR_GAME_OPTIONS_BASE_GRF :{BLACK}Bazinis grafikos rinkinys STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę grafikos rinkinį -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} trūkstam{P a ų os}/sugadint{P a ų os} byl{P a ų os} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinės grafikos rinkinį STR_GAME_OPTIONS_BASE_SFX :{BLACK}Bazinis garsų rinkinys @@ -1236,9 +1235,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Papildom STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Bazinis muzikos rinkinys STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pasirinkti naudojimui bazinę muziką -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} sugadint{P a ų os} bylos STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Papildoma informacija apie bazinę muziką + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepavyko gauti palaikomų ekrano raiškų sąrašo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Viso ekrano nustatymas nepavyko diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index e7b1321b14..64ef069ced 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -1032,7 +1032,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Bildfreq STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis Grafikset STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wielt de Basis Grafikset dee soll benotzt ginn -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fehlend/korrupt Datei{P "" en} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Méi Infos iwwert de Basis Grafikset STR_GAME_OPTIONS_BASE_SFX :{BLACK}Basis Soundset @@ -1041,9 +1040,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Méi Inf STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis Musikset STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wiel de Basis Musikset dee soll benotzt ginn -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} korrupt Datei{P "" en} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Méi Informatiounen iwwer de Basis Musikset + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Konnt keng Lëscht vun supportéierten Opléisunge fannen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fehler beim Vollbild diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index eaa70c8a85..71bee74913 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -820,6 +820,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + # Custom currency window diff --git a/src/lang/malay.txt b/src/lang/malay.txt index d234b58679..461a62f75a 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -931,7 +931,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :lain STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafik asas STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih set grafik asas untuk digunakan -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fail hilang/rosak STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Maklumat tambahan tentang set grafik asas ini STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set bunyi asas @@ -940,9 +939,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Maklumat STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set muzik asas STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih set muzik asas yang akan digunakan -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fail sudah rosak STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Maklumat lebih tentang set muzik asas + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Gagal untuk mendapat senarai resolusi yang disokong STR_ERROR_FULLSCREEN_FAILED :{WHITE}Mod skrin penuh gagal dilakukan diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 0fa42e5c7f..0beb12735e 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -435,6 +435,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + # Custom currency window diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 5e3d814f55..daa1680c83 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -754,6 +754,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + # Custom currency window diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index f1cb121c0b..d2b54e2345 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -1015,7 +1015,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Oppdater STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Velg grafikksett som skal brukes -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglende/ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lydsett @@ -1024,9 +1023,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Tilleggs STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikksett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Velg musikksett som skal brukes -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ødelagt{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Ytterligere informasjon om det originale musikksettet + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislyktes med å hente en liste over støttede oppløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermmodus mislyktes diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 6396d9cdd2..aa358c6f0f 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -958,7 +958,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :anna STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manglande/øydelagd{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Lydsett @@ -967,9 +966,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Tilleggs STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikksett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vel musikksett som skal nyttast -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} øydelagd{P "" e} fil{P "" er} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om musikksettet + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Kunne ikkje henta liste over støtta oppløysingar STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskjermvising feila diff --git a/src/lang/persian.txt b/src/lang/persian.txt index 7163df809e..263c10a303 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -948,7 +948,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر STR_GAME_OPTIONS_BASE_GRF :{BLACK}بسته گرافیک پایه STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بسته گرافیک پایه را انتخاب کنید -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} فایل وجود ندارد یا خراب است STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} اطلاعات اضافه در مورد بسته ی گرافیکی پایه STR_GAME_OPTIONS_BASE_SFX :{BLACK}بسته صدای پایه را انتخاب کنید @@ -957,9 +956,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}اطلا STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}بسته موسیقی پایه STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}بسته موسیقی پایه را انتخاب کنید -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} فایل خراب است STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}اطلاعات اضافه درباره بسته ی موسیقی پایه + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}ناتوان در گرفتن تنظیمات نمایش STR_ERROR_FULLSCREEN_FAILED :{WHITE}حالت تمام صفحه با شکست مواجه شد diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 4508e39e0f..1b0159bc68 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1460,7 +1460,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Częstot STR_GAME_OPTIONS_BASE_GRF :{BLACK}Podstawowy zestaw grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Wybierz podstawowy zestaw grafik (nie można tego zmienić w trakcie gry, jedynie w menu głównym) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} brak/uszkodzony plik{P "" i ów} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o grafice STR_GAME_OPTIONS_BASE_SFX :{BLACK}Podstawowy zestaw dźwięków @@ -1469,9 +1468,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatkow STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Podstawowy zestaw muzyki STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wybierz podstawowy zestaw muzyki do użycia -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} plik{P "" i ów} uszkodzony STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o muzyce podstawowej + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nie udało się pobrać listy obsługiwanych rozdzielczości STR_ERROR_FULLSCREEN_FAILED :{WHITE}Uruchomienie trybu pełnoekranowego nie powiodło się diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index ede0f03a08..fdb54e9749 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -1081,7 +1081,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Taxas de STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecione o conjunto de gráficos base a usar (não pode ser alterado no jogo, só a partir do menu principal) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ficheiro{P "" s} que falta{P "" m} / corrupto{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de gráficos base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sons base @@ -1090,9 +1089,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informa STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto de música base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccione o conjunto de música base a usar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ficheiro corrompido{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de música base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Erro ao obter uma lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de ecrã inteiro falhou diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index d4c8b9e218..9483e89ed5 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Ratele d STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafic de bază STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selectați setul de grafică de bază pe care să îl utilizați (nu poate fi schimbat în joc, doar din meniul principal) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} {P fișier fișiere "de fișiere"} lipsă/corupt{P "" e e} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Informaţii adiţionale despre setul grafic de bază STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set sunete de bază @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informa STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Setul de muzică de bază STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selectaţi setul de muzică de bază -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} {P fișier fișiere "de fișiere"} corupt{P "" e e} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informaţii adiţionale despre setul de muzică de bază + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nu s-a putut obține lista de rezoluții suportate STR_ERROR_FULLSCREEN_FAILED :{WHITE}Comutarea pe întreg ecranul a eşuat diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 6a7384795b..e08c2166a9 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1225,7 +1225,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Част STR_GAME_OPTIONS_BASE_GRF :{BLACK}Основной графический пакет STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Выбор основного графического пакета (его нельзя сменить в игре; только в главном меню) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} отсутствующи{P й х х}/повреждённы{P й х х} файл{P "" а ов} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о выбранном графическом пакете STR_GAME_OPTIONS_BASE_SFX :{BLACK}Основной звуковой пакет @@ -1234,9 +1233,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Допо STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Основной музыкальный пакет STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выбор основного музыкального пакета -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} повреждённы{P й х х} файл{P "" а ов} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о выбранном музыкальном пакете + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не удалось получить список поддерживаемых разрешений экрана STR_ERROR_FULLSCREEN_FAILED :{WHITE}Сбой полноэкранного режима diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 6525e3286b..a5dd4b3327 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -1227,7 +1227,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Frekvenc STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni skup grafika STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi željeni skup osnovnih grafika -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} datotek{P a e a} nedostaj{P e u e}/neispravn{P a o o} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatni podaci o osnovnom skupu grafika STR_GAME_OPTIONS_BASE_SFX :{BLACK}Osnovni skup zvukova @@ -1236,9 +1235,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatni STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Osnovni skup muzike STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Odaberi željeni skup osnovne muzike -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} oštećen{P a e ih} datotek{P a e a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatni podaci o osnovnom skupu muzike + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Neuspešno dobijanje spiska podržanih rezolucija STR_ERROR_FULLSCREEN_FAILED :{WHITE}Neuspešno prebacivanje u ceo ekran diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index a00584b03e..a3d367230e 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}高于 6 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基础图形组 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}选择要使用的基础图形组(只能在主菜单更改,不能在游戏中更改) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 文件{}未找到或不正确 STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}关于基本图组的额外信息 STR_GAME_OPTIONS_BASE_SFX :{BLACK}基础音效组 @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}有关 STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基础音乐组 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}选择要使用的基础音乐组 -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} 文件已损坏 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}有关基础音乐组的附加信息 + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}无法撷取可用的屏幕分辨率清单 STR_ERROR_FULLSCREEN_FAILED :{WHITE}无法切换到全屏模式{}尝试使用不同的分辨率 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index d1fe9a8785..254858c0af 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1136,7 +1136,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Obnovova STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základná sada grafiky STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Výber sady grafiky, ktorá má byť použitá (nie je možné zmeniť v hre, iba z hlavného menu) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} chýbajúci/poškodený súbor{P "" "y" "ov"} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatočné informácie o základnej sade grafiky STR_GAME_OPTIONS_BASE_SFX :{BLACK}Základná sada zvukov @@ -1145,9 +1144,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatoč STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Základná sada hudby STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Výber sady hudby, ktorá má byť použitá -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškoden{P ý é ých} súbor{P "" y ov} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatočné informácie o základnej sade hudby + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nepodarilo sa načítať zoznam podporovaných rozlíšení STR_ERROR_FULLSCREEN_FAILED :{WHITE}Zobrazovanie na celú obrazovku zlyhalo diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 56c69fb6b2..c38ab55490 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1113,7 +1113,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni komplet grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} manjkajoč{P a i e ih}/okvarjen{P a i e ih} datotek{P a i e ""} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu grafik STR_GAME_OPTIONS_BASE_SFX :{BLACK}Osnovni komplet zvokov @@ -1122,9 +1121,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Dodatne STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Osnovni komplet glasbe STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Izberi osnovni komplet glasbe za uporabo -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} poškodovan{P a i e ih} datotek{P a i e ""} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu glasbe + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nalaganje seznama podprtih resolucij ni uspelo STR_ERROR_FULLSCREEN_FAILED :{WHITE}Celozaslonski način spodletel diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 58d329f0a9..8550adf5c8 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -1033,7 +1033,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Las frec STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} archivo{P "" s} perdido{P "" s} o corrupto{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre el set de gráficos base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sonidos base @@ -1042,9 +1041,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informac STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto de música base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccionar conjunto de música base a usar -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} archivo{P "" s} corrupto{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre el conjunto de música base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No se ha podido obtener una lista de resoluciones soportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}El modo de pantalla completa ha fallado diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 4a31e7f40a..4c764257f3 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -1033,7 +1033,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Las frec STR_GAME_OPTIONS_BASE_GRF :{BLACK}Gráficos base STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Elegir los gráficos base -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} archivo{P "" s} perdido{P "" s} o con errores STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre los gráficos base STR_GAME_OPTIONS_BASE_SFX :{BLACK}Sonidos base @@ -1042,9 +1041,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Informac STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Música base STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Elegir música base -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} archivo{P "" s} con errores STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre música base + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No se pudo obtener una lista de resoluciones compatibles STR_ERROR_FULLSCREEN_FAILED :{WHITE}El modo de pantalla completa falló diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 478f309883..6e9086445e 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -1076,7 +1076,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}uppdater STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikpaket som standard STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Välj vilket grafikpaket som ska användas som standard (kan ej ändras under spel, utan endast från huvudmenyn) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} saknad{P "" e}/trasig{P "" a} fil{P "" er} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Ytterligare information om basgrafik-settet STR_GAME_OPTIONS_BASE_SFX :{BLACK}Grundljudspaket @@ -1085,9 +1084,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Ytterlig STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musikpaket valt STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Välj vilket musikpaket som ska användas -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} fil{P "" er} korrupt{P "" a} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yttligare information om musikpaketet + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Det gick inte att hämta en lista över upplösningar som stöds STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullskärmsläge misslyckades diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 7a4f02b2c8..8902cf1d91 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -979,7 +979,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz STR_GAME_OPTIONS_BASE_GRF :{BLACK}அடிப்படை அசைவூட்டம் STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை அசைவூட்டத்தினை தேர்ந்தெடுக்கவும் -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} இல்லாத/பிழையான கோப்பு{P "" கள்} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை அசைவூட்டத்தினை பற்றிய கூடுதல் தகவல் STR_GAME_OPTIONS_BASE_SFX :{BLACK}அடிப்படை ஒலிகள் தொகுப்பு @@ -988,9 +987,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}அட STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}அடிப்படை இசைத் தொகுப்பு STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}பயன்படுத்தப்போகும் அடிப்படை இசைத் தொகுப்பினைத் தேர்ந்தெடுக்கவும் -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} பிழையான கோப்பு{P "" கள்} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}அடிப்படை இசைத் தொகுப்பு பற்றிய கூடுதல் தகவல்கள் + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}ஆதரிக்கப்பட்ட திரைத் தெளிவுத்திரங்களின் வரிசை பெற முடியவில்லை STR_ERROR_FULLSCREEN_FAILED :{WHITE}முழுத்திரை நிலை தோல்வியடைந்தது diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 1586f81db9..0154731250 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -975,7 +975,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}หา STR_GAME_OPTIONS_BASE_GRF :{BLACK}ตั้งค่า Graphic พื้นฐาน STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}เลือกและตั้งค่าฐานกราฟิกที่จะใช้ -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ไฟล์สูญหายหรือไม่สมบูรณ์ STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดกราฟฟิคพื้นฐาน STR_GAME_OPTIONS_BASE_SFX :{BLACK}เลือกชุด Effect เสียงประกอบ @@ -984,9 +983,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}ปร STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}ชุดเพลงประกอบพื้นฐาน STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}เลือกเพลงประกอบพื้นฐานเพื่อใช้งาน -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ไฟล์ไม่สมบูรณ์ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}ข้อมูลเพิ่มเติมเกี่ยวกับชุดเพลงประกอบพื้นฐาน + STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen โหมดล้มเหลว # Custom currency window diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 687168f8c7..0fc2c4b1b3 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -1072,7 +1072,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}高於60 STR_GAME_OPTIONS_BASE_GRF :{BLACK}基本圖形集 STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}選擇要使用的基本圖形集 -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} 檔案遺失/損毀 STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}關於基本圖形集的額外資訊 STR_GAME_OPTIONS_BASE_SFX :{BLACK}基本音效集 @@ -1081,9 +1080,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}關於 STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}基本音樂集 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}選擇要使用的基本音樂集 -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} 檔案已損毀 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}關於基本音樂集的額外資訊 + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}無法擷取可用的螢幕解析度清單 STR_ERROR_FULLSCREEN_FAILED :{WHITE}無法切換全螢幕模式 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index c9ecae5e6c..6acef6c10b 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -1080,7 +1080,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}60Hz'den STR_GAME_OPTIONS_BASE_GRF :{BLACK}Temel grafik kümesi STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kullanılacak temel grafik kümesini seçin (oyun içinde değiştirlemez sadece ana menüde değiştirebilinir) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} kayıp/bozuk dosya STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Temel grafik setiyle ilgili ilave bilgiler STR_GAME_OPTIONS_BASE_SFX :{BLACK}Temel ses kümesi @@ -1089,9 +1088,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Temel se STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Temel müzik kümesi STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Kullanılacak temel müzik kümesini seçin -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} adet bozuk dosya var STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Temel müzik hakkında daha fazla bilgi + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Desteklenen çözünürlük listesi alınamadı STR_ERROR_FULLSCREEN_FAILED :{WHITE}Tam ekran kipi başarısız diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 8075c848b1..c647e12358 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -1180,7 +1180,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Онов STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базовий набір графіки STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Оберіть, яку основну графіку використовувати -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} відсутн{P ій іх іх}/пошкоджен{P ий их их} файл{P "" а ів} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Додаткова інформація про базовий набір графіки STR_GAME_OPTIONS_BASE_SFX :{BLACK}Базовий набір звуків @@ -1189,9 +1188,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Дода STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Базовий музичний набір STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Оберіть базовий музичний набір для використання -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} зіпсовани{P й х х} файл{P "" а ів} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Допоміжна інформація про базовий музичний набір + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не вдалося отримати список підтримуваних дозволів STR_ERROR_FULLSCREEN_FAILED :{WHITE}Повноекранний режим не працює diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 383cad3bae..de677c0210 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -923,7 +923,6 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s} STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ کے بارے میں اضافی معلومات STR_GAME_OPTIONS_BASE_SFX :{BLACK}بُنیادی صوتی سیٹ @@ -932,9 +931,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}بُنی STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}بُنیادی موسیقی سیٹ STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}بُنیادی موسیقی سیٹ اختیار کریں -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} corrupted file{P "" s} STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی موسیقی سیٹ کے بارے میں اضافی معلومات + STR_ERROR_FULLSCREEN_FAILED :{WHITE}مُکمل اسکرین موڈ ناکام ہوگیا # Custom currency window diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index bae206f1c0..400fe72863 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -1077,7 +1077,6 @@ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Tần s STR_GAME_OPTIONS_BASE_GRF :{BLACK}Gói đồ họa STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Chọn gói đồ họa để sử dụng (không thể thay đổi khi trong ván chơi, chỉ đổi được khi ở menu chính) -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} thiếu/hỏng file STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Thông tin thêm về gói đồ họa STR_GAME_OPTIONS_BASE_SFX :{BLACK}Bộ âm thanh chuẩn @@ -1086,9 +1085,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Thông t STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Gói nhạc chuẩn STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Chọn gói nhạc để sử dụng -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} file bị hỏng STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Thông tin thêm về gói nhạc chuẩn + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Không thể lấy danh sách độ phân giải được hỗ trợ STR_ERROR_FULLSCREEN_FAILED :{WHITE}Thất bại khi bật chế độ fullscreen diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 56a4db3ec0..6ca4d9e6ce 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -992,7 +992,6 @@ STR_GAME_OPTIONS_GRAPHICS :{BLACK}Graffeg STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set raffeg sylfaenol STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Dewiswch y set raffeg sylfaenol i'w defnyddio -STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} ffeil ar goll/llygredig STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth ychwanegol am y set graffeg sylfaenol STR_GAME_OPTIONS_BASE_SFX :{BLACK}Set sain sylfaenol @@ -1001,9 +1000,9 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}Gwybodae STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set cerddoriaeth sylfaenol STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Dewisiwch y set cerddoriaeth sylfaenol i'w ddefnyddio -STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ffeil llygredig STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Gwybodaeth bellach am y set gerddoriaeth sylfaenol + STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Methu nôl rhestr o cydraniadau cydnaws STR_ERROR_FULLSCREEN_FAILED :{WHITE}Methodd y modd sgrin llawn From 235ac0bcebed208412b3ef33f490ad9c766faaa4 Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Fri, 10 Nov 2023 17:37:22 -0500 Subject: [PATCH 20/54] Codechange: Reword rail/road type label constants (#11451) --- src/newgrf.cpp | 10 +++++----- src/rail_type.h | 8 ++++---- src/road_type.h | 4 ++-- src/table/railtypes.h | 8 ++++---- src/table/roadtypes.h | 4 ++-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 5bf37d1554..8c76a04d0b 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -1056,9 +1056,9 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop } switch (tracktype) { - case 0: _gted[e->index].railtypelabel = rvi->engclass >= 2 ? RAILTYPE_ELECTRIC_LABEL : RAILTYPE_RAIL_LABEL; break; - case 1: _gted[e->index].railtypelabel = RAILTYPE_MONO_LABEL; break; - case 2: _gted[e->index].railtypelabel = RAILTYPE_MAGLEV_LABEL; break; + case 0: _gted[e->index].railtypelabel = rvi->engclass >= 2 ? RAILTYPE_LABEL_ELECTRIC : RAILTYPE_LABEL_RAIL; break; + case 1: _gted[e->index].railtypelabel = RAILTYPE_LABEL_MONO; break; + case 2: _gted[e->index].railtypelabel = RAILTYPE_LABEL_MAGLEV; break; default: GrfMsg(1, "RailVehicleChangeInfo: Invalid track type {} specified, ignoring", tracktype); break; @@ -1195,8 +1195,8 @@ static ChangeInfoResult RailVehicleChangeInfo(uint engine, int numinfo, int prop if (_cur.grffile->railtype_list.empty()) { /* Use traction type to select between normal and electrified * rail only when no translation list is in place. */ - if (_gted[e->index].railtypelabel == RAILTYPE_RAIL_LABEL && engclass >= EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_ELECTRIC_LABEL; - if (_gted[e->index].railtypelabel == RAILTYPE_ELECTRIC_LABEL && engclass < EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_RAIL_LABEL; + if (_gted[e->index].railtypelabel == RAILTYPE_LABEL_RAIL && engclass >= EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_LABEL_ELECTRIC; + if (_gted[e->index].railtypelabel == RAILTYPE_LABEL_ELECTRIC && engclass < EC_ELECTRIC) _gted[e->index].railtypelabel = RAILTYPE_LABEL_RAIL; } rvi->engclass = engclass; diff --git a/src/rail_type.h b/src/rail_type.h index b0796ffd24..ec44021f5d 100644 --- a/src/rail_type.h +++ b/src/rail_type.h @@ -14,10 +14,10 @@ typedef uint32_t RailTypeLabel; -static const RailTypeLabel RAILTYPE_RAIL_LABEL = 'RAIL'; -static const RailTypeLabel RAILTYPE_ELECTRIC_LABEL = 'ELRL'; -static const RailTypeLabel RAILTYPE_MONO_LABEL = 'MONO'; -static const RailTypeLabel RAILTYPE_MAGLEV_LABEL = 'MGLV'; +static const RailTypeLabel RAILTYPE_LABEL_RAIL = 'RAIL'; +static const RailTypeLabel RAILTYPE_LABEL_ELECTRIC = 'ELRL'; +static const RailTypeLabel RAILTYPE_LABEL_MONO = 'MONO'; +static const RailTypeLabel RAILTYPE_LABEL_MAGLEV = 'MGLV'; /** * Enumeration for all possible railtypes. diff --git a/src/road_type.h b/src/road_type.h index b0b99b76e1..e36f023d44 100644 --- a/src/road_type.h +++ b/src/road_type.h @@ -14,8 +14,8 @@ typedef uint32_t RoadTypeLabel; -static const RoadTypeLabel ROADTYPE_ROAD_LABEL = 'ROAD'; -static const RoadTypeLabel ROADTYPE_TRAM_LABEL = 'ELRL'; +static const RoadTypeLabel ROADTYPE_LABEL_ROAD = 'ROAD'; +static const RoadTypeLabel ROADTYPE_LABEL_TRAM = 'ELRL'; /** * The different roadtypes we support diff --git a/src/table/railtypes.h b/src/table/railtypes.h index 2f913d6b2e..69fd27bb4b 100644 --- a/src/table/railtypes.h +++ b/src/table/railtypes.h @@ -90,7 +90,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - RAILTYPE_RAIL_LABEL, + RAILTYPE_LABEL_RAIL, /* alternate labels */ RailTypeLabelList(), @@ -191,7 +191,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - RAILTYPE_ELECTRIC_LABEL, + RAILTYPE_LABEL_ELECTRIC, /* alternate labels */ RailTypeLabelList(), @@ -288,7 +288,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - RAILTYPE_MONO_LABEL, + RAILTYPE_LABEL_MONO, /* alternate labels */ RailTypeLabelList(), @@ -385,7 +385,7 @@ static const RailTypeInfo _original_railtypes[] = { 0, /* rail type label */ - RAILTYPE_MAGLEV_LABEL, + RAILTYPE_LABEL_MAGLEV, /* alternate labels */ RailTypeLabelList(), diff --git a/src/table/roadtypes.h b/src/table/roadtypes.h index 77813bec08..fc20705bc6 100644 --- a/src/table/roadtypes.h +++ b/src/table/roadtypes.h @@ -73,7 +73,7 @@ static const RoadTypeInfo _original_roadtypes[] = { 0, /* road type label */ - ROADTYPE_ROAD_LABEL, + ROADTYPE_LABEL_ROAD, /* alternate labels */ RoadTypeLabelList(), @@ -153,7 +153,7 @@ static const RoadTypeInfo _original_roadtypes[] = { 0, /* road type label */ - ROADTYPE_TRAM_LABEL, + ROADTYPE_LABEL_TRAM, /* alternate labels */ RoadTypeLabelList(), From 1432511fe502c1111444c96b077ae534df294e83 Mon Sep 17 00:00:00 2001 From: translators Date: Sat, 11 Nov 2023 18:36:44 +0000 Subject: [PATCH 21/54] Update: Translations from eints english (au): 1 change by krysclarke italian: 7 changes by Rivarossi russian: 1 change by Ln-Wolf finnish: 1 change by hpiirai portuguese: 1 change by azulcosta portuguese (brazilian): 1 change by pasantoro --- src/lang/brazilian_portuguese.txt | 1 + src/lang/english_AU.txt | 1 + src/lang/finnish.txt | 1 + src/lang/italian.txt | 7 +++++++ src/lang/portuguese.txt | 1 + src/lang/russian.txt | 1 + 6 files changed, 12 insertions(+) diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index 0c5862e8bb..17523c4126 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -1091,6 +1091,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecionar o conjunto de músicas base para usar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de músicas base +STR_BASESET_STATUS :{STRING} {RED}({NUM} arquivo{P "" s} em falta/corrompido{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Falha ao obter a lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de tela cheia falhou diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index cf7cddeb47..eb72d13859 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -1090,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Base mus STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Select the base music set to use STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Additional information about the base music set +STR_BASESET_STATUS :{STRING} {RED}({NUM} missing/corrupted file{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Failed to retrieve a list of supported resolutions STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fullscreen mode failed diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index a65cfc35dd..991dc1b987 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -1090,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musiikki STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Valitse käytettävä musiikkipaketti STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Lisätietoja musiikkipaketista +STR_BASESET_STATUS :{STRING} {RED}({NUM} puuttuvaa tai vioittunutta tiedosto{P "" a}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tuettujen näyttötarkkuuksien hakeminen epäonnistui STR_ERROR_FULLSCREEN_FAILED :{WHITE}Täyskuvatila ei toimi diff --git a/src/lang/italian.txt b/src/lang/italian.txt index e61b26a3b6..9fb8d3058b 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -535,6 +535,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Informazioni su STR_ABOUT_MENU_SPRITE_ALIGNER :Strumento allineamento sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Attiva/disattiva bounding box STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Attiva/disattiva colorazione blocchi invalidati +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Alterna i contorni dei widget # Place in highscore window ###length 15 @@ -926,6 +927,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nuov{G o STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Apri la finestra del gruppo focalizzata sul gruppo del veicolo +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} non accetta più: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} Accetta: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Offerta di sussidio scaduta:{}{}Il trasporto di {STRING} da {STRING} a {STRING} non darà più diritto a sovvenzioni STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Sussidio terminato:{}{}Il trasporto di {STRING} da {STRING} a {STRING} non è più sovvenzionato @@ -1089,6 +1092,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Pacchett STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleziona il pacchetto musicale di base da utilizzare STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informazioni aggiuntive sul pacchetto musicale di base +STR_BASESET_STATUS :{STRING} {RED}({NUM} file{P "" s} mancant{P e i}/corrott{P o i}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Errore nel recupero della lista delle risoluzioni supportate STR_ERROR_FULLSCREEN_FAILED :{WHITE}Attivazione modalità schermo intero non riuscita @@ -2226,6 +2230,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Modifica STR_CHEAT_CHANGE_DATE :{LTBLUE}Cambia data: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Cambia l'anno corrente STR_CHEAT_SETUP_PROD :{LTBLUE}Permetti la modifica dei valori di produzione: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Fissa le valutazioni delle stazioni al 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Schema colori @@ -3420,6 +3425,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Salva STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Salva il profilo utilizzando il nome inserito # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Modifica dei parametri grafici di base STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Cambia parametri NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Chiudi STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reimposta @@ -5224,6 +5230,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossib STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}I veicoli possono attendere solo alle stazioni STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Il veicolo non ferma a questa stazione STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... l'orario è incompleto +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... l'orario non è ancora partito # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... troppi cartelli diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index fdb54e9749..4f7f90fdb6 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -1091,6 +1091,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunto STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Seleccione o conjunto de música base a usar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informação adicional sobre o conjunto de música base +STR_BASESET_STATUS :{STRING} {RED}({NUM} ficheiro{P "" s} em falta/corrompido{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Erro ao obter uma lista de resoluções suportadas STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modo de ecrã inteiro falhou diff --git a/src/lang/russian.txt b/src/lang/russian.txt index e08c2166a9..4d0c3637d7 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1235,6 +1235,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Осно STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Выбор основного музыкального пакета STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Дополнительная информация о выбранном музыкальном пакете +STR_BASESET_STATUS :{STRING} {RED}({NUM} отсутствующи{P й х х}/повреждённы{P й х х} файл{P "" а ов}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Не удалось получить список поддерживаемых разрешений экрана STR_ERROR_FULLSCREEN_FAILED :{WHITE}Сбой полноэкранного режима From 5446ece100b7e68012fc0fc27804e3e535cd7a1d Mon Sep 17 00:00:00 2001 From: translators Date: Sun, 12 Nov 2023 18:38:05 +0000 Subject: [PATCH 22/54] Update: Translations from eints vietnamese: 7 changes by KhoiCanDev korean: 1 change by telk5093 catalan: 7 changes by J0anJosep --- src/lang/catalan.txt | 7 +++++++ src/lang/korean.txt | 1 + src/lang/vietnamese.txt | 7 +++++++ 3 files changed, 15 insertions(+) diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 99acbd4508..881be8c9e7 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -534,6 +534,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Quant a l'OpenT STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador de sprites STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Commuta les caixes delimitadores STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Commuta l'acoloriment de blocs bruts +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Commuta les línies delimitadores dels widgets # Place in highscore window ###length 15 @@ -925,6 +926,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}No{G u v STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Obre la finestra del grup amb el focus en el vehicle. +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} ja no accepta: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} ara accepta: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Oferta de subvenció caducada:{}{}El transport de {STRING} des de {STRING} fins a {STRING} no tindrà subvenció STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subvenció retirada:{}{}El transport de {STRING} des de {STRING} fins a {STRING} ja no està subvencionat @@ -1088,6 +1091,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Conjunt STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecciona el conjunt de peces de música base a utilitzar STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informació addicional sobre el conjunt de peces de música base +STR_BASESET_STATUS :{STRING} {RED}(hi ha {NUM} fitxer{P " que fa falta o està corromput" "s que fan falta o estan corromputs"}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}No s'ha pogut obtenir la llista de resolucions permeses STR_ERROR_FULLSCREEN_FAILED :{WHITE}Ha fallat el mode pantalla completa @@ -2192,6 +2196,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Edita l' STR_CHEAT_CHANGE_DATE :{LTBLUE}Canvia la data: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Canvia l'any actual STR_CHEAT_SETUP_PROD :{LTBLUE}Activa la modificació dels valors de producció: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Arregla els ratis d'estació al 100{NBSP}%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Esquema de colors nou @@ -3380,6 +3385,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Guarda STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Guarda la configuració NewGRF preestablerta amb el nom seleccionat # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Canvia els paràmetres dels gràfics base STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Canvia els paràmetres NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tanca STR_NEWGRF_PARAMETERS_RESET :{BLACK}Restableix @@ -5184,6 +5190,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Impossib STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Els vehicles només poden esperar a les estacions STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Aquest vehicle no para en aquesta estació STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... l'horari està incomplet. +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... l'horari encara no ha començat. # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... massa senyals diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 12c642cfc0..ebfb457083 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1091,6 +1091,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}기본 STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}게임에 사용할 기본 배경 음악 세트를 선택하세요 STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}기본 배경 음악 세트에 대한 추가 정보를 봅니다. +STR_BASESET_STATUS :{STRING} {RED}({NUM}개의 파일이 빠졌거나 손상되었습니다) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}지원되는 해상도 목록을 불러오는데 실패하였습니다. STR_ERROR_FULLSCREEN_FAILED :{WHITE}전체화면 모드 실패 diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 400fe72863..c2c2bd0d5f 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -533,6 +533,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Giới thiệu STR_ABOUT_MENU_SPRITE_ALIGNER :Trình điều chỉnh sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Bật/tắt hiển thị khối nhà STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Bật/tắt màu sắc trên các ô 'bẩn' +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Bật/tắt đường viền của tiện ích # Place in highscore window ###length 15 @@ -924,6 +925,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Mở cửa sổ gom nhóm và hiện nhóm của phương tiện +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} không còn chấp nhận: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} đã chấp nhận: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Lời đề nghị trợ cấp đã hết hạn:{}{}{STRING} từ {STRING} đến {STRING} bây giờ sẽ không có trợ cấp. STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Trợ cấp đã hết:{}{}Dịch vụ vận chuyển {STRING} từ {STRING} đến {STRING} sẽ không được trợ cấp nữa. @@ -1087,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Gói nh STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Chọn gói nhạc để sử dụng STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Thông tin thêm về gói nhạc chuẩn +STR_BASESET_STATUS :{STRING} {RED}({NUM} file bị hỏng/thiếu STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Không thể lấy danh sách độ phân giải được hỗ trợ STR_ERROR_FULLSCREEN_FAILED :{WHITE}Thất bại khi bật chế độ fullscreen @@ -2191,6 +2195,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Thay đ STR_CHEAT_CHANGE_DATE :{LTBLUE}Sửa thời gian: {ORANGE}{DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Thay đổi thời gian hiện tại STR_CHEAT_SETUP_PROD :{LTBLUE}Cho phép khả năng sửa giá trị sản xuất: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Cố định uy tín 100% cho các ga bến cảng: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Cách Phối Màu Mới @@ -3379,6 +3384,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Lưu STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Lưu thiết lập bằng tên được chọn # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Thay đổi các thông số của gói đồ họa chuẩn STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Thay Đổi Tham Số NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Đóng STR_NEWGRF_PARAMETERS_RESET :{BLACK}Đặt mặc định @@ -5183,6 +5189,7 @@ STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Không t STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Phương tiện chỉ có thể chờ ở nhà ga, bến, cảng. STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Phương tiện này không dừng lại tại ga, bến này theo lộ trình. STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... lịch trình chưa hoàn thiện +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... bảng lịch trình chưa bắt đầu # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... quá nhiều biển hiệu From 7a6d102c4bdb4372ae25e3ba6b1e167f8dfda76e Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Mon, 13 Nov 2023 07:19:39 -0500 Subject: [PATCH 23/54] Codechange: Clean up timetable start checks (#11456) --- src/timetable_cmd.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/timetable_cmd.cpp b/src/timetable_cmd.cpp index a18ed54426..c1911bd49e 100644 --- a/src/timetable_cmd.cpp +++ b/src/timetable_cmd.cpp @@ -311,14 +311,21 @@ CommandCost CmdSetTimetableStart(DoCommandFlag flags, VehicleID veh_id, bool tim CommandCost ret = CheckOwnership(v->owner); if (ret.Failed()) return ret; - int total_duration = v->orders->GetTimetableTotalDuration(); + TimerGameTick::Ticks total_duration = v->orders->GetTimetableTotalDuration(); - /* Don't let a timetable start more than 15 years into the future or 1 year in the past. */ + /* Don't let a timetable start at an invalid date. */ if (start_date < 0 || start_date > CalendarTime::MAX_DATE) return CMD_ERROR; + + /* Don't let a timetable start more than 15 years into the future... */ if (start_date - TimerGameCalendar::date > TimerGameCalendar::DateAtStartOfYear(MAX_TIMETABLE_START_YEARS)) return CMD_ERROR; + /* ...or 1 year in the past. */ if (TimerGameCalendar::date - start_date > CalendarTime::DAYS_IN_LEAP_YEAR) return CMD_ERROR; + + /* If trying to distribute start dates over a shared order group, we need to know the total duration. */ if (timetable_all && !v->orders->IsCompleteTimetable()) return CommandCost(STR_ERROR_TIMETABLE_INCOMPLETE); - if (timetable_all && start_date + total_duration / Ticks::DAY_TICKS > CalendarTime::MAX_DATE) return CMD_ERROR; + + /* Don't allow invalid start dates for other vehicles in the shared order group. */ + if (timetable_all && start_date + (total_duration / Ticks::DAY_TICKS) > CalendarTime::MAX_DATE) return CMD_ERROR; if (flags & DC_EXEC) { std::vector vehs; From c877494f7aec2b7cdb74649ba5933484bd9081c0 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 13 Nov 2023 12:32:34 +0000 Subject: [PATCH 24/54] Codechange: Simplify autoreplace rail/road types by using separate widget. (#11457) This avoids needing to determine which type of list to deal with by additionally checking the window number for VEH_TRAIN/VEH_ROAD. --- src/autoreplace_gui.cpp | 132 +++++++++++++------------------ src/widgets/autoreplace_widget.h | 7 +- 2 files changed, 60 insertions(+), 79 deletions(-) diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index a883cc3b8d..508a96433d 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -270,6 +270,21 @@ class ReplaceVehicleWindow : public Window { Command::Post(this->sel_group, veh_from, veh_to, replace_when_old); } + /** + * Perform tasks after rail or road type is changed. + */ + void OnRailRoadTypeChange() + { + /* Reset scrollbar positions */ + this->vscroll[0]->SetPosition(0); + this->vscroll[1]->SetPosition(0); + /* Rebuild the lists */ + this->engines[0].ForceRebuild(); + this->engines[1].ForceRebuild(); + this->reset_sel_engine = true; + this->SetDirty(); + } + public: ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc) { @@ -294,11 +309,6 @@ public: widget->SetLowered(this->show_hidden_engines); this->FinishInitNested(vehicletype); - if (vehicletype == VEH_TRAIN || vehicletype == VEH_ROAD) { - widget = this->GetWidget(WID_RV_RAIL_ROAD_TYPE_DROPDOWN); - widget->tool_tip = STR_REPLACE_HELP_RAILTYPE + vehicletype; - } - this->sort_criteria = _engine_sort_last_criteria[vehicletype]; this->descending_sort_order = _engine_sort_last_order[vehicletype]; this->owner = _local_company; @@ -357,28 +367,21 @@ public: break; } - case WID_RV_RAIL_ROAD_TYPE_DROPDOWN: { + case WID_RV_RAIL_TYPE_DROPDOWN: { Dimension d = {0, 0}; - switch (this->window_number) { - case VEH_TRAIN: - for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) { - const RailTypeInfo *rti = GetRailTypeInfo(rt); - /* Skip rail type if it has no label */ - if (rti->label == 0) continue; - d = maxdim(d, GetStringBoundingBox(rti->strings.replace_text)); - } - break; - - case VEH_ROAD: - for (RoadType rt = ROADTYPE_BEGIN; rt < ROADTYPE_END; rt++) { - const RoadTypeInfo *rti = GetRoadTypeInfo(rt); - /* Skip road type if it has no label */ - if (rti->label == 0) continue; - d = maxdim(d, GetStringBoundingBox(rti->strings.replace_text)); - } - break; + for (const RailType &rt : _sorted_railtypes) { + d = maxdim(d, GetStringBoundingBox(GetRailTypeInfo(rt)->strings.replace_text)); + } + d.width += padding.width; + d.height += padding.height; + *size = maxdim(*size, d); + break; + } - default: NOT_REACHED(); + case WID_RV_ROAD_TYPE_DROPDOWN: { + Dimension d = {0, 0}; + for (const RoadType &rt : _sorted_roadtypes) { + d = maxdim(d, GetStringBoundingBox(GetRoadTypeInfo(rt)->strings.replace_text)); } d.width += padding.width; d.height += padding.height; @@ -443,6 +446,14 @@ public: case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: SetDParam(0, this->replace_engines ? STR_REPLACE_ENGINES : STR_REPLACE_WAGONS); break; + + case WID_RV_RAIL_TYPE_DROPDOWN: + SetDParam(0, this->sel_railtype == INVALID_RAILTYPE ? STR_REPLACE_ALL_RAILTYPE : GetRailTypeInfo(this->sel_railtype)->strings.replace_text); + break; + + case WID_RV_ROAD_TYPE_DROPDOWN: + SetDParam(0, this->sel_roadtype == INVALID_ROADTYPE ? STR_REPLACE_ALL_ROADTYPE : GetRoadTypeInfo(this->sel_roadtype)->strings.replace_text); + break; } } @@ -503,20 +514,6 @@ public: * or The selected vehicle has no replacement set up */ this->SetWidgetDisabledState(WID_RV_STOP_REPLACE, this->sel_engine[0] == INVALID_ENGINE || !EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group)); - switch (this->window_number) { - case VEH_TRAIN: - /* Show the selected railtype in the pulldown menu */ - this->GetWidget(WID_RV_RAIL_ROAD_TYPE_DROPDOWN)->widget_data = sel_railtype == INVALID_RAILTYPE ? STR_REPLACE_ALL_RAILTYPE : GetRailTypeInfo(sel_railtype)->strings.replace_text; - break; - - case VEH_ROAD: - /* Show the selected roadtype in the pulldown menu */ - this->GetWidget(WID_RV_RAIL_ROAD_TYPE_DROPDOWN)->widget_data = sel_roadtype == INVALID_ROADTYPE ? STR_REPLACE_ALL_ROADTYPE : GetRoadTypeInfo(sel_roadtype)->strings.replace_text; - break; - - default: break; - } - this->DrawWidgets(); if (!this->IsShaded()) { @@ -574,16 +571,12 @@ public: break; } - case WID_RV_RAIL_ROAD_TYPE_DROPDOWN: // Rail/roadtype selection dropdown menu - switch (this->window_number) { - case VEH_TRAIN: - ShowDropDownList(this, GetRailTypeDropDownList(true, true), sel_railtype, WID_RV_RAIL_ROAD_TYPE_DROPDOWN); - break; + case WID_RV_RAIL_TYPE_DROPDOWN: // Railtype selection dropdown menu + ShowDropDownList(this, GetRailTypeDropDownList(true, true), this->sel_railtype, widget); + break; - case VEH_ROAD: - ShowDropDownList(this, GetRoadTypeDropDownList(RTTB_ROAD | RTTB_TRAM, true, true), sel_roadtype, WID_RV_RAIL_ROAD_TYPE_DROPDOWN); - break; - } + case WID_RV_ROAD_TYPE_DROPDOWN: // Roadtype selection dropdown menu + ShowDropDownList(this, GetRoadTypeDropDownList(RTTB_ROAD | RTTB_TRAM, true, true), this->sel_roadtype, widget); break; case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: { @@ -674,34 +667,21 @@ public: } break; - case WID_RV_RAIL_ROAD_TYPE_DROPDOWN: - switch (this->window_number) { - case VEH_TRAIN: { - RailType temp = (RailType)index; - if (temp == sel_railtype) return; // we didn't select a new one. No need to change anything - sel_railtype = temp; - break; - } - - case VEH_ROAD: { - RoadType temp = (RoadType)index; - if (temp == sel_roadtype) return; // we didn't select a new one. No need to change anything - sel_roadtype = temp; - break; - } - - default: NOT_REACHED(); - } + case WID_RV_RAIL_TYPE_DROPDOWN: { + RailType temp = (RailType)index; + if (temp == this->sel_railtype) return; // we didn't select a new one. No need to change anything + this->sel_railtype = temp; + this->OnRailRoadTypeChange(); + break; + } - /* Reset scrollbar positions */ - this->vscroll[0]->SetPosition(0); - this->vscroll[1]->SetPosition(0); - /* Rebuild the lists */ - this->engines[0].ForceRebuild(); - this->engines[1].ForceRebuild(); - this->reset_sel_engine = true; - this->SetDirty(); + case WID_RV_ROAD_TYPE_DROPDOWN: { + RoadType temp = (RoadType)index; + if (temp == this->sel_roadtype) return; // we didn't select a new one. No need to change anything + this->sel_roadtype = temp; + this->OnRailRoadTypeChange(); break; + } case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: { this->replace_engines = index != 0; @@ -771,7 +751,7 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = { NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_VERTICAL), NWidget(NWID_HORIZONTAL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_RAIL_ROAD_TYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(0x0, STR_REPLACE_HELP_RAILTYPE), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_RAIL_TYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(STR_JUST_STRING, STR_REPLACE_HELP_RAILTYPE), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_REPLACE_ENGINE_WAGON_SELECT_HELP), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(), @@ -834,7 +814,7 @@ static const NWidgetPart _nested_replace_road_vehicle_widgets[] = { EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_VERTICAL), - NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_RAIL_ROAD_TYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(0x0, STR_REPLACE_HELP_RAILTYPE), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_ROAD_TYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(STR_JUST_STRING, STR_REPLACE_HELP_ROADTYPE), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(), EndContainer(), NWidget(NWID_VERTICAL), diff --git a/src/widgets/autoreplace_widget.h b/src/widgets/autoreplace_widget.h index 3522dbc8d6..ab0b14aad2 100644 --- a/src/widgets/autoreplace_widget.h +++ b/src/widgets/autoreplace_widget.h @@ -32,12 +32,13 @@ enum ReplaceVehicleWidgets { WID_RV_INFO_TAB, ///< Info tab. WID_RV_STOP_REPLACE, ///< Stop Replacing button. - /* Train/road only widgets */ - WID_RV_RAIL_ROAD_TYPE_DROPDOWN, ///< Dropdown menu about the rail/roadtype. - /* Train only widgets. */ + WID_RV_RAIL_TYPE_DROPDOWN, ///< Dropdown to select railtype. WID_RV_TRAIN_ENGINEWAGON_DROPDOWN, ///< Dropdown to select engines and/or wagons. WID_RV_TRAIN_WAGONREMOVE_TOGGLE, ///< Button to toggle removing wagons. + + /* Road only widgets. */ + WID_RV_ROAD_TYPE_DROPDOWN, ///< Dropdown to select roadtype. }; #endif /* WIDGETS_AUTOREPLACE_WIDGET_H */ From 1242b355e5145e66956bc737ec70772a000d00a2 Mon Sep 17 00:00:00 2001 From: translators Date: Mon, 13 Nov 2023 18:38:10 +0000 Subject: [PATCH 25/54] Update: Translations from eints danish: 1 change by bscargo polish: 1 change by pAter-exe --- src/lang/danish.txt | 1 + src/lang/polish.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 00dc3a3f1c..45d139e198 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -1090,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basis-mu STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Vælg basismusik-sæt STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Yderligere information om basismusik-sættet +STR_BASESET_STATUS :{STRING} {RED}({NUM} manglende/beskadiget fil{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Det lykkedes ikke at hente en liste over understøttede opløsninger STR_ERROR_FULLSCREEN_FAILED :{WHITE}Fuldskærmstilstand fejlede diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 1b0159bc68..7392866582 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1470,6 +1470,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Podstawo STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Wybierz podstawowy zestaw muzyki do użycia STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Dodatkowe informacje o muzyce podstawowej +STR_BASESET_STATUS :{STRING} {RED}({NUM} brakując{P y e ych}/uszkodzon{P y e ych} plik{P "" i ów}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Nie udało się pobrać listy obsługiwanych rozdzielczości STR_ERROR_FULLSCREEN_FAILED :{WHITE}Uruchomienie trybu pełnoekranowego nie powiodło się From 08dfe3544214932c9dc26dc0ab13710abfc9751e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 12 Nov 2023 08:08:30 +0000 Subject: [PATCH 26/54] Codechange: Move DropDownList height and width calculation to helper. --- src/widgets/dropdown.cpp | 47 ++++++++++++++++++++----------------- src/widgets/dropdown_type.h | 2 ++ 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/widgets/dropdown.cpp b/src/widgets/dropdown.cpp index 492b6edb62..a36dc63bad 100644 --- a/src/widgets/dropdown.cpp +++ b/src/widgets/dropdown.cpp @@ -335,6 +335,21 @@ struct DropdownWindow : Window { } }; +/** + * Determine width and height required to fully display a DropDownList + * @param list The list. + * @return Dimension required to display the list. + */ +Dimension GetDropDownListDimension(const DropDownList &list) +{ + Dimension dim{}; + for (const auto &item : list) { + dim.height += item->Height(); + dim.width = std::max(dim.width, item->Width()); + } + return dim; +} + /** * Show a drop down list. * @param w Parent window for the list. @@ -356,18 +371,9 @@ void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, int button /* The preferred width equals the calling widget */ uint width = wi_rect.Width(); - /* Longest item in the list */ - uint max_item_width = 0; - - /* Total height of list */ - uint height = 0; - - for (const auto &item : list) { - height += item->Height(); - max_item_width = std::max(max_item_width, item->Width()); - } - - max_item_width += WidgetDimensions::scaled.fullbevel.Horizontal(); + /* Get the height and width required for the list. */ + Dimension dim = GetDropDownListDimension(list); + dim.width += WidgetDimensions::scaled.fullbevel.Horizontal(); /* Scrollbar needed? */ bool scroll = false; @@ -379,7 +385,7 @@ void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, int button uint available_height = std::max(GetMainViewBottom() - top - (int)WidgetDimensions::scaled.fullbevel.Vertical() * 2, 0); /* If the dropdown doesn't fully fit below the widget... */ - if (height > available_height) { + if (dim.height > available_height) { uint available_height_above = std::max(w->top + wi_rect.top - GetMainViewTop() - (int)WidgetDimensions::scaled.fullbevel.Vertical() * 2, 0); @@ -390,29 +396,28 @@ void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, int button } /* If the dropdown doesn't fully fit, we need a dropdown. */ - if (height > available_height) { + if (dim.height > available_height) { scroll = true; - uint avg_height = height / (uint)list.size(); + uint avg_height = dim.height / (uint)list.size(); /* Fit the list; create at least one row, even if there is no height available. */ uint rows = std::max(available_height / avg_height, 1); - height = rows * avg_height; + dim.height = rows * avg_height; /* Add space for the scrollbar. */ - max_item_width += NWidgetScrollbar::GetVerticalDimension().width; + dim.width += NWidgetScrollbar::GetVerticalDimension().width; } /* Set the top position if needed. */ if (above) { - top = w->top + wi_rect.top - height - WidgetDimensions::scaled.fullbevel.Vertical() * 2; + top = w->top + wi_rect.top - dim.height - WidgetDimensions::scaled.fullbevel.Vertical() * 2; } } - width = std::max(width, max_item_width); + dim.width = std::max(width, dim.width); Point dw_pos = { w->left + (_current_text_dir == TD_RTL ? wi_rect.right + 1 - (int)width : wi_rect.left), top}; - Dimension dw_size = {width, height}; - DropdownWindow *dropdown = new DropdownWindow(w, std::move(list), selected, button, instant_close, dw_pos, dw_size, wi_colour, scroll); + DropdownWindow *dropdown = new DropdownWindow(w, std::move(list), selected, button, instant_close, dw_pos, dim, wi_colour, scroll); /* The dropdown starts scrolling downwards when opening it towards * the top and holding down the mouse button. It can be fooled by diff --git a/src/widgets/dropdown_type.h b/src/widgets/dropdown_type.h index 3135073a0d..12992f2168 100644 --- a/src/widgets/dropdown_type.h +++ b/src/widgets/dropdown_type.h @@ -76,4 +76,6 @@ void ShowDropDownListAt(Window *w, DropDownList &&list, int selected, int button void ShowDropDownList(Window *w, DropDownList &&list, int selected, int button, uint width = 0, bool instant_close = false); +Dimension GetDropDownListDimension(const DropDownList &list); + #endif /* WIDGETS_DROPDOWN_TYPE_H */ From 7cfcf65f9514dcee6df73b776cffb48d015a6dc9 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 12 Nov 2023 21:32:12 +0000 Subject: [PATCH 27/54] Codechange: Simplify cargo filter lists, building only when required. Some cargo filter lists were built in advance, and used as lookups to test which cargo type to filter. Instead, use the Cargo ID directly as the filter parameter, and build the lists only when the drop down list is used. --- src/build_vehicle_gui.cpp | 107 ++++++++++++++++++-------------------- src/group_gui.cpp | 9 ++-- src/industry_gui.cpp | 79 ++++++++++++++-------------- src/vehicle_gui.cpp | 72 ++++++++++++------------- src/vehicle_gui_base.h | 4 +- 5 files changed, 133 insertions(+), 138 deletions(-) diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index cfedffa181..290a0f2cd0 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -1135,9 +1135,7 @@ struct BuildVehicleWindow : Window { EngineID sel_engine; ///< Currently selected engine, or #INVALID_ENGINE EngineID rename_engine; ///< Engine being renamed. GUIEngineList eng_list; - CargoID cargo_filter[NUM_CARGO + 3]; ///< Available cargo filters; CargoID or CF_ANY or CF_NONE or CF_ENGINES - StringID cargo_filter_texts[NUM_CARGO + 4]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID - byte cargo_filter_criteria; ///< Selected cargo filter + CargoID cargo_filter_criteria; ///< Selected cargo filter int details_height; ///< Minimal needed height of the details panels, in text lines (found so far). Scrollbar *vscroll; TestedEngineDetails te; ///< Tested cost and capacity after refit. @@ -1149,8 +1147,8 @@ struct BuildVehicleWindow : Window { { NWidgetCore *widget = this->GetWidget(WID_BV_BUILD); - bool refit = this->sel_engine != INVALID_ENGINE && this->cargo_filter[this->cargo_filter_criteria] != CF_ANY && this->cargo_filter[this->cargo_filter_criteria] != CF_NONE; - if (refit) refit = Engine::Get(this->sel_engine)->GetDefaultCargoType() != this->cargo_filter[this->cargo_filter_criteria]; + bool refit = this->sel_engine != INVALID_ENGINE && this->cargo_filter_criteria != CF_ANY && this->cargo_filter_criteria != CF_NONE; + if (refit) refit = Engine::Get(this->sel_engine)->GetDefaultCargoType() != this->cargo_filter_criteria; if (refit) { widget->widget_data = STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type; @@ -1272,58 +1270,29 @@ struct BuildVehicleWindow : Window { } } - /** Populate the filter list and set the cargo filter criteria. */ - void SetCargoFilterArray() + StringID GetCargoFilterLabel(CargoID cid) const { - uint filter_items = 0; - - /* Add item for disabling filtering. */ - this->cargo_filter[filter_items] = CF_ANY; - this->cargo_filter_texts[filter_items] = STR_PURCHASE_INFO_ALL_TYPES; - filter_items++; - - /* Specific filters for trains. */ - if (this->vehicle_type == VEH_TRAIN) { - /* Add item for locomotives only in case of trains. */ - this->cargo_filter[filter_items] = CF_ENGINES; - this->cargo_filter_texts[filter_items] = STR_PURCHASE_INFO_ENGINES_ONLY; - filter_items++; - - /* Add item for vehicles not carrying anything, e.g. train engines. - * This could also be useful for eyecandy vehicles of other types, but is likely too confusing for joe, */ - this->cargo_filter[filter_items] = CF_NONE; - this->cargo_filter_texts[filter_items] = STR_PURCHASE_INFO_NONE; - filter_items++; + switch (cid) { + case CF_ANY: return STR_PURCHASE_INFO_ALL_TYPES; + case CF_ENGINES: return STR_PURCHASE_INFO_ENGINES_ONLY; + case CF_NONE: return STR_PURCHASE_INFO_NONE; + default: return CargoSpec::Get(cid)->name; } + } - /* Collect available cargo types for filtering. */ - for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - this->cargo_filter[filter_items] = cs->Index(); - this->cargo_filter_texts[filter_items] = cs->name; - filter_items++; - } - - /* Terminate the filter list. */ - this->cargo_filter_texts[filter_items] = INVALID_STRING_ID; - - /* If not found, the cargo criteria will be set to all cargoes. */ - this->cargo_filter_criteria = 0; - - /* Find the last cargo filter criteria. */ - for (uint i = 0; i < filter_items; i++) { - if (this->cargo_filter[i] == _engine_sort_last_cargo_criteria[this->vehicle_type]) { - this->cargo_filter_criteria = i; - break; - } - } + /** Populate the filter list and set the cargo filter criteria. */ + void SetCargoFilterArray() + { + /* Set the last cargo filter criteria. */ + this->cargo_filter_criteria = _engine_sort_last_cargo_criteria[this->vehicle_type]; this->eng_list.SetFilterFuncs(_filter_funcs); - this->eng_list.SetFilterState(this->cargo_filter[this->cargo_filter_criteria] != CF_ANY); + this->eng_list.SetFilterState(this->cargo_filter_criteria != CF_ANY); } void SelectEngine(EngineID engine) { - CargoID cargo = this->cargo_filter[this->cargo_filter_criteria]; + CargoID cargo = this->cargo_filter_criteria; if (cargo == CF_ANY || cargo == CF_ENGINES || cargo == CF_NONE) cargo = CT_INVALID; this->sel_engine = engine; @@ -1359,7 +1328,7 @@ struct BuildVehicleWindow : Window { /** Filter the engine list against the currently selected cargo filter */ void FilterEngineList() { - this->eng_list.Filter(this->cargo_filter[this->cargo_filter_criteria]); + this->eng_list.Filter(this->cargo_filter_criteria); if (0 == this->eng_list.size()) { // no engine passed through the filter, invalidate the previously selected engine this->SelectEngine(INVALID_ENGINE); } else if (std::find(this->eng_list.begin(), this->eng_list.end(), this->sel_engine) == this->eng_list.end()) { // previously selected engine didn't pass the filter, select the first engine of the list @@ -1370,9 +1339,8 @@ struct BuildVehicleWindow : Window { /** Filter a single engine */ bool FilterSingleEngine(EngineID eid) { - CargoID filter_type = this->cargo_filter[this->cargo_filter_criteria]; GUIEngineListItem item = {eid, eid, EngineDisplayFlags::None, 0}; - return CargoAndEngineFilter(&item, filter_type); + return CargoAndEngineFilter(&item, this->cargo_filter_criteria); } /** Filter by name and NewGRF extra text */ @@ -1594,6 +1562,29 @@ struct BuildVehicleWindow : Window { this->eng_list.RebuildDone(); } + DropDownList BuildCargoDropDownList() const + { + DropDownList list; + + /* Add item for disabling filtering. */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_ANY), CF_ANY, false)); + /* Specific filters for trains. */ + if (this->vehicle_type == VEH_TRAIN) { + /* Add item for locomotives only in case of trains. */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_ENGINES), CF_ENGINES, false)); + /* Add item for vehicles not carrying anything, e.g. train engines. + * This could also be useful for eyecandy vehicles of other types, but is likely too confusing for joe, */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_NONE), CF_NONE, false)); + } + + /* Add cargos */ + for (const CargoSpec *cs : _sorted_standard_cargo_specs) { + list.push_back(std::make_unique(cs->name, cs->Index(), false)); + } + + return list; + } + void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override { switch (widget) { @@ -1645,7 +1636,7 @@ struct BuildVehicleWindow : Window { break; case WID_BV_CARGO_FILTER_DROPDOWN: // Select cargo filtering criteria dropdown menu - ShowDropDownMenu(this, this->cargo_filter_texts, this->cargo_filter_criteria, WID_BV_CARGO_FILTER_DROPDOWN, 0, 0); + ShowDropDownList(this, this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget); break; case WID_BV_SHOW_HIDE: { @@ -1659,7 +1650,7 @@ struct BuildVehicleWindow : Window { case WID_BV_BUILD: { EngineID sel_eng = this->sel_engine; if (sel_eng != INVALID_ENGINE) { - CargoID cargo = this->cargo_filter[this->cargo_filter_criteria]; + CargoID cargo = this->cargo_filter_criteria; if (cargo == CF_ANY || cargo == CF_ENGINES || cargo == CF_NONE) cargo = CT_INVALID; if (this->vehicle_type == VEH_TRAIN && RailVehInfo(sel_eng)->railveh_type == RAILVEH_WAGON) { Command::Post(GetCmdBuildVehMsg(this->vehicle_type), CcBuildWagon, this->window_number, sel_eng, true, cargo, INVALID_CLIENT_ID); @@ -1735,7 +1726,7 @@ struct BuildVehicleWindow : Window { break; case WID_BV_CARGO_FILTER_DROPDOWN: - SetDParam(0, this->cargo_filter_texts[this->cargo_filter_criteria]); + SetDParam(0, this->GetCargoFilterLabel(this->cargo_filter_criteria)); break; case WID_BV_SHOW_HIDE: { @@ -1771,6 +1762,10 @@ struct BuildVehicleWindow : Window { break; } + case WID_BV_CARGO_FILTER_DROPDOWN: + size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width); + break; + case WID_BV_BUILD: *size = GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON + this->vehicle_type); *size = maxdim(*size, GetStringBoundingBox(STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON + this->vehicle_type)); @@ -1859,9 +1854,9 @@ struct BuildVehicleWindow : Window { case WID_BV_CARGO_FILTER_DROPDOWN: // Select a cargo filter criteria if (this->cargo_filter_criteria != index) { this->cargo_filter_criteria = index; - _engine_sort_last_cargo_criteria[this->vehicle_type] = this->cargo_filter[this->cargo_filter_criteria]; + _engine_sort_last_cargo_criteria[this->vehicle_type] = this->cargo_filter_criteria; /* deactivate filter if criteria is 'Show All', activate it otherwise */ - this->eng_list.SetFilterState(this->cargo_filter[this->cargo_filter_criteria] != CF_ANY); + this->eng_list.SetFilterState(this->cargo_filter_criteria != CF_ANY); this->eng_list.ForceRebuild(); this->SelectEngine(this->sel_engine); } diff --git a/src/group_gui.cpp b/src/group_gui.cpp index b3080c8044..b9825a40b8 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -424,7 +424,7 @@ public: break; case WID_GL_FILTER_BY_CARGO: - size->width = GetStringListWidth(this->cargo_filter_texts) + padding.width; + size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width); break; case WID_GL_MANAGE_VEHICLES_DROPDOWN: { @@ -470,7 +470,7 @@ public: { switch (widget) { case WID_GL_FILTER_BY_CARGO: - SetDParam(0, this->cargo_filter_texts[this->cargo_filter_criteria]); + SetDParam(0, this->GetCargoFilterLabel(this->cargo_filter_criteria)); break; case WID_GL_AVAILABLE_VEHICLES: @@ -549,9 +549,6 @@ public: /* Set text of "sort by" dropdown widget. */ this->GetWidget(WID_GL_SORT_BY_DROPDOWN)->widget_data = this->GetVehicleSorterNames()[this->vehgroups.SortType()]; - /* Set text of filter by cargo dropdown */ - this->GetWidget(WID_GL_FILTER_BY_CARGO)->widget_data = this->cargo_filter_texts[this->cargo_filter_criteria]; - this->DrawWidgets(); } @@ -668,7 +665,7 @@ public: return; case WID_GL_FILTER_BY_CARGO: // Select filtering criteria dropdown menu - ShowDropDownMenu(this, this->cargo_filter_texts, this->cargo_filter_criteria, WID_GL_FILTER_BY_CARGO, 0, 0); + ShowDropDownList(this, this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget); break; case WID_GL_ALL_VEHICLES: // All vehicles button diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index c4fa764e11..318ad6748a 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -1319,10 +1319,8 @@ protected: Scrollbar *vscroll; Scrollbar *hscroll; - CargoID cargo_filter[NUM_CARGO + 2]; ///< Available cargo filters; CargoID or CF_ANY or CF_NONE - StringID cargo_filter_texts[NUM_CARGO + 3]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID - byte produced_cargo_filter_criteria; ///< Selected produced cargo filter index - byte accepted_cargo_filter_criteria; ///< Selected accepted cargo filter index + CargoID produced_cargo_filter_criteria; ///< Selected produced cargo filter index + CargoID accepted_cargo_filter_criteria; ///< Selected accepted cargo filter index static CargoID produced_cargo_filter; const int MAX_FILTER_LENGTH = 16; ///< The max length of the filter, in chars @@ -1345,7 +1343,7 @@ protected: if (this->produced_cargo_filter_criteria != index) { this->produced_cargo_filter_criteria = index; /* deactivate filter if criteria is 'Show All', activate it otherwise */ - bool is_filtering_necessary = this->cargo_filter[this->produced_cargo_filter_criteria] != CF_ANY || this->cargo_filter[this->accepted_cargo_filter_criteria] != CF_ANY; + bool is_filtering_necessary = this->produced_cargo_filter_criteria != CF_ANY || this->accepted_cargo_filter_criteria != CF_ANY; this->industries.SetFilterState(is_filtering_necessary); this->industries.SetFilterType(0); @@ -1362,7 +1360,7 @@ protected: if (this->accepted_cargo_filter_criteria != index) { this->accepted_cargo_filter_criteria = index; /* deactivate filter if criteria is 'Show All', activate it otherwise */ - bool is_filtering_necessary = this->cargo_filter[this->produced_cargo_filter_criteria] != CF_ANY || this->cargo_filter[this->accepted_cargo_filter_criteria] != CF_ANY; + bool is_filtering_necessary = this->produced_cargo_filter_criteria != CF_ANY || this->accepted_cargo_filter_criteria != CF_ANY; this->industries.SetFilterState(is_filtering_necessary); this->industries.SetFilterType(0); @@ -1370,38 +1368,26 @@ protected: } } + StringID GetCargoFilterLabel(CargoID cid) const + { + switch (cid) { + case CF_ANY: return STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES; + case CF_NONE: return STR_INDUSTRY_DIRECTORY_FILTER_NONE; + default: return CargoSpec::Get(cid)->name; + } + } + /** * Populate the filter list and set the cargo filter criteria. */ void SetCargoFilterArray() { - byte filter_items = 0; - - /* Add item for disabling filtering. */ - this->cargo_filter[filter_items] = CF_ANY; - this->cargo_filter_texts[filter_items] = STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES; - this->produced_cargo_filter_criteria = filter_items; - this->accepted_cargo_filter_criteria = filter_items; - filter_items++; - - /* Add item for industries not producing anything, e.g. power plants */ - this->cargo_filter[filter_items] = CF_NONE; - this->cargo_filter_texts[filter_items] = STR_INDUSTRY_DIRECTORY_FILTER_NONE; - filter_items++; - - /* Collect available cargo types for filtering. */ - for (const CargoSpec *cs : _sorted_standard_cargo_specs) { - this->cargo_filter[filter_items] = cs->Index(); - this->cargo_filter_texts[filter_items] = cs->name; - filter_items++; - } - - /* Terminate the filter list. */ - this->cargo_filter_texts[filter_items] = INVALID_STRING_ID; + this->produced_cargo_filter_criteria = CF_ANY; + this->accepted_cargo_filter_criteria = CF_ANY; this->industries.SetFilterFuncs(_filter_funcs); - bool is_filtering_necessary = this->cargo_filter[this->produced_cargo_filter_criteria] != CF_ANY || this->cargo_filter[this->accepted_cargo_filter_criteria] != CF_ANY; + bool is_filtering_necessary = this->produced_cargo_filter_criteria != CF_ANY || this->accepted_cargo_filter_criteria != CF_ANY; this->industries.SetFilterState(is_filtering_necessary); } @@ -1438,8 +1424,7 @@ protected: this->industries.shrink_to_fit(); this->industries.RebuildDone(); - auto filter = std::make_pair(this->cargo_filter[this->accepted_cargo_filter_criteria], - this->cargo_filter[this->produced_cargo_filter_criteria]); + auto filter = std::make_pair(this->accepted_cargo_filter_criteria, this->produced_cargo_filter_criteria); this->industries.Filter(filter); @@ -1447,7 +1432,7 @@ protected: this->vscroll->SetCount(this->industries.size()); // Update scrollbar as well. } - IndustryDirectoryWindow::produced_cargo_filter = this->cargo_filter[this->produced_cargo_filter_criteria]; + IndustryDirectoryWindow::produced_cargo_filter = this->produced_cargo_filter_criteria; this->industries.Sort(); this->SetDirty(); @@ -1599,7 +1584,7 @@ protected: /* If the produced cargo filter is active then move the filtered cargo to the beginning of the list, * because this is the one the player interested in, and that way it is not hidden in the 'n' more cargos */ - const CargoID cid = this->cargo_filter[this->produced_cargo_filter_criteria]; + const CargoID cid = this->produced_cargo_filter_criteria; if (cid != CF_ANY && cid != CF_NONE) { auto filtered_ci = std::find_if(cargos.begin(), cargos.end(), [cid](const CargoInfo &ci) -> bool { return ci.cargo_id == cid; @@ -1669,11 +1654,11 @@ public: break; case WID_ID_FILTER_BY_ACC_CARGO: - SetDParam(0, this->cargo_filter_texts[this->accepted_cargo_filter_criteria]); + SetDParam(0, this->GetCargoFilterLabel(this->accepted_cargo_filter_criteria)); break; case WID_ID_FILTER_BY_PROD_CARGO: - SetDParam(0, this->cargo_filter_texts[this->produced_cargo_filter_criteria]); + SetDParam(0, this->GetCargoFilterLabel(this->produced_cargo_filter_criteria)); break; } } @@ -1705,7 +1690,7 @@ public: break; } int n = 0; - const CargoID acf_cid = this->cargo_filter[this->accepted_cargo_filter_criteria]; + const CargoID acf_cid = this->accepted_cargo_filter_criteria; for (uint i = this->vscroll->GetPosition(); i < this->industries.size(); i++) { TextColour tc = TC_FROMSTRING; if (acf_cid != CF_ANY && acf_cid != CF_NONE) { @@ -1758,6 +1743,22 @@ public: } } + DropDownList BuildCargoDropDownList() const + { + DropDownList list; + + /* Add item for disabling filtering. */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_ANY), CF_ANY, false)); + /* Add item for industries not producing anything, e.g. power plants */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_NONE), CF_NONE, false)); + + /* Add cargos */ + for (const CargoSpec *cs : _sorted_standard_cargo_specs) { + list.push_back(std::make_unique(cs->name, cs->Index(), false)); + } + + return list; + } void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override { @@ -1772,11 +1773,11 @@ public: break; case WID_ID_FILTER_BY_ACC_CARGO: // Cargo filter dropdown - ShowDropDownMenu(this, this->cargo_filter_texts, this->accepted_cargo_filter_criteria, WID_ID_FILTER_BY_ACC_CARGO, 0, 0); + ShowDropDownList(this, this->BuildCargoDropDownList(), this->accepted_cargo_filter_criteria, widget); break; case WID_ID_FILTER_BY_PROD_CARGO: // Cargo filter dropdown - ShowDropDownMenu(this, this->cargo_filter_texts, this->produced_cargo_filter_criteria, WID_ID_FILTER_BY_PROD_CARGO, 0, 0); + ShowDropDownList(this, this->BuildCargoDropDownList(), this->produced_cargo_filter_criteria, widget); break; case WID_ID_INDUSTRY_LIST: { diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 38f310f155..c581a9ce1e 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -300,7 +300,7 @@ void BaseVehicleListWindow::SetCargoFilterIndex(byte index) if (this->cargo_filter_criteria != index) { this->cargo_filter_criteria = index; /* Deactivate filter if criteria is 'Show All', activate it otherwise. */ - this->vehgroups.SetFilterState(this->cargo_filter[this->cargo_filter_criteria] != CF_ANY); + this->vehgroups.SetFilterState(this->cargo_filter_criteria != CF_ANY); this->vehgroups.SetFilterType(0); this->vehgroups.ForceRebuild(); } @@ -311,36 +311,9 @@ void BaseVehicleListWindow::SetCargoFilterIndex(byte index) */ void BaseVehicleListWindow::SetCargoFilterArray() { - byte filter_items = 0; - - /* Add item for disabling filtering. */ - this->cargo_filter[filter_items] = CF_ANY; - this->cargo_filter_texts[filter_items] = STR_CARGO_TYPE_FILTER_ALL; - this->cargo_filter_criteria = filter_items; - filter_items++; - - /* Add item for freight (i.e. vehicles with cargo capacity and with no passenger capacity). */ - this->cargo_filter[filter_items] = CF_FREIGHT; - this->cargo_filter_texts[filter_items] = STR_CARGO_TYPE_FILTER_FREIGHT; - filter_items++; - - /* Add item for vehicles not carrying anything, e.g. train engines. */ - this->cargo_filter[filter_items] = CF_NONE; - this->cargo_filter_texts[filter_items] = STR_CARGO_TYPE_FILTER_NONE; - filter_items++; - - /* Collect available cargo types for filtering. */ - for (const auto &cs : _sorted_cargo_specs) { - this->cargo_filter[filter_items] = cs->Index(); - this->cargo_filter_texts[filter_items] = cs->name; - filter_items++; - } - - /* Terminate the filter list. */ - this->cargo_filter_texts[filter_items] = INVALID_STRING_ID; - + this->cargo_filter_criteria = CF_ANY; this->vehgroups.SetFilterFuncs(_filter_funcs); - this->vehgroups.SetFilterState(this->cargo_filter[this->cargo_filter_criteria] != CF_ANY); + this->vehgroups.SetFilterState(this->cargo_filter_criteria != CF_ANY); } /** @@ -348,7 +321,7 @@ void BaseVehicleListWindow::SetCargoFilterArray() */ void BaseVehicleListWindow::FilterVehicleList() { - this->vehgroups.Filter(this->cargo_filter[this->cargo_filter_criteria]); + this->vehgroups.Filter(this->cargo_filter_criteria); if (this->vehicles.empty()) { /* No vehicle passed through the filter, invalidate the previously selected vehicle */ this->vehicle_sel = INVALID_VEHICLE; @@ -388,6 +361,35 @@ void BaseVehicleListWindow::OnInit() this->SetCargoFilterArray(); } +StringID BaseVehicleListWindow::GetCargoFilterLabel(CargoID cid) const +{ + switch (cid) { + case CF_ANY: return STR_CARGO_TYPE_FILTER_ALL; + case CF_FREIGHT: return STR_CARGO_TYPE_FILTER_FREIGHT; + case CF_NONE: return STR_CARGO_TYPE_FILTER_NONE; + default: return CargoSpec::Get(cid)->name; + } +} + +DropDownList BaseVehicleListWindow::BuildCargoDropDownList() const +{ + DropDownList list; + + /* Add item for disabling filtering. */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_ANY), CF_ANY, false)); + /* Add item for freight (i.e. vehicles with cargo capacity and with no passenger capacity). */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_FREIGHT), CF_FREIGHT, false)); + /* Add item for vehicles not carrying anything, e.g. train engines. */ + list.push_back(std::make_unique(this->GetCargoFilterLabel(CF_NONE), CF_NONE, false)); + + /* Add cargos */ + for (const CargoSpec *cs : _sorted_cargo_specs) { + list.push_back(std::make_unique(cs->name, cs->Index(), false)); + } + + return list; +} + /** * Display the Action dropdown window. * @param show_autoreplace If true include the autoreplace item. @@ -1874,7 +1876,7 @@ public: break; case WID_VL_FILTER_BY_CARGO: - size->width = GetStringListWidth(this->cargo_filter_texts) + padding.width; + size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width); break; case WID_VL_MANAGE_VEHICLES_DROPDOWN: { @@ -1895,7 +1897,7 @@ public: break; case WID_VL_FILTER_BY_CARGO: - SetDParam(0, this->cargo_filter_texts[this->cargo_filter_criteria]); + SetDParam(0, this->GetCargoFilterLabel(this->cargo_filter_criteria)); break; case WID_VL_CAPTION: @@ -1975,7 +1977,7 @@ public: /* Set text of sort by dropdown widget. */ this->GetWidget(WID_VL_SORT_BY_PULLDOWN)->widget_data = this->GetVehicleSorterNames()[this->vehgroups.SortType()]; - this->GetWidget(WID_VL_FILTER_BY_CARGO)->widget_data = this->cargo_filter_texts[this->cargo_filter_criteria]; + this->GetWidget(WID_VL_FILTER_BY_CARGO)->widget_data = this->GetCargoFilterLabel(this->cargo_filter_criteria); this->DrawWidgets(); } @@ -2004,7 +2006,7 @@ public: return; case WID_VL_FILTER_BY_CARGO: // Cargo filter dropdown - ShowDropDownMenu(this, this->cargo_filter_texts, this->cargo_filter_criteria, WID_VL_FILTER_BY_CARGO, 0, 0); + ShowDropDownList(this, this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget); break; case WID_VL_LIST: { // Matrix to show vehicles diff --git a/src/vehicle_gui_base.h b/src/vehicle_gui_base.h index b7235a2d75..5858dbc800 100644 --- a/src/vehicle_gui_base.h +++ b/src/vehicle_gui_base.h @@ -88,8 +88,6 @@ struct BaseVehicleListWindow : public Window { Scrollbar *vscroll; VehicleListIdentifier vli; ///< Identifier of the vehicle list we want to currently show. VehicleID vehicle_sel; ///< Selected vehicle - CargoID cargo_filter[NUM_CARGO + 3]; ///< Available cargo filters; CargoID or CF_ANY or CF_FREIGHT or CF_NONE - StringID cargo_filter_texts[NUM_CARGO + 4]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID byte cargo_filter_criteria; ///< Selected cargo filter index uint order_arrow_width; ///< Width of the arrow in the small order list. @@ -125,6 +123,8 @@ struct BaseVehicleListWindow : public Window { void SetCargoFilterIndex(byte index); void SetCargoFilterArray(); void FilterVehicleList(); + StringID GetCargoFilterLabel(CargoID cid) const; + DropDownList BuildCargoDropDownList() const; Dimension GetActionDropdownSize(bool show_autoreplace, bool show_group, bool show_create); DropDownList BuildActionDropdownList(bool show_autoreplace, bool show_group, bool show_create); From 1dff1e34f669b146bb9247164aa24b6c7bf54908 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 14 Nov 2023 18:36:57 +0000 Subject: [PATCH 28/54] Update: Translations from eints tamil: 3 changes by Jeyanthinath --- src/lang/tamil.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 8902cf1d91..c9d9ed34d3 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -3255,6 +3255,7 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}இரய STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}சாலை வாகனங்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}விமானங்களை இயக்கும் செலவுகள் STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}கப்பல்களை இயக்கும் செலவுகள் +STR_FINANCES_SECTION_ROAD_VEHICLE_REVENUE :{GOLD}சாலை வாகனங்கள் STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}கப்பல்கள் STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}கடன் வட்டி STR_FINANCES_SECTION_OTHER :{GOLD}மற்றவை @@ -3302,6 +3303,7 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}வி STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}விவரமான கட்டட எண்ணிக்கைகளை காட்டு STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}பணத்தை வழங்கு STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}இந்த நிறுவனத்திற்கு பணம் கொடு +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}இந்த நிறுவனத்தை விரோதமாகக் கையகப்படுத்துங்கள் STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}புதிய முகம் STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}மேலாளருக்கு புதிய முகத்தினைத் தேர்ந்தெடு @@ -4181,6 +4183,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :புதிய STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :கோப்பினை படிக்க இயலவில்லை STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :கோப்பில் எழுத இயலவில்லை STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :தகவல் முழுமை சரிபார்த்தல் தோல்வியடைந்தது +STR_GAME_SAVELOAD_ERROR_PATCHPACK :பதிவுஆட்டம் மாற்றியமைக்கப்பட்ட பதிப்புடன் தயாரிக்கப்பட்டுள்ளது STR_GAME_SAVELOAD_NOT_AVAILABLE :<கிடைக்கவில்லை> STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}ஆட்டம் ட்ராம் துணையில்லாத பதிப்புடன் பதிவு செய்யப்பட்டது. ஆதலால் அனைத்து ட்ராம்களும் நீக்கப்பட்டுள்ளன. From 58c037fba0b196eca5312d48d52620c4542b2ced Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 13 Nov 2023 21:54:26 +0000 Subject: [PATCH 29/54] Change: Increase finance window lines (and underlines) with interface scale. --- src/company_gui.cpp | 8 ++++---- src/gfx.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 986336b444..7c16298e85 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -239,7 +239,7 @@ static Money DrawYearCategory(const Rect &r, int start_y, const ExpensesList &li } /* Draw the total at the bottom of the category. */ - GfxFillRect(r.left, y, r.right, y, PC_BLACK); + GfxFillRect(r.left, y, r.right, y + WidgetDimensions::scaled.bevel.top - 1, PC_BLACK); y += WidgetDimensions::scaled.vsep_normal; if (sum != 0) DrawPrice(sum, r.left, r.right, y, TC_WHITE); @@ -274,7 +274,7 @@ static void DrawYearColumn(const Rect &r, TimerGameCalendar::Year year, const Ex } /* Total income. */ - GfxFillRect(r.left, y, r.right, y, PC_BLACK); + GfxFillRect(r.left, y, r.right, y + WidgetDimensions::scaled.bevel.top - 1, PC_BLACK); y += WidgetDimensions::scaled.vsep_normal; DrawPrice(sum, r.left, r.right, y, TC_WHITE); } @@ -438,7 +438,7 @@ struct CompanyFinancesWindow : Window { } case WID_CF_BALANCE_LINE: - GfxFillRect(r.left, r.top, r.right, r.top, PC_BLACK); + GfxFillRect(r.left, r.top, r.right, r.top + WidgetDimensions::scaled.bevel.top - 1, PC_BLACK); break; } } @@ -2106,7 +2106,7 @@ struct CompanyInfrastructureWindow : Window case WID_CI_TOTAL: if (_settings_game.economy.infrastructure_maintenance) { Rect tr = r.WithWidth(this->total_width, _current_text_dir == TD_RTL); - GfxFillRect(tr.left, y, tr.right, y, PC_WHITE); + GfxFillRect(tr.left, y, tr.right, y + WidgetDimensions::scaled.bevel.top - 1, PC_WHITE); y += WidgetDimensions::scaled.vsep_normal; SetDParam(0, this->GetTotalMaintenanceCost() * 12); // Convert to per year DrawString(tr.left, tr.right, y, STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL, TC_FROMSTRING, SA_RIGHT); diff --git a/src/gfx.cpp b/src/gfx.cpp index 15420ee655..5029446db4 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -621,7 +621,7 @@ static int DrawLayoutLine(const ParagraphLayouter::Line &line, int y, int left, } if (underline) { - GfxFillRect(left, y + h, right, y + h, _string_colourremap[1]); + GfxFillRect(left, y + h, right, y + h + WidgetDimensions::scaled.bevel.top - 1, _string_colourremap[1]); } return (align & SA_HOR_MASK) == SA_RIGHT ? left : right; From 306e75223a6e29e69b530846755c6143cb20203b Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sat, 28 Oct 2023 11:28:28 +0100 Subject: [PATCH 30/54] Change: Adjust layouts and standardize spacing for company-related windows. --- src/company_gui.cpp | 319 +++++++++++++++++++++----------------------- 1 file changed, 153 insertions(+), 166 deletions(-) diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 7c16298e85..5a54787b41 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -298,32 +298,24 @@ static const NWidgetPart _nested_company_finances_widgets[] = { EndContainer(), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.framerect), + NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.framerect), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPIPRatio(0, 1, 2), NWidget(NWID_VERTICAL), // Vertical column with 'bank balance', 'loan' - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_OWN_FUNDS_TITLE, STR_NULL), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_LOAN_TITLE, STR_NULL), SetFill(1, 0), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_BANK_BALANCE_TITLE, STR_NULL), SetFill(1, 0), - NWidget(NWID_SPACER), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_OWN_FUNDS_TITLE, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_LOAN_TITLE, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY), SetDataTip(STR_FINANCES_BANK_BALANCE_TITLE, STR_NULL), SetPadding(WidgetDimensions::unscaled.vsep_normal, 0, 0, 0), EndContainer(), - NWidget(NWID_SPACER), SetFill(0, 0), SetMinimalSize(30, 0), NWidget(NWID_VERTICAL), // Vertical column with bank balance amount, loan amount, and total. NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_OWN_VALUE), SetDataTip(STR_FINANCES_TOTAL_CURRENCY, STR_NULL), SetAlignment(SA_VERT_CENTER | SA_RIGHT), NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_LOAN_VALUE), SetDataTip(STR_FINANCES_TOTAL_CURRENCY, STR_NULL), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_BALANCE_LINE), SetMinimalSize(0, 2), SetFill(1, 0), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_CF_BALANCE_LINE), SetMinimalSize(0, WidgetDimensions::unscaled.vsep_normal), NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_BALANCE_VALUE), SetDataTip(STR_FINANCES_BANK_BALANCE, STR_NULL), SetAlignment(SA_VERT_CENTER | SA_RIGHT), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CF_SEL_MAXLOAN), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetFill(0, 1), SetMinimalSize(25, 0), - NWidget(NWID_VERTICAL), // Max loan information - NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_INTEREST_RATE), SetDataTip(STR_FINANCES_INTEREST_RATE, STR_NULL), - NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_MAXLOAN_VALUE), SetDataTip(STR_FINANCES_MAX_LOAN, STR_NULL), - NWidget(NWID_SPACER), SetFill(0, 1), - EndContainer(), + NWidget(NWID_VERTICAL), SetPIPRatio(0, 0, 1), // Max loan information + NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_INTEREST_RATE), SetDataTip(STR_FINANCES_INTEREST_RATE, STR_NULL), + NWidget(WWT_TEXT, COLOUR_GREY, WID_CF_MAXLOAN_VALUE), SetDataTip(STR_FINANCES_MAX_LOAN, STR_NULL), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_CF_SEL_BUTTONS), @@ -1224,137 +1216,148 @@ static const NWidgetPart _nested_select_company_manager_face_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_SCMF_SELECT_FACE), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), - NWidget(NWID_HORIZONTAL), SetPIP(2, 2, 2), - NWidget(NWID_VERTICAL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_SCMF_FACE), SetMinimalSize(92, 119), - NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPadding(2), + /* Left side */ + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_SCMF_FACE), SetMinimalSize(92, 119), SetFill(1, 0), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_RANDOM_NEW_FACE), SetFill(1, 0), SetDataTip(STR_FACE_NEW_FACE_BUTTON, STR_FACE_NEW_FACE_TOOLTIP), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_LOADSAVE), // Load/number/save buttons under the portrait in the advanced view. - NWidget(NWID_VERTICAL), - NWidget(NWID_SPACER), SetMinimalSize(0, 5), SetFill(0, 1), + NWidget(NWID_VERTICAL), SetPIP(0, 0, 0), SetPIPRatio(1, 0, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LOAD), SetFill(1, 0), SetDataTip(STR_FACE_LOAD, STR_FACE_LOAD_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_FACECODE), SetFill(1, 0), SetDataTip(STR_FACE_FACECODE, STR_FACE_FACECODE_TOOLTIP), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_SAVE), SetFill(1, 0), SetDataTip(STR_FACE_SAVE, STR_FACE_SAVE_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(0, 5), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_VERTICAL), + /* Right side */ + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL_BUTTON), SetFill(1, 0), SetDataTip(STR_FACE_ADVANCED, STR_FACE_ADVANCED_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_MALEFEMALE), // Simple male/female face setting. - NWidget(NWID_VERTICAL), - NWidget(NWID_SPACER), SetFill(0, 1), + NWidget(NWID_VERTICAL), SetPIPRatio(1, 0, 1), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_MALE), SetFill(1, 0), SetDataTip(STR_FACE_MALE_BUTTON, STR_FACE_MALE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_FEMALE), SetFill(1, 0), SetDataTip(STR_FACE_FEMALE_BUTTON, STR_FACE_FEMALE_TOOLTIP), - NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SCMF_SEL_PARTS), // Advanced face parts setting. - NWidget(NWID_VERTICAL), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_MALE2), SetFill(1, 0), SetDataTip(STR_FACE_MALE_BUTTON, STR_FACE_MALE_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_FEMALE2), SetFill(1, 0), SetDataTip(STR_FACE_FEMALE_BUTTON, STR_FACE_FEMALE_TOOLTIP), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_ETHNICITY_EUR), SetFill(1, 0), SetDataTip(STR_FACE_EUROPEAN, STR_FACE_SELECT_EUROPEAN), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCMF_ETHNICITY_AFR), SetFill(1, 0), SetDataTip(STR_FACE_AFRICAN, STR_FACE_SELECT_AFRICAN), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 4), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_MOUSTACHE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_MOUSTACHE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_GLASSES_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP), SetTextStyle(TC_WHITE), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAIR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_HAIR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetDataTip(STR_JUST_STRING1, STR_FACE_HAIR_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYEBROWS_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_EYEBROWS, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetDataTip(STR_JUST_STRING1, STR_FACE_EYEBROWS_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYECOLOUR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetDataTip(STR_JUST_STRING1, STR_FACE_EYECOLOUR_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_GLASSES_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP_2), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_NOSE_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_NOSE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetDataTip(STR_JUST_STRING1, STR_FACE_NOSE_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_LIPS_MOUSTACHE_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_MOUSTACHE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetDataTip(STR_JUST_STRING1, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_CHIN_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_CHIN, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetDataTip(STR_JUST_STRING1, STR_FACE_CHIN_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_JACKET_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_JACKET, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetDataTip(STR_JUST_STRING1, STR_FACE_JACKET_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_COLLAR_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_COLLAR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetDataTip(STR_JUST_STRING1, STR_FACE_COLLAR_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_MOUSTACHE_EARRING_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_MOUSTACHE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_MOUSTACHE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAS_GLASSES_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAS_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP), SetTextStyle(TC_WHITE), + EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_TIE_EARRING_TEXT), SetFill(1, 0), SetPadding(WidgetDimensions::unscaled.framerect), - SetDataTip(STR_FACE_EARRING, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_TIE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), - NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_HAIR_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_HAIR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetDataTip(STR_JUST_STRING1, STR_FACE_HAIR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYEBROWS_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_EYEBROWS, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetDataTip(STR_JUST_STRING1, STR_FACE_EYEBROWS_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_EYECOLOUR_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_EYECOLOUR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetDataTip(STR_JUST_STRING1, STR_FACE_EYECOLOUR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_GLASSES_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_GLASSES, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetDataTip(STR_JUST_STRING1, STR_FACE_GLASSES_TOOLTIP_2), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_NOSE_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_NOSE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetDataTip(STR_JUST_STRING1, STR_FACE_NOSE_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_LIPS_MOUSTACHE_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_MOUSTACHE, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetDataTip(STR_JUST_STRING1, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_CHIN_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_CHIN, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetDataTip(STR_JUST_STRING1, STR_FACE_CHIN_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_JACKET_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_JACKET, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetDataTip(STR_JUST_STRING1, STR_FACE_JACKET_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_COLLAR_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_COLLAR, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetDataTip(STR_JUST_STRING1, STR_FACE_COLLAR_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, INVALID_COLOUR, WID_SCMF_TIE_EARRING_TEXT), SetFill(1, 0), + SetDataTip(STR_FACE_EARRING, STR_NULL), SetTextStyle(TC_GOLD), SetAlignment(SA_VERT_CENTER | SA_RIGHT), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetDataTip(STR_JUST_STRING1, STR_FACE_TIE_EARRING_TOOLTIP), SetTextStyle(TC_WHITE), + NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP), + EndContainer(), + EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CANCEL), SetFill(1, 0), SetDataTip(STR_BUTTON_CANCEL, STR_FACE_CANCEL_TOOLTIP), @@ -2165,30 +2168,25 @@ static const NWidgetPart _nested_company_widgets[] = { NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(NWID_HORIZONTAL), SetPIP(4, 6, 4), - NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPadding(4), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_FACE), SetMinimalSize(92, 119), SetFill(1, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_FACE_TITLE), SetFill(1, 1), SetMinimalTextLines(2, 0), EndContainer(), - NWidget(NWID_VERTICAL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_VERTICAL), SetPIP(4, 5, 5), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INAUGURATION), SetDataTip(STR_COMPANY_VIEW_INAUGURATED_TITLE, STR_NULL), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 5, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), NWidget(WWT_LABEL, COLOUR_GREY, WID_C_DESC_COLOUR_SCHEME), SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE, STR_NULL), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_COLOUR_SCHEME_EXAMPLE), SetMinimalSize(30, 0), SetFill(0, 1), - NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_COLOUR_SCHEME_EXAMPLE), SetMinimalSize(30, 0), SetFill(1, 1), EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_VEHICLE), SetDataTip(STR_COMPANY_VIEW_VEHICLES_TITLE, STR_NULL), - NWidget(NWID_SPACER), SetFill(0, 1), - EndContainer(), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_VEHICLE_COUNTS), SetMinimalTextLines(4, 0), - NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_VEHICLE), SetDataTip(STR_COMPANY_VIEW_VEHICLES_TITLE, STR_NULL), SetAlignment(SA_LEFT | SA_TOP), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_VEHICLE_COUNTS), SetMinimalTextLines(4, 0), SetFill(1, 1), EndContainer(), EndContainer(), - NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_VIEW_BUILD_HQ), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_HQ), SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_BUILD_HQ), SetDataTip(STR_COMPANY_VIEW_BUILD_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP), @@ -2197,45 +2195,34 @@ static const NWidgetPart _nested_company_widgets[] = { NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_C_RELOCATE_HQ), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS), NWidget(NWID_SPACER), EndContainer(), - NWidget(NWID_SPACER), SetFill(0, 1), EndContainer(), EndContainer(), + NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_COMPANY_VALUE), SetDataTip(STR_COMPANY_VIEW_COMPANY_VALUE, STR_NULL), SetFill(1, 0), - NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE, STR_NULL), - NWidget(NWID_SPACER), SetFill(0, 1), - EndContainer(), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), - NWidget(NWID_SPACER), - EndContainer(), + + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY, WID_C_DESC_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE, STR_NULL), SetAlignment(SA_LEFT | SA_TOP), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_C_DESC_INFRASTRUCTURE_COUNTS), SetMinimalTextLines(5, 0), SetFill(1, 0), + NWidget(NWID_VERTICAL), SetPIPRatio(0, 0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_VIEW_INFRASTRUCTURE), SetDataTip(STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON, STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), - /* Multi player buttons. */ - NWidget(NWID_VERTICAL), SetPIP(4, 2, 4), - NWidget(NWID_SPACER), SetFill(0, 1), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_HOSTILE_TAKEOVER), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_HOSTILE_TAKEOVER), SetDataTip(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON, STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP), - EndContainer(), + + /* Multi player buttons. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), SetPIPRatio(1, 0, 0), + NWidget(NWID_VERTICAL), SetPIPRatio(1, 0, 0), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), SetFill(0, 0), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_HOSTILE_TAKEOVER), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_HOSTILE_TAKEOVER), SetDataTip(STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON, STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_GIVE_MONEY), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_GIVE_MONEY), SetDataTip(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON, STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP), - EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_GIVE_MONEY), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_GIVE_MONEY), SetDataTip(STR_COMPANY_VIEW_GIVE_MONEY_BUTTON, STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_C_HAS_PASSWORD), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), - EndContainer(), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_C_SELECT_MULTIPLAYER), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_PASSWORD), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_C_COMPANY_JOIN), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP), EndContainer(), EndContainer(), EndContainer(), @@ -2416,7 +2403,7 @@ struct CompanyWindow : Window break; case WID_C_HAS_PASSWORD: - *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); + if (_networking) *size = maxdim(*size, GetSpriteSize(SPR_LOCK)); break; } } From 17ceed0241e7bdaf6d743cf68d7a2031db4868d5 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 17:06:38 +0000 Subject: [PATCH 31/54] Change: Use sparse padding for Game Options window. (#11463) --- src/settings_gui.cpp | 96 ++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 53 deletions(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index adbdba7437..2608b86fa2 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -743,7 +743,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(5, 10, 5, 10), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(WidgetDimensions::unscaled.sparse), NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GO_TAB_GENERAL), SetMinimalTextLines(2, 0), SetDataTip(STR_GAME_OPTIONS_TAB_GENERAL, STR_GAME_OPTIONS_TAB_GENERAL_TT), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GO_TAB_GRAPHICS), SetMinimalTextLines(2, 0), SetDataTip(STR_GAME_OPTIONS_TAB_GRAPHICS, STR_GAME_OPTIONS_TAB_GRAPHICS_TT), SetFill(1, 0), NWidget(WWT_TEXTBTN, COLOUR_YELLOW, WID_GO_TAB_SOUND), SetMinimalTextLines(2, 0), SetDataTip(STR_GAME_OPTIONS_TAB_SOUND, STR_GAME_OPTIONS_TAB_SOUND_TT), SetFill(1, 0), @@ -752,7 +752,7 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_PANEL, COLOUR_GREY), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GO_TAB_SELECTION), /* General tab */ - NWidget(NWID_VERTICAL), SetPadding(10), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + NWidget(NWID_VERTICAL), SetPadding(WidgetDimensions::unscaled.sparse), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_LANGUAGE, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_LANG_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_LANGUAGE_TOOLTIP), SetFill(1, 0), EndContainer(), @@ -766,13 +766,12 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GO_SURVEY_SEL), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_SURVEY_PARTICIPATE_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_SURVEY_PREVIEW_BUTTON), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW, STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_SURVEY_LINK_BUTTON), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK, STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP), EndContainer(), @@ -781,18 +780,16 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), /* Graphics tab */ - NWidget(NWID_VERTICAL), SetPadding(10), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + NWidget(NWID_VERTICAL), SetPadding(WidgetDimensions::unscaled.sparse), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_FRAME, STR_NULL), NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), NWidget(WWT_EMPTY, COLOUR_GREY, WID_GO_GUI_SCALE), SetMinimalSize(67, 0), SetMinimalTextLines(1, 12 + WidgetDimensions::unscaled.vsep_normal, FS_SMALL), SetFill(0, 0), SetDataTip(0x0, STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_AUTO, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_AUTO, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_SCALE_AUTO), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_BEVELS, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_GUI_SCALE_BEVELS, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_GUI_SCALE_BEVEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP), EndContainer(), EndContainer(), @@ -800,30 +797,25 @@ static const NWidgetPart _nested_game_options_widgets[] = { NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_GRAPHICS, STR_NULL), NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12),SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_RESOLUTION, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_RESOLUTION_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_STRING2, STR_GAME_OPTIONS_RESOLUTION_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE, STR_NULL), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_REFRESH_RATE_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_GAME_OPTIONS_REFRESH_RATE_ITEM, STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_FULLSCREEN, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_FULLSCREEN_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP), EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_VIDEO_ACCELERATION, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_VIDEO_ACCELERATION, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VIDEO_ACCEL_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP), EndContainer(), #ifndef __APPLE__ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_VIDEO_VSYNC, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_TEXT, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetDataTip(STR_GAME_OPTIONS_VIDEO_VSYNC, STR_NULL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GO_VIDEO_VSYNC_BUTTON), SetMinimalSize(21, 9), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP), EndContainer(), #endif @@ -833,13 +825,13 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), EndContainer(), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 0), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_GRF, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_GRF_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_GRF_TOOLTIP), SetFill(1, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_PARAMETERS), SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL), EndContainer(), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(200, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), + NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_BASE_GRF_DESCRIPTION), SetMinimalSize(200, 0), SetDataTip(STR_EMPTY, STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_GRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), @@ -848,39 +840,37 @@ static const NWidgetPart _nested_game_options_widgets[] = { EndContainer(), /* Sound/Music tab */ - NWidget(NWID_VERTICAL), SetPadding(10), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_VOLUME, STR_NULL), - NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_TEXT_SFX_VOLUME), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_SFX_VOLUME, STR_NULL), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_GO_BASE_SFX_VOLUME), SetMinimalSize(67, 0), SetMinimalTextLines(1, 12 + WidgetDimensions::unscaled.vsep_normal, FS_SMALL), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), - NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_TEXT_MUSIC_VOLUME), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_MUSIC_VOLUME, STR_NULL), - NWidget(WWT_EMPTY, COLOUR_GREY, WID_GO_BASE_MUSIC_VOLUME), SetMinimalSize(67, 0), SetMinimalTextLines(1, 12 + WidgetDimensions::unscaled.vsep_normal, FS_SMALL), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), - EndContainer(), + NWidget(NWID_VERTICAL), SetPadding(WidgetDimensions::unscaled.sparse), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_VOLUME, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_TEXT_SFX_VOLUME), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_SFX_VOLUME, STR_NULL), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_GO_BASE_SFX_VOLUME), SetMinimalSize(67, 0), SetMinimalTextLines(1, 12 + WidgetDimensions::unscaled.vsep_normal, FS_SMALL), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_TEXT, COLOUR_GREY, WID_GO_TEXT_MUSIC_VOLUME), SetMinimalSize(0, 12), SetDataTip(STR_GAME_OPTIONS_MUSIC_VOLUME, STR_NULL), + NWidget(WWT_EMPTY, COLOUR_GREY, WID_GO_BASE_MUSIC_VOLUME), SetMinimalSize(67, 0), SetMinimalTextLines(1, 12 + WidgetDimensions::unscaled.vsep_normal, FS_SMALL), SetFill(1, 0), SetDataTip(0x0, STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC), EndContainer(), EndContainer(), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_SFX, STR_NULL), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_SFX, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_SFX_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_SFX_TOOLTIP), SetFill(1, 0), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_SFX_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_SFX_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_SFX_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_SFX_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_SFX_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), EndContainer(), EndContainer(), - NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), + NWidget(WWT_FRAME, COLOUR_GREY), SetDataTip(STR_GAME_OPTIONS_BASE_MUSIC, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GO_BASE_MUSIC_DROPDOWN), SetMinimalSize(100, 12), SetDataTip(STR_JUST_RAW_STRING, STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 30, 7), - NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_MUSIC_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), SetPadding(6, 0, 6, 0), - NWidget(NWID_VERTICAL), SetPIP(0, 0, 0), - NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_JUKEBOX), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_MUSIC, STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW), SetPadding(6, 0, 6, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GO_BASE_MUSIC_DESCRIPTION), SetMinimalSize(200, 0), SetMinimalTextLines(1, 0), SetDataTip(STR_NULL, STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP), SetFill(1, 0), + NWidget(NWID_VERTICAL), SetPIPRatio(0, 0, 1), + NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_JUKEBOX), SetMinimalSize(22, 22), SetDataTip(SPR_IMG_MUSIC, STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GO_BASE_MUSIC_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), From e2e0753916b0d43a2d4d0a43aa0a08ef128cf2d3 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 17:06:57 +0000 Subject: [PATCH 32/54] Codechange: Use GetCurrentRect() where feasible. (#11460) --- src/toolbar_gui.cpp | 5 +++-- src/widget.cpp | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index 25032ae136..7dc909b671 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -1490,8 +1490,9 @@ public: void Draw(const Window *w) override { /* Draw brown-red toolbar bg. */ - GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1, PC_VERY_DARK_RED); - GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1, PC_DARK_RED, FILLRECT_CHECKER); + const Rect r = this->GetCurrentRect(); + GfxFillRect(r, PC_VERY_DARK_RED); + GfxFillRect(r, PC_DARK_RED, FILLRECT_CHECKER); this->NWidgetContainer::Draw(w); } diff --git a/src/widget.cpp b/src/widget.cpp index 74bf61b2db..53d26e4ac5 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -2093,7 +2093,7 @@ NWidgetCore *NWidgetMatrix::GetWidgetFromPos(int x, int y) /* virtual */ void NWidgetMatrix::Draw(const Window *w) { /* Fill the background. */ - GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1, _colour_gradient[this->colour & 0xF][5]); + GfxFillRect(this->GetCurrentRect(), _colour_gradient[this->colour & 0xF][5]); /* Set up a clipping area for the previews. */ bool rtl = _current_text_dir == TD_RTL; @@ -2419,8 +2419,7 @@ void NWidgetViewport::Draw(const Window *w) /* Optionally shade the viewport. */ if (this->disp_flags & (ND_SHADE_GREY | ND_SHADE_DIMMED)) { - GfxFillRect(this->pos_x, this->pos_y, this->pos_x + this->current_x - 1, this->pos_y + this->current_y - 1, - (this->disp_flags & ND_SHADE_DIMMED) ? PALETTE_TO_TRANSPARENT : PALETTE_NEWSPAPER, FILLRECT_RECOLOUR); + GfxFillRect(this->GetCurrentRect(), (this->disp_flags & ND_SHADE_DIMMED) ? PALETTE_TO_TRANSPARENT : PALETTE_NEWSPAPER, FILLRECT_RECOLOUR); } DrawOutline(w, this); From 7d48a3f07315c0fa43818209a9e530ce3796b221 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 17:07:29 +0000 Subject: [PATCH 33/54] Codechange: Move RectPadding::zero definition to header. (#11461) This potentially allows better inlining/optimization. --- src/core/geometry_func.cpp | 2 -- src/core/geometry_type.hpp | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/geometry_func.cpp b/src/core/geometry_func.cpp index 3dd680347c..dccef72ecc 100644 --- a/src/core/geometry_func.cpp +++ b/src/core/geometry_func.cpp @@ -48,5 +48,3 @@ Rect BoundingRect(const Rect &r1, const Rect &r2) return r; } - -const RectPadding RectPadding::zero = {0, 0, 0, 0}; diff --git a/src/core/geometry_type.hpp b/src/core/geometry_type.hpp index 17fba0c833..323cadc702 100644 --- a/src/core/geometry_type.hpp +++ b/src/core/geometry_type.hpp @@ -65,6 +65,8 @@ struct RectPadding { inline uint Vertical() const { return this->top + this->bottom; } }; +inline const RectPadding RectPadding::zero{}; + /** Specification of a rectangle with absolute coordinates of all edges */ struct Rect { int left; From bca321443ac9b1f018062cc4c9082d79c6788dee Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 16 Nov 2023 18:39:24 +0000 Subject: [PATCH 34/54] Update: Translations from eints french: 1 change by Lishouuu --- src/lang/french.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/french.txt b/src/lang/french.txt index b0c8f0fab6..36c9ea69e8 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1091,6 +1091,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Musique STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Sélectionner la musique de base à utiliser STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informations additionnelles sur la musique de base +STR_BASESET_STATUS :{STRING} {RED}({NUM} fichier{P "" s} manquant{P "" s}/corrompu{P "" s}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Échec de la récupération de la liste des résolutions prises en charge STR_ERROR_FULLSCREEN_FAILED :{WHITE}Échec du mode plein écran From 60651227a0b6d0068b772400572cdebc5d9401cc Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 18:58:59 +0000 Subject: [PATCH 35/54] Change: Simplify world gen widgets and use sparse padding. (#11464) --- src/genworld_gui.cpp | 403 +++++++++++++++++++++---------------------- 1 file changed, 196 insertions(+), 207 deletions(-) diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 693d7f60c1..5c7e1d7a17 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -75,27 +75,21 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 10), - /* Landscape selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 11), - /* Generation options. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), - /* Left half (land generation options) */ - NWidget(NWID_VERTICAL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + /* Landscape selection. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPIPRatio(1, 1, 1), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), + EndContainer(), + + /* Generation options. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + /* Left half (land generation options) */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), /* Labels on the left side (global column 1). */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), @@ -103,31 +97,31 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1), EndContainer(), + /* Widgets on the right side (global column 2). */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), /* Mapsize X * Y. */ - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), EndContainer(), EndContainer(), - EndContainer(), - /* Right half (all other options) */ - NWidget(NWID_VERTICAL), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), + + /* Right half (all other options) */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), /* Labels on the left side (global column 3). */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1), - NWidget(NWID_SPACER), + NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_NULL), SetFill(1, 1), @@ -135,20 +129,21 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SEA_LEVEL, STR_NULL), SetFill(1, 1), EndContainer(), + /* Widgets on the right side (global column 4). */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), /* Climate selector. */ NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), /* Snow coverage. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), EndContainer(), /* Desert coverage. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), EndContainer(), /* Temperate/Toyland spacer. */ @@ -157,54 +152,43 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { /* Starting date. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), EndContainer(), EndContainer(), EndContainer(), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 4), - /* Map borders buttons for each edge. */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - EndContainer(), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHWEST), SetFill(1, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHEAST), SetFill(1, 1), - NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - NWidget(NWID_SPACER), SetFill(1, 1), - EndContainer(), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), + + /* Map borders buttons for each edge. */ + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHWEST, STR_NULL), SetPadding(0, WidgetDimensions::unscaled.hsep_normal, 0, 0), SetFill(1, 1), SetAlignment(SA_RIGHT | SA_VERT_CENTER), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHWEST), SetFill(1, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_NE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHEAST), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHEAST, STR_NULL), SetPadding(0, 0, 0, WidgetDimensions::unscaled.hsep_normal), SetFill(1, 1), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHWEST, STR_NULL), SetPadding(0, WidgetDimensions::unscaled.hsep_normal, 0, 0), SetFill(1, 1), SetAlignment(SA_RIGHT | SA_VERT_CENTER), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHWEST), SetFill(1, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHEAST), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHEAST, STR_NULL), SetPadding(0, 0, 0, WidgetDimensions::unscaled.hsep_normal), SetFill(1, 1), + EndContainer(), EndContainer(), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHWEST), SetFill(1, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_WATER_SE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHEAST), SetFill(1, 1), - NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - NWidget(NWID_SPACER), SetFill(1, 1), + + /* AI, GS, and NewGRF settings */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_AI_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_AI_SETTINGS, STR_MAPGEN_AI_SETTINGS_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_GS_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_GS_SETTINGS, STR_MAPGEN_GS_SETTINGS_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_NEWGRF_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_NEWGRF_SETTINGS, STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP), SetFill(1, 0), EndContainer(), + + /* Generate */ + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 36), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 6), SetFill(1, 1), - /* AI, GS, and NewGRF settings */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_AI_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_AI_SETTINGS, STR_MAPGEN_AI_SETTINGS_TOOLTIP), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_GS_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_GS_SETTINGS, STR_MAPGEN_GS_SETTINGS_TOOLTIP), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_NEWGRF_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_NEWGRF_SETTINGS, STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 7), SetFill(1, 1), - /* Generate */ - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 36), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetPadding(0, 10, 0, 10), SetFill(1, 1), - NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), EndContainer(), }; @@ -216,114 +200,112 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = { NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 10), - /* Landscape selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 11), SetFill(0, 1), - /* Generation options. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 3, 10), - /* Left half labels (global column 1) and heightmap name label */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - /* Heightmap name label. */ - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1), - /* Land generation option labels */ - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_HEIGHT, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + /* Landscape selection. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPIPRatio(1, 1, 1), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_GL_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), EndContainer(), - /* All other columns. */ - NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), + + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + /* Heightmap name label. */ + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_NAME_TEXT), SetTextStyle(TC_ORANGE), SetDataTip(STR_JUST_RAW_STRING, STR_EMPTY), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 5, 0), + EndContainer(), + + /* Generation options. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + /* Left half (land generation options) */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + /* Labels on the left side (global column 1). */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + /* Land generation option labels. */ + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_HEIGHT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1), + EndContainer(), + /* Left half widgets (global column 2) */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 1), /* Mapsize X * Y. */ - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), /* Heightmap highest peak. */ NWidget(NWID_HORIZONTAL), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1), NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_HEIGHTMAP_HEIGHT_UP), SetFill(0, 1), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1), EndContainer(), - NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - /* Right half labels (global column 3) */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1), - NWidget(NWID_SPACER), - EndContainer(), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), + EndContainer(), + + /* Right half (all other options) */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + /* Right half labels (global column 3) */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1), + NWidget(NWID_SPACER), SetFill(1, 1), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), + EndContainer(), + + /* Right half widgets (global column 4) */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + /* Climate selector. */ + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), + /* Snow coverage. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), EndContainer(), - /* Right half widgets (global column 4) */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - /* Climate selector. */ - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), - /* Snow coverage. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1), - EndContainer(), - /* Desert coverage. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), - EndContainer(), - /* Temperate/Toyland spacer. */ - NWidget(NWID_SPACER), - EndContainer(), - /* Starting date. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), - EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), + /* Desert coverage. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), EndContainer(), + /* Temperate/Toyland spacer. */ + NWidget(NWID_SPACER), SetFill(1, 1), + EndContainer(), + /* Starting date. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 1), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1), EndContainer(), EndContainer(), EndContainer(), + + /* AI, GS, and NewGRF settings */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_AI_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_AI_SETTINGS, STR_MAPGEN_AI_SETTINGS_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_GS_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_GS_SETTINGS, STR_MAPGEN_GS_SETTINGS_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_NEWGRF_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_NEWGRF_SETTINGS, STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP), SetFill(1, 0), + EndContainer(), + + /* Generate */ + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 36), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 6), SetFill(1, 1), - /* AI, GS, and NewGRF settings */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_AI_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_AI_SETTINGS, STR_MAPGEN_AI_SETTINGS_TOOLTIP), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_GS_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_GS_SETTINGS, STR_MAPGEN_GS_SETTINGS_TOOLTIP), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_NEWGRF_BUTTON), SetMinimalSize(0, 24), SetDataTip(STR_MAPGEN_NEWGRF_SETTINGS, STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 7), SetFill(1, 1), - /* Generate */ - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalSize(84, 36), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetPadding(0, 10, 0, 10), SetFill(1, 1), - NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), EndContainer(), }; @@ -1266,46 +1248,53 @@ static const NWidgetPart _nested_create_scenario_widgets[] = { NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_SE_MAPGEN_CAPTION, STR_NULL), EndContainer(), NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 10), - /* Landscape style selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 3, 10), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(10, 8, 10), - /* Green generation type buttons: 'Flat land' and 'Random land'. */ - NWidget(NWID_VERTICAL), SetPIP(10, 6, 10), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_EMPTY_WORLD), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD, STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP), SetFill(1, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_RANDOM_WORLD), SetDataTip(STR_SE_MAPGEN_RANDOM_LAND, STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND), SetFill(1, 1), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + /* Landscape style selection. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPIPRatio(1, 1, 1), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_CS_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), EndContainer(), - /* Labels + setting drop-downs */ - NWidget(NWID_VERTICAL), SetPIP(10, 6, 10), - /* Map size. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetPadding(1, 0, 0, 0), - NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetPadding(0, 4, 0, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 2, 0, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), - EndContainer(), - /* Date. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetPadding(1, 0, 0, 0), - NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), + + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + /* Green generation type buttons: 'Flat land' and 'Random land'. */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_EMPTY_WORLD), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD, STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_CS_RANDOM_WORLD), SetDataTip(STR_SE_MAPGEN_RANDOM_LAND, STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND), SetFill(1, 1), EndContainer(), - /* Flat map height. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_ORANGE), - SetDataTip(STR_SE_MAPGEN_FLAT_WORLD_HEIGHT, STR_NULL), SetPadding(1, 0, 0, 0), - NWidget(NWID_SPACER), SetMinimalSize(6, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_NULL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP), + + /* Labels + setting drop-downs */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + /* Labels. */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD_HEIGHT, STR_NULL), SetFill(0, 1), + EndContainer(), + + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + /* Map size. */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1), + EndContainer(), + + /* Date. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), + EndContainer(), + + /* Flat map height. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_INT, STR_NULL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP), + EndContainer(), + EndContainer(), EndContainer(), EndContainer(), EndContainer(), From f93711838fecfc33dbe552617832ebb148a30697 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 19:22:02 +0000 Subject: [PATCH 36/54] Fix 6317967: Missing exception for SetPipRatio(). (#11465) --- src/widget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/widget.cpp b/src/widget.cpp index 53d26e4ac5..b24c259cbc 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -3254,6 +3254,8 @@ static const NWidgetPart *MakeNWidget(const NWidgetPart *nwid_begin, const NWidg NWidgetBackground *nwb = dynamic_cast(*dest); if (nwb != nullptr) nwb->SetPIPRatio(nwid_begin->u.pip.pre, nwid_begin->u.pip.inter, nwid_begin->u.pip.post); + + if (unlikely(nwc == nullptr && nwb == nullptr)) throw std::runtime_error("WPT_PIPRATIO requires NWidgetPIPContainer or NWidgetBackground"); break; } From cdb4e98a1539c01c94dba4abd72486362512dfc9 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 16 Nov 2023 20:02:07 +0000 Subject: [PATCH 37/54] Change: Use sparse padding for AI/GS settings windows. (#11466) --- src/ai/ai_gui.cpp | 69 +++++++++++++++++++++++-------------------- src/game/game_gui.cpp | 40 +++++++++++++------------ 2 files changed, 58 insertions(+), 51 deletions(-) diff --git a/src/ai/ai_gui.cpp b/src/ai/ai_gui.cpp index a383ba5132..94f1aeb826 100644 --- a/src/ai/ai_gui.cpp +++ b/src/ai/ai_gui.cpp @@ -33,42 +33,47 @@ static const NWidgetPart _nested_ai_config_widgets[] = { NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_CAPTION_AI, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE, WID_AIC_BACKGROUND), - NWidget(NWID_VERTICAL), SetPIP(4, 4, 4), - NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_NUMBER), SetDataTip(AWV_DECREASE, STR_NULL), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_NUMBER), SetDataTip(AWV_INCREASE, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(6, 0), - NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_NUMBER), SetDataTip(STR_AI_CONFIG_MAX_COMPETITORS, STR_NULL), SetFill(1, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_NUMBER), SetDataTip(AWV_DECREASE, STR_NULL), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_NUMBER), SetDataTip(AWV_INCREASE, STR_NULL), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_NUMBER), SetDataTip(STR_AI_CONFIG_MAX_COMPETITORS, STR_NULL), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_INTERVAL), SetDataTip(AWV_DECREASE, STR_NULL), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_INTERVAL), SetDataTip(AWV_INCREASE, STR_NULL), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_INTERVAL), SetDataTip(STR_AI_CONFIG_COMPETITORS_INTERVAL, STR_NULL), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_UP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_UP, STR_AI_CONFIG_MOVE_UP_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_DOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_DOWN, STR_AI_CONFIG_MOVE_DOWN_TOOLTIP), + EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(7, 0, 7), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_DECREASE_INTERVAL), SetDataTip(AWV_DECREASE, STR_NULL), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_AIC_INCREASE_INTERVAL), SetDataTip(AWV_INCREASE, STR_NULL), - NWidget(NWID_SPACER), SetMinimalSize(6, 0), - NWidget(WWT_TEXT, COLOUR_MAUVE, WID_AIC_INTERVAL), SetDataTip(STR_AI_CONFIG_COMPETITORS_INTERVAL, STR_NULL), SetFill(1, 0), + NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetMatrixDataTip(1, 8, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIC_SCROLLBAR), + EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_UP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_UP, STR_AI_CONFIG_MOVE_UP_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_DOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_DOWN, STR_AI_CONFIG_MOVE_DOWN_TOOLTIP), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_AI, STR_AI_CONFIG_CHANGE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 1), SetMinimalSize(279, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), EndContainer(), - NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL), SetPadding(0, 5, 0, 5), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetMatrixDataTip(1, 8, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR), - NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIC_SCROLLBAR), - EndContainer(), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 9), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_AI, STR_AI_CONFIG_CHANGE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), - EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 0), SetMinimalSize(279, 0), SetPadding(0, 7, 9, 7), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), }; diff --git a/src/game/game_gui.cpp b/src/game/game_gui.cpp index 2bc68f095b..2e1e737e82 100644 --- a/src/game/game_gui.cpp +++ b/src/game/game_gui.cpp @@ -36,27 +36,29 @@ static const NWidgetPart _nested_gs_config_widgets[] = { NWidget(WWT_CAPTION, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_CAPTION_GAMESCRIPT, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), - NWidget(WWT_PANEL, COLOUR_MAUVE, WID_GSC_BACKGROUND), SetFill(1, 0), SetResize(1, 0), - NWidget(NWID_SPACER), SetMinimalSize(0, 3), SetFill(1, 0), SetResize(1, 0), - NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetFill(1, 0), SetResize(1, 0), SetPadding(0, 5, 4, 5), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_GSLIST), SetMinimalSize(288, 14), SetFill(1, 0), SetResize(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 6), SetFill(1, 0), SetResize(1, 0), - NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT_PARAM, STR_NULL), SetFill(1, 0), SetResize(1, 0), SetPadding(0, 5, 4, 5), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_SETTINGS), SetFill(1, 0), SetResize(1, 1), SetMinimalSize(188, 182), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_GSC_SCROLLBAR), - NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GSC_SCROLLBAR), + NWidget(WWT_PANEL, COLOUR_MAUVE, WID_GSC_BACKGROUND), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetFill(1, 0), SetResize(1, 0), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_GSLIST), SetMinimalSize(288, 14), SetFill(1, 1), SetResize(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP), + EndContainer(), + NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT_PARAM, STR_NULL), SetFill(1, 1), SetResize(1, 0), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_SETTINGS), SetFill(1, 0), SetResize(1, 1), SetMinimalSize(188, 182), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_GSC_SCROLLBAR), + NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GSC_SCROLLBAR), + EndContainer(), + EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CHANGE), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_GAMESCRIPT, STR_AI_CONFIG_CHANGE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CONTENT_DOWNLOAD), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(279, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CHANGE), SetFill(1, 0), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_GAMESCRIPT, STR_AI_CONFIG_CHANGE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), - EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CONTENT_DOWNLOAD), SetFill(1, 0), SetResize(1, 0), SetMinimalSize(279, 0), SetPadding(0, 7, 9, 7), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), From 42ae61a4fe891c11a607e978393467116d883907 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 25 Oct 2023 12:34:43 +0100 Subject: [PATCH 38/54] Change: Use sparse padding for NewGRF settings window. --- src/newgrf_gui.cpp | 186 +++++++++++++++++++++++---------------------- 1 file changed, 94 insertions(+), 92 deletions(-) diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 9acd9bd3a2..189345cd74 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -1601,8 +1601,6 @@ NewGRFWindow::GUIGRFConfigList::FilterFunction * const NewGRFWindow::filter_func */ class NWidgetNewGRFDisplay : public NWidgetContainer { public: - static const uint INTER_LIST_SPACING; ///< Empty vertical space between both lists in the 2 column mode. - static const uint INTER_COLUMN_SPACING; ///< Empty horizontal space between two columns. static const uint MAX_EXTRA_INFO_WIDTH; ///< Maximal additional width given to the panel. static const uint MIN_EXTRA_FOR_3_COLUMNS; ///< Minimal additional width needed before switching to 3 columns. @@ -1644,8 +1642,8 @@ public: uint min_inf_height = this->inf->smallest_y + this->inf->padding.Vertical(); /* Smallest window is in two column mode. */ - this->smallest_x = std::max(min_avs_width, min_acs_width) + INTER_COLUMN_SPACING + min_inf_width; - this->smallest_y = std::max(min_inf_height, min_acs_height + INTER_LIST_SPACING + min_avs_height); + this->smallest_x = std::max(min_avs_width, min_acs_width) + WidgetDimensions::scaled.hsep_wide + min_inf_width; + this->smallest_y = std::max(min_inf_height, min_acs_height + WidgetDimensions::scaled.vsep_wide + min_avs_height); /* Filling. */ this->fill_x = LeastCommonMultiple(this->avs->fill_x, this->acs->fill_x); @@ -1680,8 +1678,8 @@ public: uint acs_extra_width = min_list_width - min_acs_width; // Additional width needed for acs to reach min_list_width. /* Use 2 or 3 columns? */ - uint min_three_columns = min_avs_width + min_acs_width + min_inf_width + 2 * INTER_COLUMN_SPACING; - uint min_two_columns = min_list_width + min_inf_width + INTER_COLUMN_SPACING; + uint min_three_columns = min_avs_width + min_acs_width + min_inf_width + 2 * WidgetDimensions::scaled.hsep_wide; + uint min_two_columns = min_list_width + min_inf_width + WidgetDimensions::scaled.hsep_wide; bool use_three_columns = this->editable && (min_three_columns + MIN_EXTRA_FOR_3_COLUMNS <= given_width); /* Info panel is a separate column in both modes. Compute its width first. */ @@ -1710,7 +1708,7 @@ public: uint acs_width = given_width - // Remaining space, including horizontal padding. inf_width - this->inf->padding.Horizontal() - - avs_width - this->avs->padding.Horizontal() - 2 * INTER_COLUMN_SPACING; + avs_width - this->avs->padding.Horizontal() - 2 * WidgetDimensions::scaled.hsep_wide; acs_width = ComputeMaxSize(min_acs_width, acs_width, this->acs->GetHorizontalStepSize(sizing)) - this->acs->padding.Horizontal(); @@ -1722,16 +1720,16 @@ public: if (rtl) { x += this->inf->padding.left; this->inf->AssignSizePosition(sizing, x, y + this->inf->padding.top, inf_width, inf_height, rtl); - x += inf_width + this->inf->padding.right + INTER_COLUMN_SPACING; + x += inf_width + this->inf->padding.right + WidgetDimensions::scaled.hsep_wide; } else { x += this->avs->padding.left; this->avs->AssignSizePosition(sizing, x, y + this->avs->padding.top, avs_width, avs_height, rtl); - x += avs_width + this->avs->padding.right + INTER_COLUMN_SPACING; + x += avs_width + this->avs->padding.right + WidgetDimensions::scaled.hsep_wide; } x += this->acs->padding.left; this->acs->AssignSizePosition(sizing, x, y + this->acs->padding.top, acs_width, acs_height, rtl); - x += acs_width + this->acs->padding.right + INTER_COLUMN_SPACING; + x += acs_width + this->acs->padding.right + WidgetDimensions::scaled.hsep_wide; if (rtl) { x += this->avs->padding.left; @@ -1748,11 +1746,11 @@ public: uint acs_width = ComputeMaxSize(this->acs->smallest_x, this->acs->smallest_x + acs_extra_width + extra_width, this->acs->GetHorizontalStepSize(sizing)); - uint min_avs_height = (!this->editable) ? 0 : this->avs->smallest_y + this->avs->padding.Vertical() + INTER_LIST_SPACING; + uint min_avs_height = (!this->editable) ? 0 : this->avs->smallest_y + this->avs->padding.Vertical() + WidgetDimensions::scaled.vsep_wide; uint min_acs_height = this->acs->smallest_y + this->acs->padding.Vertical(); uint extra_height = given_height - min_acs_height - min_avs_height; - /* Never use fill_y on these; instead use the INTER_LIST_SPACING as filler */ + /* Never use fill_y on these; instead use WidgetDimensions::scaled.vsep_wide as filler */ uint avs_height = ComputeMaxSize(this->avs->smallest_y, this->avs->smallest_y + extra_height / 2, this->avs->resize_y); if (this->editable) extra_height -= avs_height - this->avs->smallest_y; uint acs_height = ComputeMaxSize(this->acs->smallest_y, this->acs->smallest_y + extra_height, this->acs->resize_y); @@ -1761,7 +1759,7 @@ public: if (rtl) { x += this->inf->padding.left; this->inf->AssignSizePosition(sizing, x, y + this->inf->padding.top, inf_width, inf_height, rtl); - x += inf_width + this->inf->padding.right + INTER_COLUMN_SPACING; + x += inf_width + this->inf->padding.right + WidgetDimensions::scaled.hsep_wide; this->acs->AssignSizePosition(sizing, x + this->acs->padding.left, y + this->acs->padding.top, acs_width, acs_height, rtl); if (this->editable) { @@ -1780,7 +1778,7 @@ public: if (this->editable) { dx = std::max(dx, this->avs->current_x + this->avs->padding.Horizontal()); } - x += dx + INTER_COLUMN_SPACING + this->inf->padding.left; + x += dx + WidgetDimensions::scaled.hsep_wide + this->inf->padding.left; this->inf->AssignSizePosition(sizing, x, y + this->inf->padding.top, inf_width, inf_height, rtl); } } @@ -1804,86 +1802,85 @@ public: } }; -const uint NWidgetNewGRFDisplay::INTER_COLUMN_SPACING = 12; -const uint NWidgetNewGRFDisplay::INTER_LIST_SPACING = NWidgetNewGRFDisplay::INTER_COLUMN_SPACING + 1; const uint NWidgetNewGRFDisplay::MAX_EXTRA_INFO_WIDTH = 150; const uint NWidgetNewGRFDisplay::MIN_EXTRA_FOR_3_COLUMNS = 50; static const NWidgetPart _nested_newgrf_actives_widgets[] = { - /* Left side, presets. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXT, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_SELECT_PRESET, STR_NULL), - SetPadding(0, WidgetDimensions::unscaled.frametext.right, 0, 0), - NWidget(WWT_DROPDOWN, COLOUR_YELLOW, WID_NS_PRESET_LIST), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_JUST_STRING1, STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_SAVE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_PRESET_SAVE, STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_DELETE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_PRESET_DELETE, STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING), SetResize(1, 0), SetFill(1, 0), - NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(WWT_LABEL, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_ACTIVE_LIST, STR_NULL), - SetFill(1, 0), SetResize(1, 0), SetPadding(3, WidgetDimensions::unscaled.frametext.right, 0, WidgetDimensions::unscaled.frametext.left), - /* Left side, active grfs. */ - NWidget(NWID_HORIZONTAL), SetPadding(0, 2, 0, 2), - NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_FILE_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2), - SetFill(1, 1), SetResize(1, 1), SetScrollbar(WID_NS_SCROLLBAR), SetDataTip(STR_NULL, STR_NEWGRF_SETTINGS_FILE_TOOLTIP), - EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + /* Left side, presets. */ + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_TEXT, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_SELECT_PRESET, STR_NULL), + SetPadding(0, WidgetDimensions::unscaled.hsep_wide, 0, 0), + NWidget(WWT_DROPDOWN, COLOUR_YELLOW, WID_NS_PRESET_LIST), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_JUST_STRING1, STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_SAVE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_PRESET_SAVE, STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_PRESET_DELETE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_PRESET_DELETE, STR_NEWGRF_SETTINGS_PRESET_DELETE_TOOLTIP), EndContainer(), - NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NS_SCROLLBAR), EndContainer(), - /* Buttons. */ - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_REMOVE), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_REMOVE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_REMOVE, STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP), - NWidget(NWID_VERTICAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_UP), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_MOVEUP, STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_DOWN), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_MOVEDOWN, STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP), + + NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_ACTIVE_LIST, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + /* Left side, active grfs. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_PANEL, COLOUR_MAUVE), + NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_FILE_LIST), SetMinimalSize(100, 1), SetPadding(2), + SetFill(1, 1), SetResize(1, 1), SetScrollbar(WID_NS_SCROLLBAR), SetDataTip(STR_NULL, STR_NEWGRF_SETTINGS_FILE_TOOLTIP), + EndContainer(), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_UPGRADE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_UPGRADE, STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP), + NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NS_SCROLLBAR), EndContainer(), - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_RESCAN_FILES2), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_CONTENT_DOWNLOAD2), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), + /* Buttons. */ + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_REMOVE), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_REMOVE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_REMOVE, STR_NEWGRF_SETTINGS_REMOVE_TOOLTIP), + NWidget(NWID_VERTICAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_UP), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_MOVEUP, STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_MOVE_DOWN), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_MOVEDOWN, STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_UPGRADE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_UPGRADE, STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP), + EndContainer(), + + NWidget(NWID_VERTICAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_RESCAN_FILES2), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_RESCAN_FILES, STR_NEWGRF_SETTINGS_RESCAN_FILES_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_CONTENT_DOWNLOAD2), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), + EndContainer(), EndContainer(), EndContainer(), EndContainer(), }; static const NWidgetPart _nested_newgrf_availables_widgets[] = { - NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(WWT_LABEL, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_INACTIVE_LIST, STR_NULL), - SetFill(1, 0), SetResize(1, 0), SetPadding(3, WidgetDimensions::unscaled.frametext.right, 0, WidgetDimensions::unscaled.frametext.left), + NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_NEWGRF_SETTINGS_INACTIVE_LIST, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), /* Left side, available grfs, filter edit box. */ - NWidget(NWID_HORIZONTAL), SetPadding(WidgetDimensions::unscaled.frametext.top, 0, WidgetDimensions::unscaled.frametext.bottom, 0), - SetPIP(WidgetDimensions::unscaled.frametext.left, WidgetDimensions::unscaled.frametext.right, WidgetDimensions::unscaled.frametext.right), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), NWidget(WWT_TEXT, COLOUR_MAUVE), SetFill(0, 1), SetDataTip(STR_NEWGRF_FILTER_TITLE, STR_NULL), NWidget(WWT_EDITBOX, COLOUR_MAUVE, WID_NS_FILTER), SetFill(1, 0), SetMinimalSize(50, 12), SetResize(1, 0), SetDataTip(STR_LIST_FILTER_OSKTITLE, STR_LIST_FILTER_TOOLTIP), EndContainer(), + /* Left side, available grfs. */ - NWidget(NWID_HORIZONTAL), SetPadding(0, 2, 0, 2), + NWidget(NWID_HORIZONTAL), NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_AVAIL_LIST), SetMinimalSize(100, 1), SetPadding(2, 2, 2, 2), + NWidget(WWT_INSET, COLOUR_MAUVE, WID_NS_AVAIL_LIST), SetMinimalSize(100, 1), SetPadding(2), SetFill(1, 1), SetResize(1, 1), SetScrollbar(WID_NS_SCROLL2BAR), EndContainer(), EndContainer(), NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_NS_SCROLL2BAR), EndContainer(), + /* Left side, available grfs, buttons. */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPadding(2, 2, 2, 2), SetPIP(0, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_ADD), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_NEWGRF_SETTINGS_ADD, STR_NEWGRF_SETTINGS_ADD_FILE_TOOLTIP), NWidget(NWID_VERTICAL), @@ -1897,37 +1894,42 @@ static const NWidgetPart _nested_newgrf_availables_widgets[] = { }; static const NWidgetPart _nested_newgrf_infopanel_widgets[] = { - /* Right side, info panel. */ - NWidget(NWID_VERTICAL), SetPadding(0, 0, 2, 0), - NWidget(WWT_PANEL, COLOUR_MAUVE), SetPadding(0, 0, 2, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), + /* Right side, info panel. */ + NWidget(WWT_PANEL, COLOUR_MAUVE), NWidget(WWT_EMPTY, COLOUR_MAUVE, WID_NS_NEWGRF_INFO_TITLE), SetFill(1, 0), SetResize(1, 0), NWidget(WWT_EMPTY, COLOUR_MAUVE, WID_NS_NEWGRF_INFO), SetFill(1, 1), SetResize(1, 1), SetMinimalSize(150, 100), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_OPEN_URL), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), + + /* Right side, info buttons. */ + NWidget(NWID_VERTICAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_OPEN_URL), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_NEWGRF_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL), + EndContainer(), EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_APPLY), - /* Right side, buttons. */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING, 0), - NWidget(NWID_VERTICAL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_SET_PARAMETERS), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_TOGGLE_PALETTE), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_TOGGLE_PALETTE, STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP), + + /* Right side, config buttons. */ + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NS_SHOW_APPLY), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(NWID_VERTICAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_SET_PARAMETERS), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_SET_PARAMETERS, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_TOGGLE_PALETTE), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_TOGGLE_PALETTE, STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_APPLY_CHANGES), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_APPLY_CHANGES, STR_NULL), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_APPLY_CHANGES), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_APPLY_CHANGES, STR_NULL), + NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_VIEW_PARAMETERS), SetFill(1, 0), SetResize(1, 0), + SetDataTip(STR_NEWGRF_SETTINGS_SHOW_PARAMETERS, STR_NULL), EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_NS_VIEW_PARAMETERS), SetFill(1, 0), SetResize(1, 0), - SetDataTip(STR_NEWGRF_SETTINGS_SHOW_PARAMETERS, STR_NULL), EndContainer(), }; @@ -1954,7 +1956,7 @@ static const NWidgetPart _nested_newgrf_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE), EndContainer(), NWidget(WWT_PANEL, COLOUR_MAUVE), - NWidgetFunction(NewGRFDisplay), SetPadding(NWidgetNewGRFDisplay::INTER_COLUMN_SPACING, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING, 2, NWidgetNewGRFDisplay::INTER_COLUMN_SPACING), + NWidgetFunction(NewGRFDisplay), SetPadding(WidgetDimensions::unscaled.sparse_resize), /* Resize button. */ NWidget(NWID_HORIZONTAL), NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0), From b2d4d905025270ea553cd669b94c53062ae5aa53 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Wed, 25 Oct 2023 12:35:10 +0100 Subject: [PATCH 39/54] Change: Apply interface scaling to NewGRF settings min/max sizes. --- src/newgrf_gui.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 189345cd74..215427f00a 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -30,6 +30,7 @@ #include "fios.h" #include "timer/timer.h" #include "timer/timer_window.h" +#include "zoom_func.h" #include "widgets/newgrf_widget.h" #include "widgets/misc_widget.h" @@ -1680,16 +1681,16 @@ public: /* Use 2 or 3 columns? */ uint min_three_columns = min_avs_width + min_acs_width + min_inf_width + 2 * WidgetDimensions::scaled.hsep_wide; uint min_two_columns = min_list_width + min_inf_width + WidgetDimensions::scaled.hsep_wide; - bool use_three_columns = this->editable && (min_three_columns + MIN_EXTRA_FOR_3_COLUMNS <= given_width); + bool use_three_columns = this->editable && (min_three_columns + ScaleGUITrad(MIN_EXTRA_FOR_3_COLUMNS) <= given_width); /* Info panel is a separate column in both modes. Compute its width first. */ uint extra_width, inf_width; if (use_three_columns) { extra_width = given_width - min_three_columns; - inf_width = std::min(MAX_EXTRA_INFO_WIDTH, extra_width / 2); + inf_width = std::min(ScaleGUITrad(MAX_EXTRA_INFO_WIDTH), extra_width / 2); } else { extra_width = given_width - min_two_columns; - inf_width = std::min(MAX_EXTRA_INFO_WIDTH, extra_width / 2); + inf_width = std::min(ScaleGUITrad(MAX_EXTRA_INFO_WIDTH), extra_width / 2); } inf_width = ComputeMaxSize(this->inf->smallest_x, this->inf->smallest_x + inf_width, this->inf->GetHorizontalStepSize(sizing)); extra_width -= inf_width - this->inf->smallest_x; From 08778094f409ae9ad6bd93d4b876655ed57d803e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Fri, 17 Nov 2023 17:42:19 +0000 Subject: [PATCH 40/54] Fix: extmidi did not move on to next song after playing ends. (#11469) `song` is no longer a C-style string so cannot be cleared by writing a NUL char. Use `.clear()` to properly clear a std::string. --- src/music/extmidi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/music/extmidi.cpp b/src/music/extmidi.cpp index 77b7a0c4d6..86b8bb57c0 100644 --- a/src/music/extmidi.cpp +++ b/src/music/extmidi.cpp @@ -125,7 +125,7 @@ void MusicDriver_ExtMidi::DoPlay() FALLTHROUGH; default: - this->song[0] = '\0'; + this->song.clear(); break; } } From 29102ce42c004426eec33cf45e1343f6b91a61d1 Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 17 Nov 2023 18:38:21 +0000 Subject: [PATCH 41/54] Update: Translations from eints dutch: 1 change by Afoklala --- src/lang/dutch.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 99c1dad6b2..65169ea683 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1090,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Basisset STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Selecteer de te gebruiken basisset voor muziek STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Aanvullende informatie over the basisset voor muziek +STR_BASESET_STATUS :{STRING} {RED}({NUM} {P "ontbrekend/beschadigd bestand" "ontbrekende/beschadigde bestanden"}) STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Mislukt om een lijst met ondersteunde resoluties op te halen STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus voor volledig scherm is mislukt From 05b55c4d4349b69026213ce12e1a41af8e87b069 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 19 Nov 2023 00:36:53 +0000 Subject: [PATCH 42/54] Fix: Extra space allocated to container-within-container may not get allocated to children. (#11471) Always derive additional length from contained widgets instead of from the container, as the container's minimal length may have been adjusted by an NC_EQUALSIZE parent container. --- src/widget.cpp | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/widget.cpp b/src/widget.cpp index b24c259cbc..13fd8315f1 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -1593,15 +1593,9 @@ void NWidgetHorizontal::AssignSizePosition(SizingType sizing, int x, int y, uint assert(given_width >= this->smallest_x && given_height >= this->smallest_y); /* Compute additional width given to us. */ - uint additional_length = given_width; - if (this->pip_ratio_pre + this->pip_ratio_inter + this->pip_ratio_post != 0 || (sizing == ST_SMALLEST && (this->flags & NC_EQUALSIZE))) { - /* For EQUALSIZE containers this does not sum to smallest_x during initialisation */ - additional_length -= this->pip_pre + this->gaps * this->pip_inter + this->pip_post; - for (NWidgetBase *child_wid = this->head; child_wid != nullptr; child_wid = child_wid->next) { - if (child_wid->smallest_x != 0 || child_wid->fill_x != 0) additional_length -= child_wid->smallest_x + child_wid->padding.Horizontal(); - } - } else { - additional_length -= this->smallest_x; + uint additional_length = given_width - (this->pip_pre + this->gaps * this->pip_inter + this->pip_post); + for (NWidgetBase *child_wid = this->head; child_wid != nullptr; child_wid = child_wid->next) { + if (child_wid->smallest_x != 0 || child_wid->fill_x != 0) additional_length -= child_wid->smallest_x + child_wid->padding.Horizontal(); } this->StoreSizePosition(sizing, x, y, given_width, given_height); @@ -1791,15 +1785,9 @@ void NWidgetVertical::AssignSizePosition(SizingType sizing, int x, int y, uint g assert(given_width >= this->smallest_x && given_height >= this->smallest_y); /* Compute additional height given to us. */ - uint additional_length = given_height; - if (this->pip_ratio_pre + this->pip_ratio_inter + this->pip_ratio_post != 0 || (sizing == ST_SMALLEST && (this->flags & NC_EQUALSIZE))) { - /* For EQUALSIZE containers this does not sum to smallest_y during initialisation */ - additional_length -= this->pip_pre + this->gaps * this->pip_inter + this->pip_post; - for (NWidgetBase *child_wid = this->head; child_wid != nullptr; child_wid = child_wid->next) { - if (child_wid->smallest_y != 0 || child_wid->fill_y != 0) additional_length -= child_wid->smallest_y + child_wid->padding.Vertical(); - } - } else { - additional_length -= this->smallest_y; + uint additional_length = given_height - (this->pip_pre + this->gaps * this->pip_inter + this->pip_post); + for (NWidgetBase *child_wid = this->head; child_wid != nullptr; child_wid = child_wid->next) { + if (child_wid->smallest_y != 0 || child_wid->fill_y != 0) additional_length -= child_wid->smallest_y + child_wid->padding.Vertical(); } this->StoreSizePosition(sizing, x, y, given_width, given_height); From 293a26f248a7649e9b9402161bc3ec1a46a6d367 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Sun, 19 Nov 2023 21:12:55 +0000 Subject: [PATCH 43/54] Change: Use sparse padding and SETTING_BUTTON sizes for custom currency window. (#11472) --- src/settings_gui.cpp | 71 +++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 31 deletions(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 2608b86fa2..231ddc71e2 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -2731,11 +2731,19 @@ struct CustomCurrencyWindow : Window { void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override { switch (widget) { - /* Set the appropriate width for the edit 'buttons' */ + /* Set the appropriate width for the up/down buttons. */ + case WID_CC_RATE_DOWN: + case WID_CC_RATE_UP: + case WID_CC_YEAR_DOWN: + case WID_CC_YEAR_UP: + *size = maxdim(*size, {(uint)SETTING_BUTTON_WIDTH / 2, (uint)SETTING_BUTTON_HEIGHT}); + break; + + /* Set the appropriate width for the edit buttons. */ case WID_CC_SEPARATOR_EDIT: case WID_CC_PREFIX_EDIT: case WID_CC_SUFFIX_EDIT: - size->width = this->GetWidget(WID_CC_RATE_DOWN)->smallest_x + this->GetWidget(WID_CC_RATE_UP)->smallest_x; + *size = maxdim(*size, {(uint)SETTING_BUTTON_WIDTH, (uint)SETTING_BUTTON_HEIGHT}); break; /* Make sure the window is wide enough for the widest exchange rate */ @@ -2873,37 +2881,38 @@ static const NWidgetPart _nested_cust_currency_widgets[] = { NWidget(WWT_CAPTION, COLOUR_GREY), SetDataTip(STR_CURRENCY_WINDOW, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY), - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(7, 3, 0), - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_RATE), SetDataTip(STR_CURRENCY_EXCHANGE_RATE, STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5), - NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SEPARATOR_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(0, 1), - NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SEPARATOR), SetDataTip(STR_CURRENCY_SEPARATOR, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5), - NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_PREFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(0, 1), - NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_PREFIX), SetDataTip(STR_CURRENCY_PREFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5), - NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SUFFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(0, 1), - NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SUFFIX), SetDataTip(STR_CURRENCY_SUFFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 5), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), - NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), - NWidget(NWID_SPACER), SetMinimalSize(5, 0), - NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_YEAR), SetDataTip(STR_JUST_STRING1, STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), SetFill(1, 0), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_RATE_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_EXCHANGE_RATE_TOOLTIP), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_RATE), SetDataTip(STR_CURRENCY_EXCHANGE_RATE, STR_CURRENCY_SET_EXCHANGE_RATE_TOOLTIP), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SEPARATOR_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SEPARATOR), SetDataTip(STR_CURRENCY_SEPARATOR, STR_CURRENCY_SET_CUSTOM_CURRENCY_SEPARATOR_TOOLTIP), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_PREFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_PREFIX), SetDataTip(STR_CURRENCY_PREFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_PREFIX_TOOLTIP), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(WWT_PUSHBTN, COLOUR_DARK_BLUE, WID_CC_SUFFIX_EDIT), SetDataTip(0x0, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(0, 1), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_SUFFIX), SetDataTip(STR_CURRENCY_SUFFIX, STR_CURRENCY_SET_CUSTOM_CURRENCY_SUFFIX_TOOLTIP), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_DOWN), SetDataTip(AWV_DECREASE, STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), + NWidget(WWT_PUSHARROWBTN, COLOUR_YELLOW, WID_CC_YEAR_UP), SetDataTip(AWV_INCREASE, STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), + EndContainer(), + NWidget(WWT_TEXT, COLOUR_BLUE, WID_CC_YEAR), SetDataTip(STR_JUST_STRING1, STR_CURRENCY_SET_CUSTOM_CURRENCY_TO_EURO_TOOLTIP), SetFill(1, 0), + EndContainer(), EndContainer(), + NWidget(WWT_LABEL, COLOUR_BLUE, WID_CC_PREVIEW), + SetDataTip(STR_CURRENCY_PREVIEW, STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP), EndContainer(), - NWidget(WWT_LABEL, COLOUR_BLUE, WID_CC_PREVIEW), - SetDataTip(STR_CURRENCY_PREVIEW, STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP), SetPadding(15, 1, 18, 2), EndContainer(), }; From f58a7ef6732d9bccb2264906581eeb6f85109cb3 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 00:14:06 +0000 Subject: [PATCH 44/54] Codechange: Remove now-unnecessary containers in picker layouts. (#11473) These are no longer necessary as the issue they work around was resolved by #11471 --- src/object_gui.cpp | 8 +++----- src/rail_gui.cpp | 8 +++----- src/road_gui.cpp | 16 ++++++---------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/object_gui.cpp b/src/object_gui.cpp index 5a63690f39..22ab8dddd0 100644 --- a/src/object_gui.cpp +++ b/src/object_gui.cpp @@ -690,11 +690,9 @@ static const NWidgetPart _nested_build_object_widgets[] = { NWidget(WWT_TEXT, COLOUR_DARK_GREEN, WID_BO_OBJECT_SIZE), SetDataTip(STR_OBJECT_BUILD_SIZE, STR_NULL), SetAlignment(SA_CENTER), EndContainer(), NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BO_SELECT_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_SELECT_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BO_SELECT_IMAGE), SetMinimalSize(66, 60), SetDataTip(0x0, STR_OBJECT_BUILD_TOOLTIP), - SetFill(0, 0), SetResize(0, 0), SetScrollbar(WID_BO_SELECT_SCROLL), - EndContainer(), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BO_SELECT_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BO_SELECT_IMAGE), SetMinimalSize(66, 60), SetDataTip(0x0, STR_OBJECT_BUILD_TOOLTIP), + SetFill(0, 0), SetResize(0, 0), SetScrollbar(WID_BO_SELECT_SCROLL), EndContainer(), EndContainer(), EndContainer(), diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 2eb11ec160..ded9db9fe0 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -1595,11 +1595,9 @@ static const NWidgetPart _nested_station_builder_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BRAS_SHOW_NEWST_MATRIX), /* We need an additional background for the matrix, as the matrix cannot handle the scrollbar due to not being an NWidgetCore. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BRAS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRAS_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BRAS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BRAS_MATRIX_SCROLL), - EndContainer(), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BRAS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BRAS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BRAS_MATRIX_SCROLL), EndContainer(), EndContainer(), EndContainer(), diff --git a/src/road_gui.cpp b/src/road_gui.cpp index a9aa238df8..40be806900 100644 --- a/src/road_gui.cpp +++ b/src/road_gui.cpp @@ -1656,11 +1656,9 @@ static const NWidgetPart _nested_road_station_picker_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), /* Hidden panel as NWID_MATRIX does not support SetScrollbar() */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), - EndContainer(), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), EndContainer(), EndContainer(), EndContainer(), @@ -1735,11 +1733,9 @@ static const NWidgetPart _nested_tram_station_picker_widgets[] = { NWidget(NWID_SELECTION, INVALID_COLOUR, WID_BROS_SHOW_NEWST_MATRIX), /* Hidden panel as NWID_MATRIX does not support SetScrollbar() */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetScrollbar(WID_BROS_MATRIX_SCROLL), - NWidget(NWID_HORIZONTAL), - NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), - NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), - SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), - EndContainer(), + NWidget(NWID_MATRIX, COLOUR_DARK_GREEN, WID_BROS_MATRIX), SetPIP(0, 2, 0), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_BROS_IMAGE), SetMinimalSize(66, 60), + SetFill(0, 0), SetResize(0, 0), SetDataTip(0x0, STR_STATION_BUILD_STATION_TYPE_TOOLTIP), SetScrollbar(WID_BROS_MATRIX_SCROLL), EndContainer(), EndContainer(), EndContainer(), From c80fa7d7524b7869f6c9ea97dad0e74a826635be Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 00:44:06 +0000 Subject: [PATCH 45/54] Codechange: Simplify setting minimum width for game options dropdown lists. (#11474) Height isn't necessary as drop down controls already have sufficient height, so we can use GetDropDownListDimension() to get the width. --- src/settings_gui.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 231ddc71e2..ebbbb8ba24 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -445,17 +445,8 @@ struct GameOptionsWindow : Window { default: { int selected; - DropDownList list = this->BuildDropDownList(widget, &selected); - if (!list.empty()) { - /* Find the biggest item for the default size. */ - for (const auto &ddli : list) { - Dimension string_dim; - int width = ddli->Width(); - string_dim.width = width + padding.width; - string_dim.height = ddli->Height() + padding.height; - *size = maxdim(*size, string_dim); - } - } + size->width = std::max(size->width, GetDropDownListDimension(this->BuildDropDownList(widget, &selected)).width + padding.width); + break; } } } From 96d98d08c88dc99e1b18c80305f24bfb5e1721b4 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 01:12:25 +0000 Subject: [PATCH 46/54] Change: Use sparse padding for main intro menu. (#11475) --- src/intro_gui.cpp | 182 ++++++++++++++++++---------------------------- 1 file changed, 72 insertions(+), 110 deletions(-) diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index 62988b577f..627e418621 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -381,118 +381,80 @@ struct SelectGameWindow : public Window { static const NWidgetPart _nested_select_game_widgets[] = { NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_INTRO_CAPTION, STR_NULL), NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 8), - - /* 'New Game' and 'Load Game' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GENERATE_GAME), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_NEW_GAME, STR_INTRO_TOOLTIP_NEW_GAME), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_LOAD_GAME), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_LOAD_GAME, STR_INTRO_TOOLTIP_LOAD_GAME), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'Play Scenario' and 'Play Heightmap' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_SCENARIO), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_PLAY_SCENARIO, STR_INTRO_TOOLTIP_PLAY_SCENARIO), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_HEIGHTMAP), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_PLAY_HEIGHTMAP, STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'Scenario Editor' and 'Multiplayer' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_EDIT_SCENARIO), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_SCENARIO_EDITOR, STR_INTRO_TOOLTIP_SCENARIO_EDITOR), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_NETWORK), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_MULTIPLAYER, STR_INTRO_TOOLTIP_MULTIPLAYER), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 7), - - /* Climate selection buttons */ - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TEMPERATE_LANDSCAPE), SetMinimalSize(77, 55), - SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_ARCTIC_LANDSCAPE), SetMinimalSize(77, 55), - SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TROPIC_LANDSCAPE), SetMinimalSize(77, 55), - SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(NWID_SPACER), SetMinimalSize(3, 0), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TOYLAND_LANDSCAPE), SetMinimalSize(77, 55), - SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - NWidget(NWID_SPACER), SetMinimalSize(10, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 7), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_BASESET_SELECTION), - NWidget(NWID_VERTICAL), - NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_BASESET), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10), - EndContainer(), - EndContainer(), - NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_TRANSLATION_SELECTION), - NWidget(NWID_VERTICAL), - NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_TRANSLATION), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse), + + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + /* 'New Game' and 'Load Game' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GENERATE_GAME), SetDataTip(STR_INTRO_NEW_GAME, STR_INTRO_TOOLTIP_NEW_GAME), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_LOAD_GAME), SetDataTip(STR_INTRO_LOAD_GAME, STR_INTRO_TOOLTIP_LOAD_GAME), SetFill(1, 0), + EndContainer(), + + /* 'Play Scenario' and 'Play Heightmap' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_SCENARIO), SetDataTip(STR_INTRO_PLAY_SCENARIO, STR_INTRO_TOOLTIP_PLAY_SCENARIO), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_HEIGHTMAP), SetDataTip(STR_INTRO_PLAY_HEIGHTMAP, STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP), SetFill(1, 0), + EndContainer(), + + /* 'Scenario Editor' and 'Multiplayer' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_EDIT_SCENARIO), SetDataTip(STR_INTRO_SCENARIO_EDITOR, STR_INTRO_TOOLTIP_SCENARIO_EDITOR), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_PLAY_NETWORK), SetDataTip(STR_INTRO_MULTIPLAYER, STR_INTRO_TOOLTIP_MULTIPLAYER), SetFill(1, 0), + EndContainer(), + EndContainer(), + + /* Climate selection buttons */ + NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0), SetPIPRatio(1, 1, 1), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TEMPERATE_LANDSCAPE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_ARCTIC_LANDSCAPE), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TROPIC_LANDSCAPE), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, WID_SGI_TOYLAND_LANDSCAPE), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), + EndContainer(), + + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_BASESET_SELECTION), + NWidget(NWID_VERTICAL), + NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_BASESET), SetFill(1, 0), + EndContainer(), + EndContainer(), + + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_TRANSLATION_SELECTION), + NWidget(NWID_VERTICAL), + NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_TRANSLATION), SetFill(1, 0), + EndContainer(), + EndContainer(), + + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), + /* 'Game Options' and 'Settings' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_OPTIONS), SetDataTip(STR_INTRO_GAME_OPTIONS, STR_INTRO_TOOLTIP_GAME_OPTIONS), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_SETTINGS_OPTIONS), SetDataTip(STR_INTRO_CONFIG_SETTINGS_TREE, STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE), SetFill(1, 0), + EndContainer(), + + /* 'AI Settings' and 'Game Script Settings' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_AI_SETTINGS), SetDataTip(STR_INTRO_AI_SETTINGS, STR_INTRO_TOOLTIP_AI_SETTINGS), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GS_SETTINGS), SetDataTip(STR_INTRO_GAMESCRIPT_SETTINGS, STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS), SetFill(1, 0), + EndContainer(), + + /* 'Check Online Content' and 'NewGRF Settings' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_CONTENT_DOWNLOAD), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GRF_SETTINGS), SetDataTip(STR_INTRO_NEWGRF_SETTINGS, STR_INTRO_TOOLTIP_NEWGRF_SETTINGS), SetFill(1, 0), + EndContainer(), + EndContainer(), + + /* 'Help and Manuals' and 'Highscore Table' buttons */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_HELP), SetDataTip(STR_INTRO_HELP, STR_INTRO_TOOLTIP_HELP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_HIGHSCORE), SetDataTip(STR_INTRO_HIGHSCORE, STR_INTRO_TOOLTIP_HIGHSCORE), SetFill(1, 0), + EndContainer(), + + /* 'Exit' button */ + NWidget(NWID_HORIZONTAL), SetPIPRatio(1, 0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_EXIT), SetMinimalSize(128, 0), SetDataTip(STR_INTRO_QUIT, STR_INTRO_TOOLTIP_QUIT), + EndContainer(), EndContainer(), EndContainer(), - - /* 'Game Options' and 'Settings' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_OPTIONS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_GAME_OPTIONS, STR_INTRO_TOOLTIP_GAME_OPTIONS), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_SETTINGS_OPTIONS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_CONFIG_SETTINGS_TREE, STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'AI Settings' and 'Game Script Settings' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_AI_SETTINGS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_AI_SETTINGS, STR_INTRO_TOOLTIP_AI_SETTINGS), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GS_SETTINGS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_GAMESCRIPT_SETTINGS, STR_INTRO_TOOLTIP_GAMESCRIPT_SETTINGS), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'Check Online Content' and 'NewGRF Settings' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_CONTENT_DOWNLOAD), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_GRF_SETTINGS), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_NEWGRF_SETTINGS, STR_INTRO_TOOLTIP_NEWGRF_SETTINGS), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'Help and Manuals' and 'Highscore Table' buttons */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_HELP), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_HELP, STR_INTRO_TOOLTIP_HELP), SetPadding(0, 0, 0, 10), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_HIGHSCORE), SetMinimalSize(158, 12), - SetDataTip(STR_INTRO_HIGHSCORE, STR_INTRO_TOOLTIP_HIGHSCORE), SetPadding(0, 10, 0, 0), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 6), - - /* 'Exit' button */ - NWidget(NWID_HORIZONTAL), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_SGI_EXIT), SetMinimalSize(128, 12), - SetDataTip(STR_INTRO_QUIT, STR_INTRO_TOOLTIP_QUIT), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - - NWidget(NWID_SPACER), SetMinimalSize(0, 8), - - EndContainer(), }; static WindowDesc _select_game_desc(__FILE__, __LINE__, From 9822fa658428c6e4370201536af7c02a2f10620d Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 20 Nov 2023 13:16:28 +0000 Subject: [PATCH 47/54] Fix: Trivial autoreplace of mixed cargo articulated engines (#11253) Do not fail autoreplace/autorenew of mixed cargo articulated engines due to an inability to refit to mixed cargoes, when no refit is required because the target engine already has a suitable set of cargoes. Notably, this allows autorenew (autoreplace to same engine type) to succeed. --- src/articulated_vehicles.cpp | 46 +++++++++++++++++++++++++++++++----- src/articulated_vehicles.h | 3 ++- src/autoreplace_cmd.cpp | 11 ++++++++- src/vehicle.cpp | 21 ++++++++++------ 4 files changed, 66 insertions(+), 15 deletions(-) diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index cfaab25986..51953b1601 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -8,6 +8,7 @@ /** @file articulated_vehicles.cpp Implementation of articulated vehicles. */ #include "stdafx.h" +#include "core/bitmath_func.hpp" #include "core/random_func.hpp" #include "train.h" #include "roadveh.h" @@ -161,6 +162,35 @@ CargoArray GetCapacityOfArticulatedParts(EngineID engine) return capacity; } +/** + * Get the cargo mask of the parts of a given engine. + * @param engine The engine to get the capacities from. + * @return The cargo mask. + */ +CargoTypes GetCargoTypesOfArticulatedParts(EngineID engine) +{ + CargoTypes cargoes = 0; + const Engine *e = Engine::Get(engine); + + CargoID cargo_type; + uint16_t cargo_capacity = GetVehicleDefaultCapacity(engine, &cargo_type); + if (cargo_type < NUM_CARGO && cargo_capacity > 0) SetBit(cargoes, cargo_type); + + if (!e->IsGroundVehicle()) return cargoes; + + if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return cargoes; + + for (uint i = 1; i < MAX_ARTICULATED_PARTS; i++) { + EngineID artic_engine = GetNextArticulatedPart(i, engine); + if (artic_engine == INVALID_ENGINE) break; + + cargo_capacity = GetVehicleDefaultCapacity(artic_engine, &cargo_type); + if (cargo_type < NUM_CARGO && cargo_capacity > 0) SetBit(cargoes, cargo_type); + } + + return cargoes; +} + /** * Checks whether any of the articulated parts is refittable * @param engine the first part @@ -226,22 +256,26 @@ CargoTypes GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial } /** - * Tests if all parts of an articulated vehicle are refitted to the same cargo. + * Get cargo mask of all cargoes carried by an articulated vehicle. * Note: Vehicles not carrying anything are ignored * @param v the first vehicle in the chain * @param cargo_type returns the common CargoID if needed. (CT_INVALID if no part is carrying something or they are carrying different things) - * @return true if some parts are carrying different cargoes, false if all parts are carrying the same (nothing is also the same) + * @return cargo mask, may be 0 if the no vehicle parts have cargo capacity */ -bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *cargo_type) +CargoTypes GetCargoTypesOfArticulatedVehicle(const Vehicle *v, CargoID *cargo_type) { + CargoTypes cargoes = 0; CargoID first_cargo = CT_INVALID; do { if (IsValidCargoID(v->cargo_type) && v->GetEngine()->CanCarryCargo()) { + SetBit(cargoes, v->cargo_type); if (!IsValidCargoID(first_cargo)) first_cargo = v->cargo_type; if (first_cargo != v->cargo_type) { - if (cargo_type != nullptr) *cargo_type = CT_INVALID; - return true; + if (cargo_type != nullptr) { + *cargo_type = CT_INVALID; + cargo_type = nullptr; + } } } @@ -249,7 +283,7 @@ bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *car } while (v != nullptr); if (cargo_type != nullptr) *cargo_type = first_cargo; - return false; + return cargoes; } /** diff --git a/src/articulated_vehicles.h b/src/articulated_vehicles.h index 819c27d3c1..91195dfe8b 100644 --- a/src/articulated_vehicles.h +++ b/src/articulated_vehicles.h @@ -15,10 +15,11 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window); CargoArray GetCapacityOfArticulatedParts(EngineID engine); +CargoTypes GetCargoTypesOfArticulatedParts(EngineID engine); void AddArticulatedParts(Vehicle *first); void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, CargoTypes *union_mask, CargoTypes *intersection_mask); CargoTypes GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type); -bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *cargo_type); +CargoTypes GetCargoTypesOfArticulatedVehicle(const Vehicle *v, CargoID *cargo_type); bool IsArticulatedVehicleRefittable(EngineID engine); bool IsArticulatedEngine(EngineID engine_type); void CheckConsistencyOfArticulatedVehicle(const Vehicle *v); diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 3f98666ec1..18883d009e 100644 --- a/src/autoreplace_cmd.cpp +++ b/src/autoreplace_cmd.cpp @@ -16,6 +16,7 @@ #include "autoreplace_func.h" #include "autoreplace_gui.h" #include "articulated_vehicles.h" +#include "core/bitmath_func.hpp" #include "core/random_func.hpp" #include "vehiclelist.h" #include "road.h" @@ -236,7 +237,15 @@ static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type, bool if (union_mask == 0) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity CargoID cargo_type; - if (IsArticulatedVehicleCarryingDifferentCargoes(v, &cargo_type)) return CT_INVALID; // We cannot refit to mixed cargoes in an automated way + CargoTypes cargo_mask = GetCargoTypesOfArticulatedVehicle(v, &cargo_type); + if (!HasAtMostOneBit(cargo_mask)) { + CargoTypes new_engine_default_cargoes = GetCargoTypesOfArticulatedParts(engine_type); + if ((cargo_mask & new_engine_default_cargoes) == cargo_mask) { + return CT_NO_REFIT; // engine_type is already a mixed cargo type which matches the incoming vehicle by default, no refit required + } + + return CT_INVALID; // We cannot refit to mixed cargoes in an automated way + } if (!IsValidCargoID(cargo_type)) { if (v->type != VEH_TRAIN) return CT_NO_REFIT; // If the vehicle does not carry anything at all, every replacement is fine. diff --git a/src/vehicle.cpp b/src/vehicle.cpp index e2cf5ba841..609c7a1a3e 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -229,13 +229,20 @@ bool Vehicle::NeedsServicing() const /* Is there anything to refit? */ if (union_mask != 0) { CargoID cargo_type; - /* We cannot refit to mixed cargoes in an automated way */ - if (IsArticulatedVehicleCarryingDifferentCargoes(v, &cargo_type)) continue; - - /* Did the old vehicle carry anything? */ - if (IsValidCargoID(cargo_type)) { - /* We can't refit the vehicle to carry the cargo we want */ - if (!HasBit(available_cargo_types, cargo_type)) continue; + CargoTypes cargo_mask = GetCargoTypesOfArticulatedVehicle(v, &cargo_type); + if (!HasAtMostOneBit(cargo_mask)) { + CargoTypes new_engine_default_cargoes = GetCargoTypesOfArticulatedParts(new_engine); + if ((cargo_mask & new_engine_default_cargoes) != cargo_mask) { + /* We cannot refit to mixed cargoes in an automated way */ + continue; + } + /* engine_type is already a mixed cargo type which matches the incoming vehicle by default, no refit required */ + } else { + /* Did the old vehicle carry anything? */ + if (IsValidCargoID(cargo_type)) { + /* We can't refit the vehicle to carry the cargo we want */ + if (!HasBit(available_cargo_types, cargo_type)) continue; + } } } From a58a043402221476d3c06340c5b58a837356ba1c Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 19:31:26 +0000 Subject: [PATCH 48/54] Fix 6065122: Missing SetFill on worldgen spacer. (#11477) --- src/genworld_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 5c7e1d7a17..d9f659dbf1 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -147,7 +147,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = { NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1), EndContainer(), /* Temperate/Toyland spacer. */ - NWidget(NWID_SPACER), + NWidget(NWID_SPACER), SetFill(1, 1), EndContainer(), /* Starting date. */ NWidget(NWID_HORIZONTAL), From 0578b8eaa90cefafd613f2fa2172ccd160e5fee2 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 23:06:15 +0000 Subject: [PATCH 49/54] Change: Use picker-spacing for scenario found town window. (#11478) --- src/town_gui.cpp | 93 ++++++++++++++++++++---------------------------- 1 file changed, 38 insertions(+), 55 deletions(-) diff --git a/src/town_gui.cpp b/src/town_gui.cpp index b0b43b297e..9b4e39c0ed 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -1060,62 +1060,45 @@ static const NWidgetPart _nested_found_town_widgets[] = { EndContainer(), /* Construct new town(s) buttons. */ NWidget(WWT_PANEL, COLOUR_DARK_GREEN), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_NEW_TOWN), SetMinimalSize(156, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_NEW_TOWN_BUTTON, STR_FOUND_TOWN_NEW_TOWN_TOOLTIP), SetPadding(0, 2, 1, 2), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_RANDOM_TOWN), SetMinimalSize(156, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_RANDOM_TOWN_BUTTON, STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP), SetPadding(0, 2, 1, 2), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_MANY_RANDOM_TOWNS), SetMinimalSize(156, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_MANY_RANDOM_TOWNS, STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP), SetPadding(0, 2, 1, 2), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_EXPAND_ALL_TOWNS), SetMinimalSize(156, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_EXPAND_ALL_TOWNS, STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP), SetPadding(0, 2, 0, 2), - /* Town name selection. */ - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(156, 14), SetPadding(0, 2, 0, 2), SetDataTip(STR_FOUND_TOWN_NAME_TITLE, STR_NULL), - NWidget(WWT_EDITBOX, COLOUR_GREY, WID_TF_TOWN_NAME_EDITBOX), SetMinimalSize(156, 12), SetPadding(0, 2, 3, 2), - SetDataTip(STR_FOUND_TOWN_NAME_EDITOR_TITLE, STR_FOUND_TOWN_NAME_EDITOR_HELP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_TOWN_NAME_RANDOM), SetMinimalSize(78, 12), SetPadding(0, 2, 0, 2), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_NAME_RANDOM_BUTTON, STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP), - /* Town size selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(148, 14), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_TITLE, STR_NULL), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_SMALL), SetMinimalSize(78, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_MEDIUM), SetMinimalSize(78, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 1), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_LARGE), SetMinimalSize(78, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_RANDOM), SetMinimalSize(78, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_SIZE_RANDOM, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 3), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_CITY), SetPadding(0, 2, 0, 2), SetMinimalSize(156, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_CITY, STR_FOUND_TOWN_CITY_TOOLTIP), SetFill(1, 0), - /* Town roads selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(2, 0, 2), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetMinimalSize(148, 14), SetDataTip(STR_FOUND_TOWN_ROAD_LAYOUT, STR_NULL), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_ORIGINAL), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_BETTER), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 1), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(2, 0, 2), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID2), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID3), SetMinimalSize(78, 12), SetFill(1, 0), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), + NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_normal, 0), SetPadding(WidgetDimensions::unscaled.picker), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_NEW_TOWN), SetDataTip(STR_FOUND_TOWN_NEW_TOWN_BUTTON, STR_FOUND_TOWN_NEW_TOWN_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_RANDOM_TOWN), SetDataTip(STR_FOUND_TOWN_RANDOM_TOWN_BUTTON, STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_MANY_RANDOM_TOWNS), SetDataTip(STR_FOUND_TOWN_MANY_RANDOM_TOWNS, STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_EXPAND_ALL_TOWNS), SetDataTip(STR_FOUND_TOWN_EXPAND_ALL_TOWNS, STR_FOUND_TOWN_EXPAND_ALL_TOWNS_TOOLTIP), SetFill(1, 0), + + /* Town name selection. */ + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_FOUND_TOWN_NAME_TITLE, STR_NULL), + NWidget(WWT_EDITBOX, COLOUR_GREY, WID_TF_TOWN_NAME_EDITBOX), SetDataTip(STR_FOUND_TOWN_NAME_EDITOR_TITLE, STR_FOUND_TOWN_NAME_EDITOR_HELP), SetFill(1, 0), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_TF_TOWN_NAME_RANDOM), SetDataTip(STR_FOUND_TOWN_NAME_RANDOM_BUTTON, STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP), SetFill(1, 0), + + /* Town size selection. */ + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_TITLE, STR_NULL), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_SMALL), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_MEDIUM), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_LARGE), SetDataTip(STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_SIZE_RANDOM), SetDataTip(STR_FOUND_TOWN_SIZE_RANDOM, STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP), SetFill(1, 0), + EndContainer(), + EndContainer(), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_CITY), SetDataTip(STR_FOUND_TOWN_CITY, STR_FOUND_TOWN_CITY_TOOLTIP), SetFill(1, 0), + + /* Town roads selection. */ + NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetDataTip(STR_FOUND_TOWN_ROAD_LAYOUT, STR_NULL), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_ORIGINAL), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_BETTER), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID2), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_GRID3), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), + EndContainer(), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_RANDOM), SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), + EndContainer(), EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_TF_LAYOUT_RANDOM), SetPadding(0, 2, 0, 2), SetMinimalSize(0, 12), SetFill(1, 0), - SetDataTip(STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM, STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT), SetFill(1, 0), - NWidget(NWID_SPACER), SetMinimalSize(0, 2), EndContainer(), }; From d04fd4602d102fedd334f1e7fcd1b6f5f99c7fe8 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 22:22:23 +0000 Subject: [PATCH 50/54] Codechange: Assert that max width passed to GetStringHeight is non-zero. Max width of zero will cause text layouters to crash, potentially after exhausting memory first. --- src/gfx.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gfx.cpp b/src/gfx.cpp index 5029446db4..c6dcfce611 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -693,6 +693,7 @@ int DrawString(int left, int right, int top, StringID str, TextColour colour, St */ int GetStringHeight(std::string_view str, int maxw, FontSize fontsize) { + assert(maxw > 0); Layouter layout(str, maxw, TC_FROMSTRING, fontsize); return layout.GetBounds().height; } From f281525492776fbacbdeb49787392a0e19ebdb15 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 22:24:34 +0000 Subject: [PATCH 51/54] Codechange: Add method to resize both width and height of a widget. --- src/widget.cpp | 16 ++++++++++++++++ src/widget_type.h | 1 + 2 files changed, 17 insertions(+) diff --git a/src/widget.cpp b/src/widget.cpp index 13fd8315f1..d0e25cc2a6 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -1158,6 +1158,22 @@ void NWidgetResizeBase::SetResize(uint resize_x, uint resize_y) /** * Set absolute (post-scaling) minimal size of the widget. + * The window will need to be reinited if the size is changed. + * @param min_x Horizontal minimal size of the widget. + * @param min_y Vertical minimal size of the widget. + * @return true iff the widget minimum size has changed. + */ +bool NWidgetResizeBase::UpdateSize(uint min_x, uint min_y) +{ + if (min_x == this->min_x && min_y == this->min_y) return false; + this->min_x = min_x; + this->min_y = min_y; + return true; +} + +/** + * Set absolute (post-scaling) minimal size of the widget. + * The window will need to be reinited if the size is changed. * @param min_y Vertical minimal size of the widget. * @return true iff the widget minimum size has changed. */ diff --git a/src/widget_type.h b/src/widget_type.h index 9898520611..dcf2253428 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -262,6 +262,7 @@ public: void SetFill(uint fill_x, uint fill_y); void SetResize(uint resize_x, uint resize_y); + bool UpdateSize(uint min_x, uint min_y); bool UpdateVerticalSize(uint min_y); void AssignSizePosition(SizingType sizing, int x, int y, uint given_width, uint given_height, bool rtl) override; From 62d4fd0572c44423c86e970ddf5677f04420fe9e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 22:27:16 +0000 Subject: [PATCH 52/54] Codechange: Add method to guess the width/height required for a multiline string. This is necessary for widget layouts where a minimum width is not yet known during UpdateWidgetSize(). --- src/widget.cpp | 20 ++++++++++++++++++++ src/widget_type.h | 1 + 2 files changed, 21 insertions(+) diff --git a/src/widget.cpp b/src/widget.cpp index d0e25cc2a6..03eb3ff636 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -1156,6 +1156,26 @@ void NWidgetResizeBase::SetResize(uint resize_x, uint resize_y) this->resize_y = resize_y; } +/** + * Try to set optimum widget size for a multiline text widget. + * The window will need to be reinited if the size is changed. + * @param str Multiline string contents that will fill the widget. + * @param max_line Maximum number of lines. + * @return true iff the widget minimum size has changed. + */ +bool NWidgetResizeBase::UpdateMultilineWidgetSize(const std::string &str, int max_lines) +{ + int y = GetStringHeight(str, this->current_x); + if (y > max_lines * FONT_HEIGHT_NORMAL) { + /* Text at the current width is too tall, so try to guess a better width. */ + Dimension d = GetStringBoundingBox(str); + d.height *= max_lines; + d.width /= 2; + return this->UpdateSize(d.width, d.height); + } + return this->UpdateVerticalSize(y); +} + /** * Set absolute (post-scaling) minimal size of the widget. * The window will need to be reinited if the size is changed. diff --git a/src/widget_type.h b/src/widget_type.h index dcf2253428..b1f8cde029 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -262,6 +262,7 @@ public: void SetFill(uint fill_x, uint fill_y); void SetResize(uint resize_x, uint resize_y); + bool UpdateMultilineWidgetSize(const std::string &str, int max_lines); bool UpdateSize(uint min_x, uint min_y); bool UpdateVerticalSize(uint min_y); From 0d60dc0353bb92b88fa6913fb640b80a91d91a3e Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 20 Nov 2023 22:29:12 +0000 Subject: [PATCH 53/54] Fix 96d98d08: Crash in text layouter due to trying to find height of string with zero-width. 96d98d08 removed the hardcoded minimum width in favour of all-calculated widths, however this does not work when determining multiline text sizes. --- src/intro_gui.cpp | 32 ++++++++++---------------------- 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index 627e418621..ca807f18bb 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -297,33 +297,21 @@ struct SelectGameWindow : public Window { } } - void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override + void OnResize() override { - StringID str = 0; - switch (widget) { - case WID_SGI_BASESET: - SetDParam(0, _missing_extra_graphics); - str = STR_INTRO_BASESET; - break; + bool changed = false; - case WID_SGI_TRANSLATION: - SetDParam(0, _current_language->missing); - str = STR_INTRO_TRANSLATION; - break; + if (NWidgetResizeBase *wid = this->GetWidget(WID_SGI_BASESET); wid != nullptr && wid->current_x > 0) { + SetDParam(0, _missing_extra_graphics); + changed |= wid->UpdateMultilineWidgetSize(GetString(STR_INTRO_BASESET), 3); } - if (str != 0) { - int height = GetStringHeight(str, size->width); - if (height > 3 * FONT_HEIGHT_NORMAL) { - /* Don't let the window become too high. */ - Dimension textdim = GetStringBoundingBox(str); - textdim.height *= 3; - textdim.width -= textdim.width / 2; - *size = maxdim(*size, textdim); - } else { - size->height = height + padding.height; - } + if (NWidgetResizeBase *wid = this->GetWidget(WID_SGI_TRANSLATION); wid != nullptr && wid->current_x > 0) { + SetDParam(0, _current_language->missing); + changed |= wid->UpdateMultilineWidgetSize(GetString(STR_INTRO_TRANSLATION), 3); } + + if (changed) this->ReInit(0, 0, this->flags & WF_CENTERED); } void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override From 96ec9c1b47f1691887c2493c49fbe3727b385158 Mon Sep 17 00:00:00 2001 From: translators Date: Tue, 21 Nov 2023 18:40:02 +0000 Subject: [PATCH 54/54] Update: Translations from eints indonesian: 67 changes by ekaknl22 --- src/lang/indonesian.txt | 70 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 887e5bb15e..c9bdd7e8e1 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -194,7 +194,20 @@ STR_COLOUR_RANDOM :Acak STR_COLOUR_SECONDARY_DARK_BLUE :Biru Tua STR_COLOUR_SECONDARY_PALE_GREEN :Hijau Pucat STR_COLOUR_SECONDARY_SECONDARY_PINK :Merah Muda +STR_COLOUR_SECONDARY_YELLOW :Kuning +STR_COLOUR_SECONDARY_RED :Merah +STR_COLOUR_SECONDARY_LIGHT_BLUE :Biru Muda +STR_COLOUR_SECONDARY_GREEN :Hijau +STR_COLOUR_SECONDARY_DARK_GREEN :Hijau Tua +STR_COLOUR_SECONDARY_BLUE :Biru +STR_COLOUR_SECONDARY_CREAM :Krim +STR_COLOUR_SECONDARY_MAUVE :Ungu Muda +STR_COLOUR_SECONDARY_PURPLE :Ungu +STR_COLOUR_SECONDARY_ORANGE :Jingga STR_COLOUR_SECONDARY_BROWN :Cokelat +STR_COLOUR_SECONDARY_GREY :Abu-abu +STR_COLOUR_SECONDARY_WHITE :Putih +STR_COLOUR_SECONDARY_SAME_AS_PRIMARY :Sama seperti Utama # Units used in OpenTTD @@ -520,6 +533,7 @@ STR_ABOUT_MENU_ABOUT_OPENTTD :Tentang 'OpenTT STR_ABOUT_MENU_SPRITE_ALIGNER :Penjajar Sprite STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hidup/Matikan kotak batas STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Menampilkan pewarnaan dari area kotor +STR_ABOUT_MENU_TOGGLE_WIDGET_OUTLINES :Alihkan kerangka widget # Place in highscore window ###length 15 @@ -911,6 +925,8 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}{STRING} STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Membuka jendela grup yang berfokus pada rombongan kendaraan +STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_LIST :{WHITE}{STATION} tidak lagi menerima: {CARGO_LIST} +STR_NEWS_STATION_NOW_ACCEPTS_CARGO_LIST :{WHITE}{STATION} menerima: {CARGO_LIST} STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Penawaran subsidi berakhir:{}{}Jasa transportasi {STRING} dari {STRING} ke {STRING} mulai sekarang tidak lagi mendapat subsidi STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidi berakhir:{}{}Jasa transportasi {STRING} dari {STRING} ke {STRING} tidak lagi mendapat subsidi @@ -1048,7 +1064,10 @@ STR_GAME_OPTIONS_GUI_SCALE_4X :4x STR_GAME_OPTIONS_GUI_SCALE_5X :5x STR_GAME_OPTIONS_PARTICIPATE_SURVEY_FRAME :{BLACK}Survei Otomatis +STR_GAME_OPTIONS_PARTICIPATE_SURVEY :{BLACK}Berpartisipasi pada survey otomatis +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_TOOLTIP :{BLACK}Jika diaktifkan, OpenTTD akan mengirimkan survei saat meninggalkan game STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK :{BLACK}Tentang survei dan privasi +STR_GAME_OPTIONS_PARTICIPATE_SURVEY_LINK_TOOLTIP :{BLACK}Ini akan membuka browser dengan informasi lebih lanjut tentang survei otomatis STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW :{BLACK}Tampilkan hasil survey STR_GAME_OPTIONS_PARTICIPATE_SURVEY_PREVIEW_TOOLTIP :{BLACK}Tampilkan hasil survey pada game yang berjalan saat ini @@ -1071,6 +1090,7 @@ STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}Set Musi STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}Pilih musik dasar yang akan digunakan STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}Informasi tambahan tentang musik dasar +STR_BASESET_STATUS :{STRING} {RED}({NUM} file hilang/rusak STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}Tidak bisa mendapatkan daftar resolusi layak STR_ERROR_FULLSCREEN_FAILED :{WHITE}Modus layar penuh gagal @@ -1234,11 +1254,13 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_LEFT :Kiri STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Tengah STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Kanan +STR_CONFIG_SETTING_SECONDS_VALUE :{COMMA}{NBSP}detik STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Maksimum pinjaman awal: {STRING} STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Jumlah maksimum yang dapat dipinjam (tanpa menghitung inflasi) STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_VALUE :{CURRENCY_LONG} ###setting-zero-is-special +STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_DISABLED :Tidak ada pinjaman {RED}Memerlukan Game Script untuk menyediakan dana awal STR_CONFIG_SETTING_INTEREST_RATE :Bunga pinjaman: {STRING} STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Bunga pinjaman; juga mengendalikan inflasi jika dinyalakan @@ -1404,6 +1426,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nihil STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Dikurangi STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR :Izinkan perlintasan sebidang dengan jalan atau rel milik pesaing: {STRING} +STR_CONFIG_SETTING_CROSSING_WITH_COMPETITOR_HELPTEXT :Izinkan pembangunan lintasan sebidang di jalan atau rel milik pesaing STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Ijinkan terminal drive-thru pada jalan milik kota: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Membolehkan konstruksi halte di jalan kota @@ -1417,6 +1441,8 @@ STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Memulai warna perusahaan: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Pilih warna awal perusahaan +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY :Warna sekunder perusahaan awal: {STRING} +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_SECONDARY_HELPTEXT :Pilih warna sekunder awal untuk perusahaan, jika menggunakan NewGRF yang mengaktifkannya. STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Bandara tidak kedaluarsa: {STRING} STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Menyalakan setelan ini membuat semua jenis bandara tetap ada selamanya sejak pendesainanya @@ -1619,6 +1645,9 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Non-aktifkan STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Tutup jendela dengan klik kanan: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Menutup jendela dengan mengklik kanan di dalamnya. Menonaktifkan keterangan alat saat klik kanan! ###length 3 +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_NO :Tidak +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES :Ya +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_YES_EXCEPT_STICKY :Ya, kecuali lekat STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gunakan format tanggal {STRING} untuk berkas simpanan STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Format tanggal di nama berkas permainan tersimpan @@ -1946,6 +1975,9 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Faktor kali uku STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Ukuran rata-rata kota besar terhadap kota kecil saat permainan dimulai STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL :Pembaruan grafik distribusi setiap {STRING}{NBSP} detikP 0:2 "" } +STR_CONFIG_SETTING_LINKGRAPH_RECALC_INTERVAL_HELPTEXT :Waktu antara penghitungan ulang berikutnya dari grafik tautan. Setiap perhitungan ulang menghitung rencana untuk satu komponen grafik. Artinya, nilai X untuk pengaturan ini tidak berarti keseluruhan grafik akan diperbarui setiap X detik. Hanya beberapa komponen yang akan melakukannya. Semakin pendek Anda mengaturnya, semakin banyak waktu CPU yang diperlukan untuk menghitungnya. Semakin lama Anda mengaturnya, semakin lama waktu yang dibutuhkan hingga distribusi kargo dimulai pada rute baru. +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME :Ambil {STRING} untuk menghitung ulang grafik distribusi +STR_CONFIG_SETTING_LINKGRAPH_RECALC_TIME_HELPTEXT :Waktu yang dibutuhkan untuk setiap penghitungan ulang komponen grafik tautan. Ketika penghitungan ulang dimulai, sebuah thread muncul yang diizinkan berjalan selama beberapa detik ini. Semakin pendek Anda mengaturnya, semakin besar kemungkinan bahwa thread tersebut tidak selesai sebagaimana mestinya. Kemudian permainan dihentikan sampai (“lag”). Semakin lama Anda mengaturnya, semakin lama waktu yang diperlukan untuk memperbarui distribusi ketika rute berubah. STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modus distribusi untuk penumpang: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Simetris" berarti kira-kira jumlah penumpang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "Asimetris" berarti jumlah penumpang pergi pada kedua arah bisa berbeda-beda. "Manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk penumpang. @@ -2078,6 +2110,7 @@ STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Mengalok # Video initalization errors STR_VIDEO_DRIVER_ERROR :{WHITE}Kesalahan dengan pengaturan video... STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... tidak ditemukan GPU yang kompatibel. Akselerasi perangkat keras dinonaktifkan +STR_VIDEO_DRIVER_ERROR_HARDWARE_ACCELERATION_CRASH :{WHITE}... Driver GPU membuat game crash. Akselerasi perangkat keras dinonaktifkan # Intro window STR_INTRO_CAPTION :{WHITE}OpenTTD {REV} @@ -2113,6 +2146,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Pilih ga STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Tampilkan opsi permainan STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Tampilkan tabel nilai tertinggi +STR_INTRO_TOOLTIP_HELP :{BLACK}Dapatkan izin dokumentasi dan sumber daya online STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Tampilkan pengaturan STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Tampilkan pengaturan NewGRF STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Cari konten baru dan pembaruan untuk diunduh @@ -2135,8 +2169,16 @@ STR_ABANDON_GAME_QUERY :{YELLOW}Apakah STR_ABANDON_SCENARIO_QUERY :{YELLOW}Apakah anda yakin untuk mengabaikan skenario ini ? # Help window +STR_HELP_WINDOW_CAPTION :{WHITE}Bantuan & Petunjuk STR_HELP_WINDOW_WEBSITES :{BLACK}Situs web STR_HELP_WINDOW_DOCUMENTS :{BLACK}Dokumen +STR_HELP_WINDOW_README :{BLACK}Readme +STR_HELP_WINDOW_CHANGELOG :{BLACK}Log Perubahan +STR_HELP_WINDOW_KNOWN_BUGS :{BLACK}Bug yang diketahui +STR_HELP_WINDOW_LICENSE :{BLACK}Lisensi +STR_HELP_WINDOW_MAIN_WEBSITE :{BLACK}OpenTTD +STR_HELP_WINDOW_MANUAL_WIKI :{BLACK}Manual/ Wiki +STR_HELP_WINDOW_BUGTRACKER :{BLACK}Laporkan Bug STR_HELP_WINDOW_COMMUNITY :{BLACK}Komunitas # Cheat window @@ -2153,6 +2195,7 @@ STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Ubah ket STR_CHEAT_CHANGE_DATE :{LTBLUE}Ganti tanggal: {ORANGE} {DATE_SHORT} STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ubah tahun sekarang STR_CHEAT_SETUP_PROD :{LTBLUE}Aktifkan modifikasi nilai produksi: {ORANGE}{STRING} +STR_CHEAT_STATION_RATING :{LTBLUE}Memperbaiki rating stasiun pada 100%: {ORANGE}{STRING} # Livery window STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Skema Warna @@ -2387,6 +2430,7 @@ STR_NETWORK_CLIENT_LIST_NEW_COMPANY_TOOLTIP :{BLACK}Ciptakan STR_NETWORK_CLIENT_LIST_PLAYER_ICON_SELF_TOOLTIP :{BLACK}Ini adalah Anda STR_NETWORK_CLIENT_LIST_PLAYER_ICON_HOST_TOOLTIP :{BLACK}Ini adalah hos permainan STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT :{BLACK}{NUM} klien{P ""} - {NUM}/{NUM} perusahaan{P ""} +STR_NETWORK_CLIENT_LIST_CLIENT_COMPANY_COUNT_TOOLTIP :{BLACK}Jumlah klien yang terhubung saat ini, jumlah perusahaan dan jumlah maksimum perusahaan yang diizinkan oleh administrator server # Matches ConnectionType ###length 5 @@ -2413,6 +2457,8 @@ STR_NETWORK_ASK_RELAY_NO :{BLACK}Tidak STR_NETWORK_ASK_RELAY_YES_ONCE :{BLACK}Ya, kali ini STR_NETWORK_ASK_RELAY_YES_ALWAYS :{BLACK}Iya, Jangan tanya lagi +STR_NETWORK_ASK_SURVEY_CAPTION :Berpartisipasi pada survey otomatis? +STR_NETWORK_ASK_SURVEY_TEXT :Apakah Anda ingin berpartisipasi dalam survei otomatis?{}OpenTTD akan mengirimkan survei saat keluar dari game.{}Anda bisa mengubahnya kapan saja di "Pengaturan Game". STR_NETWORK_ASK_SURVEY_PREVIEW :Tampilkan hasil survey STR_NETWORK_ASK_SURVEY_LINK :Tentang survei dan privasi STR_NETWORK_ASK_SURVEY_NO :Tidak @@ -2623,6 +2669,7 @@ STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Hidup/ma STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Hidup/matikan transparansi jembatan. CTRL+klik untuk mengunci STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Hidup/matikan transparansi struktur bangunan semacam mercusuar dan antena. CTRL+klik untuk mengunci STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Hidup/matikan transparansi katenari CTRL+klik untuk mengunci +STR_TRANSPARENT_TEXT_TOOLTIP :{BLACK}Alihkan transparansi untuk pemuatan dan teks biaya/pendapatan. Ctrl+Klik untuk mengunci STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Atur obyek menjadi sama sekali tidak nampak daripada transparan. # Linkgraph legend window @@ -2710,6 +2757,7 @@ STR_STATION_CLASS_DFLT :Standar STR_STATION_CLASS_DFLT_STATION :Stasiun standar STR_STATION_CLASS_DFLT_ROADSTOP :Pemberhentian jalan standar STR_STATION_CLASS_WAYP :Waypoint +STR_STATION_CLASS_WAYP_WAYPOINT :Waypoint bawaan # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Pemilihan Sinyal @@ -3077,7 +3125,7 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-{STRING} Tim OpenTTD # Framerate display window -STR_FRAMERATE_CAPTION :{WHITE}laju bingkai +STR_FRAMERATE_CAPTION :{WHITE}Laju bingkai STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Rata simulasi: {STRING} STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Jumlah detak permainan tersimulasi per detik. @@ -3336,6 +3384,7 @@ STR_SAVE_PRESET_SAVE :{BLACK}Menyimpa STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Menyimpan presetnya pada nama yang sedang dipilih # NewGRF parameters window +STR_BASEGRF_PARAMETERS_CAPTION :{WHITE}Ubah parameter grafik dasar STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}Ubah parameter NewGRF STR_NEWGRF_PARAMETERS_CLOSE :{BLACK}Tutup STR_NEWGRF_PARAMETERS_RESET :{BLACK}Reset @@ -3352,6 +3401,7 @@ STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Periksa STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} pada {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Obyek STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_RAIL_TYPE :Tipe rel +STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_ROAD_TYPE :Tipe jalan STR_NEWGRF_INSPECT_QUERY_CAPTION :{WHITE}Variabel NewGRF harus 60+x (hexadecimal) @@ -3758,6 +3808,8 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detail STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Lihat jumlah infrastruktur lebih detail STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Berikan uang STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Berikan uang kepada perusahaan ini +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_BUTTON :{BLACK}Pengambilalihan secara bermusuhan +STR_COMPANY_VIEW_HOSTILE_TAKEOVER_TOOLTIP :{BLACK}Lakukan perseteruan untuk mengambil alih perusahaan ini STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Ganti Wajah STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Pilih wajah baru pimpinan @@ -3853,7 +3905,7 @@ STR_VEHICLE_LIST_NAME_AND_CARGO :{STRING} {STRIN STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :Perintahkan ke bengkel STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :Perintahkan ke Bengkel STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Perintahkan ke Galangan -STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Perintahkan ke Hangar +STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Perintahkan ke Hanggar STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Klik untuk menghentikan semua kendaraan dalam daftar STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Klik untuk menjalankan semua kendaraan dalam daftar @@ -4615,6 +4667,7 @@ STR_AI_CONFIG_RANDOM_AI :AI Acak STR_AI_CONFIG_NONE :(tidak ada) STR_AI_CONFIG_NAME_VERSION :{STRING} {YELLOW}v{NUM} STR_AI_CONFIG_MAX_COMPETITORS :{LTBLUE}Jumlah pesaing maksimal: {ORANGE}{COMMA} +STR_AI_CONFIG_COMPETITORS_INTERVAL :{LTBLUE}Interval antara permulaan kompetitor: {ORANGE}{COMMA} menit STR_AI_CONFIG_MOVE_UP :{BLACK}Naikkan STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Naikkan AI terpilih dalam daftar @@ -4664,7 +4717,11 @@ STR_AI_SETTINGS_SETTING :{STRING}: {ORAN # Textfile window +STR_TEXTFILE_JUMPLIST :{WHITE}Daftar Isi +STR_TEXTFILE_JUMPLIST_TOOLTIP :Loncat ke halaman yang ditampilkan melalui daftar ini STR_TEXTFILE_JUMPLIST_ITEM :{WHITE}{STRING} +STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Kembali ke riwayat navigasi +STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Kembali ke awal dalam riwayat navigasi STR_TEXTFILE_WRAP_TEXT :{WHITE}Mengebatkan teks STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Mengebatkan teks dari jendela sehingga akan muat tanpa menggulir STR_TEXTFILE_VIEW_README :{BLACK}Lihat readme @@ -4675,6 +4732,7 @@ STR_TEXTFILE_README_CAPTION :{WHITE}keterang STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Catatan perubahan {STRING} dari {STRING} STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Lisensi {STRING} dari {STRING} STR_TEXTFILE_SURVEY_RESULT_CAPTION :{WHITE}Tanpilan hasil survei +STR_TEXTFILE_GAME_MANUAL_CAPTION :{WHITE} dokumen OpenTTD '{STRING}' # Vehicle loading indicators @@ -5116,16 +5174,22 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... pesa STR_ERROR_NO_RAIL_STATION :{WHITE}Tidak ada stasiun kereta STR_ERROR_NO_BUS_STATION :{WHITE}Tidak ada stasiun bis STR_ERROR_NO_TRUCK_STATION :{WHITE}Tidak ada stasiun lori +STR_ERROR_NO_DOCK :{WHITE}Tidak ada dermaga STR_ERROR_NO_AIRPORT :{WHITE}Tidak ada bandara/heliport STR_ERROR_NO_STOP_COMPATIBLE_ROAD_TYPE :{WHITE}Tidak ada pemberhentian dengan kompatibilitas tipe jalan STR_ERROR_NO_STOP_COMPATIBLE_TRAM_TYPE :{WHITE}Tidak ada pemberhentian yang kompatibel dengan tipe tram +STR_ERROR_NO_STOP_ARTICULATED_VEHICLE :{WHITE}Tidak ada perhentian yang cocok untuk kendaraan jalan gandeng.{}Kendaraan jalan gandeng memerlukan perhentian drive-through, bukan perhentian teluk STR_ERROR_AIRPORT_NO_PLANES :{WHITE}Pesawat ini tidak dapat mendarat di heliport ini +STR_ERROR_AIRPORT_NO_HELICOPTERS :{WHITE}Helikopter ini tidak dapat mendarat di bandara +STR_ERROR_NO_RAIL_WAYPOINT :{WHITE}Tidak ada titik jalan kereta api +STR_ERROR_NO_BUOY :{WHITE}Tidak ada pelampung # Timetable related errors STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Tidak dapat membuat jadwal keberangkatan kendaraan... STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Kendaran hanya dapat menunggu di stasiun STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Kendaraan tidak berhenti pada stasiun ini -STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... Jadway tidak kompatibel +STR_ERROR_TIMETABLE_INCOMPLETE :{WHITE}... Jadwal tidak kompatibel +STR_ERROR_TIMETABLE_NOT_STARTED :{WHITE}... jadwal belum dimulai # Sign related errors STR_ERROR_TOO_MANY_SIGNS :{WHITE}... terlalu banyak tanda