diff --git a/src/game/game_gui.cpp b/src/game/game_gui.cpp index 9ba418cbc3..86a74a4aee 100644 --- a/src/game/game_gui.cpp +++ b/src/game/game_gui.cpp @@ -85,21 +85,18 @@ static WindowDesc _gs_config_desc( * Window to configure which GSs will start. */ struct GSConfigWindow : public Window { - ScriptConfig *gs_config; ///< The configuration we're modifying. - int line_height; ///< Height of a single GS-name line. - int clicked_button; ///< The button we clicked. - bool clicked_increase; ///< Whether we clicked the increase or decrease button. - bool clicked_dropdown; ///< Whether the dropdown is open. - bool closing_dropdown; ///< True, if the dropdown list is currently closing. - int clicked_row; ///< The clicked row of settings. - Scrollbar *vscroll; ///< Cache of the vertical scrollbar. + ScriptConfig *gs_config = nullptr; ///< The configuration we're modifying. + int line_height = 0; ///< Height of a single GS-name line. + int clicked_button = -1; ///< The button we clicked. + bool clicked_increase = false; ///< Whether we clicked the increase or decrease button. + bool clicked_dropdown = false; ///< Whether the dropdown is open. + bool closing_dropdown = false; ///< True, if the dropdown list is currently closing. + int clicked_row = 0; ///< The clicked row of settings. + Scrollbar *vscroll = nullptr; ///< Cache of the vertical scrollbar. typedef std::vector VisibleSettingsList; ///< typdef for a vector of script settings - VisibleSettingsList visible_settings; ///< List of visible GS settings + VisibleSettingsList visible_settings{}; ///< List of visible GS settings - GSConfigWindow() : Window(_gs_config_desc), - clicked_button(-1), - clicked_dropdown(false), - closing_dropdown(false) + GSConfigWindow() : Window(_gs_config_desc) { this->gs_config = GameConfig::GetConfig(); diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp index 713461eebe..6142ef396f 100644 --- a/src/genworld_gui.cpp +++ b/src/genworld_gui.cpp @@ -385,11 +385,11 @@ static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, static_assert(std::size(_num_inds) == ID_END); struct GenerateLandscapeWindow : public Window { - WidgetID widget_id; - uint x; - uint y; - std::string name; - GenerateLandscapeWindowMode mode; + WidgetID widget_id{}; + uint x = 0; + uint y = 0; + std::string name{}; + GenerateLandscapeWindowMode mode{}; GenerateLandscapeWindow(WindowDesc &desc, WindowNumber number = 0) : Window(desc) { @@ -1065,7 +1065,7 @@ void StartNewGameWithoutGUI(uint32_t seed) struct CreateScenarioWindow : public Window { - WidgetID widget_id; + WidgetID widget_id{}; CreateScenarioWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { diff --git a/src/goal_gui.cpp b/src/goal_gui.cpp index 64103b9b1b..6484419e8a 100644 --- a/src/goal_gui.cpp +++ b/src/goal_gui.cpp @@ -38,7 +38,7 @@ enum GoalColumn : uint8_t { /** Window for displaying goals. */ struct GoalListWindow : public Window { - Scrollbar *vscroll; ///< Reference to the scrollbar widget. + Scrollbar *vscroll = nullptr; ///< Reference to the scrollbar widget. GoalListWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { @@ -319,10 +319,10 @@ void ShowGoalsList(CompanyID company) /** Ask a question about a goal. */ struct GoalQuestionWindow : public Window { - std::string question; ///< Question to ask (private copy). - int buttons; ///< Number of valid buttons in #button. - int button[3]; ///< Buttons to display. - TextColour colour; ///< Colour of the question text. + std::string question{}; ///< Question to ask (private copy). + int buttons = 0; ///< Number of valid buttons in #button. + std::array button{}; ///< Buttons to display. + TextColour colour{}; ///< Colour of the question text. GoalQuestionWindow(WindowDesc &desc, WindowNumber window_number, TextColour colour, uint32_t button_mask, const std::string &question) : Window(desc), colour(colour) { diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp index 6179d775bc..39ac8dcf8c 100644 --- a/src/graph_gui.cpp +++ b/src/graph_gui.cpp @@ -184,24 +184,24 @@ protected: static const int MIN_GRAPH_NUM_LINES_Y = 9; ///< Minimal number of horizontal lines to draw. static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines. - uint64_t excluded_data; ///< bitmask of the datasets that shouldn't be displayed. - uint64_t excluded_range; ///< bitmask of ranges that should not be displayed. - uint8_t num_on_x_axis; - uint8_t num_vert_lines; + uint64_t excluded_data = 0; ///< bitmask of the datasets that shouldn't be displayed. + uint64_t excluded_range = 0; ///< bitmask of ranges that should not be displayed. + uint8_t num_on_x_axis = 0; + uint8_t num_vert_lines = GRAPH_NUM_MONTHS; /* The starting month and year that values are plotted against. */ - TimerGameEconomy::Month month; - TimerGameEconomy::Year year; - uint8_t month_increment; ///< month increment between vertical lines. must be divisor of 12. + TimerGameEconomy::Month month{}; + TimerGameEconomy::Year year{}; + uint8_t month_increment = 3; ///< month increment between vertical lines. must be divisor of 12. bool draw_dates = true; ///< Should we draw months and years on the time axis? /* These values are used if the graph is being plotted against values * rather than the dates specified by month and year. */ - uint16_t x_values_start; - uint16_t x_values_increment; + uint16_t x_values_start = 0; + uint16_t x_values_increment = 0; - StringID format_str_y_axis; + StringID format_str_y_axis{}; struct DataSet { std::array values; @@ -210,7 +210,7 @@ protected: uint8_t range_bit; uint8_t dash; }; - std::vector data; + std::vector data{}; std::span ranges = {}; @@ -519,8 +519,6 @@ protected: format_str_y_axis(format_str_y_axis) { SetWindowDirty(WC_GRAPH_LEGEND, 0); - this->num_vert_lines = GRAPH_NUM_MONTHS; - this->month_increment = 3; } void InitializeWindow(WindowNumber number) @@ -1026,9 +1024,9 @@ void ShowCompanyValueGraph() /*****************/ struct PaymentRatesGraphWindow : BaseGraphWindow { - uint line_height; ///< Pixel height of each cargo type row. - Scrollbar *vscroll; ///< Cargo list scrollbar. - uint legend_width; ///< Width of legend 'blob'. + uint line_height = 0; ///< Pixel height of each cargo type row. + Scrollbar *vscroll = nullptr; ///< Cargo list scrollbar. + uint legend_width = 0; ///< Width of legend 'blob'. PaymentRatesGraphWindow(WindowDesc &desc, WindowNumber window_number) : BaseGraphWindow(desc, STR_JUST_CURRENCY_SHORT) @@ -1262,7 +1260,15 @@ void ShowCargoPaymentRates() struct PerformanceRatingDetailWindow : Window { static CompanyID company; - int timeout; + int timeout = 0; + uint score_info_left = 0; + uint score_info_right = 0; + uint bar_left = 0; + uint bar_right = 0; + uint bar_width = 0; + uint bar_height = 0; + uint score_detail_left = 0; + uint score_detail_right = 0; PerformanceRatingDetailWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { @@ -1283,15 +1289,6 @@ struct PerformanceRatingDetailWindow : Window { this->timeout = Ticks::DAY_TICKS * 5; } - uint score_info_left; - uint score_info_right; - uint bar_left; - uint bar_right; - uint bar_width; - uint bar_height; - uint score_detail_left; - uint score_detail_right; - void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override { switch (widget) { @@ -1492,9 +1489,9 @@ CompanyID PerformanceRatingDetailWindow::company = CompanyID::Invalid(); /*******************************/ struct IndustryProductionGraphWindow : BaseGraphWindow { - uint line_height; ///< Pixel height of each cargo type row. - Scrollbar *vscroll; ///< Cargo list scrollbar. - uint legend_width; ///< Width of legend 'blob'. + uint line_height = 0; ///< Pixel height of each cargo type row. + Scrollbar *vscroll = nullptr; ///< Cargo list scrollbar. + uint legend_width = 0; ///< Width of legend 'blob'. static inline constexpr StringID RANGE_LABELS[] = { STR_GRAPH_INDUSTRY_RANGE_PRODUCED, diff --git a/src/group_gui.cpp b/src/group_gui.cpp index 11fbbe7df8..f1b1a96576 100644 --- a/src/group_gui.cpp +++ b/src/group_gui.cpp @@ -199,15 +199,16 @@ private: VGC_END }; - GroupID group_sel; ///< Selected group (for drag/drop) - GroupID group_rename; ///< Group being renamed, GroupID::Invalid() if none - GroupID group_over; ///< Group over which a vehicle is dragged, GroupID::Invalid() if none - GroupID group_confirm; ///< Group awaiting delete confirmation - GUIGroupList groups; ///< List of groups - uint tiny_step_height; ///< Step height for the group list - Scrollbar *group_sb; + GroupID group_sel = GroupID::Invalid(); ///< Selected group (for drag/drop) + GroupID group_rename = GroupID::Invalid(); ///< Group being renamed, GroupID::Invalid() if none + GroupID group_over = GroupID::Invalid(); ///< Group over which a vehicle is dragged, GroupID::Invalid() if none + GroupID group_confirm = GroupID::Invalid(); ///< Group awaiting delete confirmation + GUIGroupList groups{}; ///< List of groups + uint tiny_step_height = 0; ///< Step height for the group list + Scrollbar *group_sb = nullptr; - Dimension column_size[VGC_END]; ///< Size of the columns in the group list. + std::array column_size{}; ///< Size of the columns in the group list. + bool last_overlay_state = false; /** * (Re)Build the group list. @@ -394,9 +395,6 @@ public: this->group_sb = this->GetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR); this->vli.SetIndex(ALL_GROUP); - this->group_sel = GroupID::Invalid(); - this->group_rename = GroupID::Invalid(); - this->group_over = GroupID::Invalid(); this->groups.ForceRebuild(); this->groups.NeedResort(); @@ -692,7 +690,6 @@ public: } } - bool last_overlay_state; void OnMouseLoop() override { if (last_overlay_state != ShowCargoIconOverlay()) { diff --git a/src/highscore_gui.cpp b/src/highscore_gui.cpp index dc899244e4..f6b05566ea 100644 --- a/src/highscore_gui.cpp +++ b/src/highscore_gui.cpp @@ -30,8 +30,8 @@ #include "safeguards.h" struct EndGameHighScoreBaseWindow : Window { - uint32_t background_img; - int8_t rank; + SpriteID background_img{}; + int8_t rank = 0; EndGameHighScoreBaseWindow(WindowDesc &desc) : Window(desc) { @@ -156,7 +156,7 @@ struct EndGameWindow : EndGameHighScoreBaseWindow { }; struct HighScoreWindow : EndGameHighScoreBaseWindow { - bool game_paused_by_player; ///< True if the game was paused by the player when the highscore window was opened. + bool game_paused_by_player = false; ///< True if the game was paused by the player when the highscore window was opened. HighScoreWindow(WindowDesc &desc, int difficulty, int8_t ranking) : EndGameHighScoreBaseWindow(desc) { diff --git a/src/industry_gui.cpp b/src/industry_gui.cpp index 3eb2787c2b..ccbf2d8d44 100644 --- a/src/industry_gui.cpp +++ b/src/industry_gui.cpp @@ -300,12 +300,12 @@ static WindowDesc _build_industry_desc( /** Build (fund or prospect) a new industry, */ class BuildIndustryWindow : public Window { - IndustryType selected_type; ///< industry corresponding to the above index - std::vector list; ///< List of industries. - bool enabled; ///< Availability state of the selected industry. - Scrollbar *vscroll; - Dimension legend; ///< Dimension of the legend 'blob'. - GUIBadgeClasses badge_classes; + IndustryType selected_type = IT_INVALID; ///< industry corresponding to the above index + std::vector list{}; ///< List of industries. + bool enabled = false; ///< Availability state of the selected industry. + Scrollbar *vscroll = nullptr; + Dimension legend{}; ///< Dimension of the legend 'blob'. + GUIBadgeClasses badge_classes{}; /** The largest allowed minimum-width of the window, given in line heights */ static const int MAX_MINWIDTH_LINEHEIGHTS = 20; @@ -398,8 +398,6 @@ class BuildIndustryWindow : public Window { public: BuildIndustryWindow() : Window(_build_industry_desc) { - this->selected_type = IT_INVALID; - this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_DPI_SCROLLBAR); /* Show scenario editor tools in editor. */ @@ -815,22 +813,19 @@ class IndustryViewWindow : public Window IL_RATE2, ///< Production rate of cargo 2 }; - Dimension cargo_icon_size; ///< Largest cargo icon dimension. - Editability editable; ///< Mode for changing production - InfoLine editbox_line; ///< The line clicked to open the edit box - InfoLine clicked_line; ///< The line of the button that has been clicked - uint8_t clicked_button; ///< The button that has been clicked (to raise) - int production_offset_y; ///< The offset of the production texts/buttons - int info_height; ///< Height needed for the #WID_IV_INFO panel - int cheat_line_height; ///< Height of each line for the #WID_IV_INFO panel + Dimension cargo_icon_size{}; ///< Largest cargo icon dimension. + Editability editable{}; ///< Mode for changing production + InfoLine editbox_line = IL_NONE; ///< The line clicked to open the edit box + InfoLine clicked_line = IL_NONE; ///< The line of the button that has been clicked + uint8_t clicked_button = 0; ///< The button that has been clicked (to raise) + int production_offset_y = 0; ///< The offset of the production texts/buttons + int info_height = 0; ///< Height needed for the #WID_IV_INFO panel + int cheat_line_height = 0; ///< Height of each line for the #WID_IV_INFO panel public: IndustryViewWindow(WindowDesc &desc, WindowNumber window_number) : Window(desc) { this->flags.Set(WindowFlag::DisableVpScroll); - this->editbox_line = IL_NONE; - this->clicked_line = IL_NONE; - this->clicked_button = 0; this->info_height = WidgetDimensions::scaled.framerect.Vertical() + 2 * GetCharacterHeight(FS_NORMAL); // Info panel has at least two lines text. this->InitNested(window_number); @@ -1362,16 +1357,16 @@ protected: static const std::initializer_list sorter_funcs; GUIIndustryList industries{IndustryDirectoryWindow::produced_cargo_filter}; - Scrollbar *vscroll; - Scrollbar *hscroll; + Scrollbar *vscroll{}; + Scrollbar *hscroll{}; - CargoType produced_cargo_filter_criteria; ///< Selected produced cargo filter index - CargoType accepted_cargo_filter_criteria; ///< Selected accepted cargo filter index + CargoType produced_cargo_filter_criteria{}; ///< Selected produced cargo filter index + CargoType accepted_cargo_filter_criteria{}; ///< Selected accepted cargo filter index static CargoType produced_cargo_filter; - const int MAX_FILTER_LENGTH = 16; ///< The max length of the filter, in chars - StringFilter string_filter; ///< Filter for industries - QueryString industry_editbox; ///< Filter editbox + const int MAX_FILTER_LENGTH = 16; ///< The max length of the filter, in chars + StringFilter string_filter{}; ///< Filter for industries + QueryString industry_editbox; ///< Filter editbox enum class SorterType : uint8_t { ByName, ///< Sorter type to sort by name @@ -2026,27 +2021,27 @@ struct CargoesField { using Cargoes = uint16_t; static_assert(std::numeric_limits::digits >= MAX_CARGOES); - CargoesFieldType type; ///< Type of field. + CargoesFieldType type{}; ///< Type of field. union { struct { - IndustryType ind_type; ///< Industry type (#NUM_INDUSTRYTYPES means 'houses'). - CargoType other_produced[MAX_CARGOES]; ///< Cargoes produced but not used in this figure. - CargoType other_accepted[MAX_CARGOES]; ///< Cargoes accepted but not used in this figure. + IndustryType ind_type; ///< Industry type (#NUM_INDUSTRYTYPES means 'houses'). + std::array other_produced; ///< Cargoes produced but not used in this figure. + std::array other_accepted; ///< Cargoes accepted but not used in this figure. } industry; ///< Industry data (for #CFT_INDUSTRY). struct { - CargoType vertical_cargoes[MAX_CARGOES]; ///< Cargoes running from top to bottom (cargo type or #INVALID_CARGO). + std::array vertical_cargoes; ///< Cargoes running from top to bottom (cargo type or #INVALID_CARGO). Cargoes supp_cargoes; ///< Cargoes in \c vertical_cargoes entering from the left. Cargoes cust_cargoes; ///< Cargoes in \c vertical_cargoes leaving to the right. - uint8_t num_cargoes; ///< Number of cargoes. - uint8_t top_end; ///< Stop at the top of the vertical cargoes. - uint8_t bottom_end; ///< Stop at the bottom of the vertical cargoes. + uint8_t num_cargoes; ///< Number of cargoes. + uint8_t top_end; ///< Stop at the top of the vertical cargoes. + uint8_t bottom_end; ///< Stop at the bottom of the vertical cargoes. } cargo; ///< Cargo data (for #CFT_CARGO). struct { - CargoType cargoes[MAX_CARGOES]; ///< Cargoes to display (or #INVALID_CARGO). - bool left_align; ///< Align all cargo texts to the left (else align to the right). + std::array cargoes; ///< Cargoes to display (or #INVALID_CARGO). + bool left_align; ///< Align all cargo texts to the left (else align to the right). } cargo_label; ///< Label data (for #CFT_CARGO_LABEL). StringID header; ///< Header text (for #CFT_HEADER). - } u; // Data for each type. + } u{}; // Data for each type. /** * Make one of the empty fields (#CFT_EMPTY or #CFT_SMALL_EMPTY). @@ -2567,11 +2562,11 @@ next_cargo: ; struct IndustryCargoesWindow : public Window { typedef std::vector Fields; - Fields fields; ///< Fields to display in the #WID_IC_PANEL. - uint ind_cargo; ///< If less than #NUM_INDUSTRYTYPES, an industry type, else a cargo type + NUM_INDUSTRYTYPES. - Dimension cargo_textsize; ///< Size to hold any cargo text, as well as STR_INDUSTRY_CARGOES_SELECT_CARGO. - Dimension ind_textsize; ///< Size to hold any industry type text, as well as STR_INDUSTRY_CARGOES_SELECT_INDUSTRY. - Scrollbar *vscroll; + Fields fields{}; ///< Fields to display in the #WID_IC_PANEL. + uint ind_cargo = 0; ///< If less than #NUM_INDUSTRYTYPES, an industry type, else a cargo type + NUM_INDUSTRYTYPES. + Dimension cargo_textsize{}; ///< Size to hold any cargo text, as well as STR_INDUSTRY_CARGOES_SELECT_CARGO. + Dimension ind_textsize{}; ///< Size to hold any industry type text, as well as STR_INDUSTRY_CARGOES_SELECT_INDUSTRY. + Scrollbar *vscroll = nullptr; IndustryCargoesWindow(int id) : Window(_industry_cargoes_desc) { diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp index dee8f26762..937e398cd6 100644 --- a/src/intro_gui.cpp +++ b/src/intro_gui.cpp @@ -100,13 +100,13 @@ struct IntroGameViewportCommand { struct SelectGameWindow : public Window { /** Vector of viewport commands parsed. */ - std::vector intro_viewport_commands; + std::vector intro_viewport_commands{}; /** Index of currently active viewport command. */ - size_t cur_viewport_command_index; + size_t cur_viewport_command_index = SIZE_MAX; /** Time spent (milliseconds) on current viewport command. */ - uint cur_viewport_command_time; - uint mouse_idle_time; - Point mouse_idle_pos; + uint cur_viewport_command_time = 0; + uint mouse_idle_time = 0; + Point mouse_idle_pos{}; /** * Find and parse all viewport command signs. @@ -176,18 +176,13 @@ struct SelectGameWindow : public Window { } } - SelectGameWindow(WindowDesc &desc) : Window(desc) + SelectGameWindow(WindowDesc &desc) : Window(desc), mouse_idle_pos(_cursor.pos) { this->CreateNestedTree(); this->FinishInitNested(0); this->OnInvalidateData(); this->ReadIntroGameViewportCommands(); - - this->cur_viewport_command_index = SIZE_MAX; - this->cur_viewport_command_time = 0; - this->mouse_idle_time = 0; - this->mouse_idle_pos = _cursor.pos; } void OnRealtimeTick(uint delta_ms) override diff --git a/src/league_gui.cpp b/src/league_gui.cpp index 97f980cf86..442cf51751 100644 --- a/src/league_gui.cpp +++ b/src/league_gui.cpp @@ -56,11 +56,11 @@ static inline StringID GetPerformanceTitleFromValue(uint value) class PerformanceLeagueWindow : public Window { private: - GUIList companies; - uint ordinal_width; ///< The width of the ordinal number - uint text_width; ///< The width of the actual text - int line_height; ///< Height of the text lines - Dimension icon; ///< Dimension of the company icon. + GUIList companies{}; + uint ordinal_width = 0; ///< The width of the ordinal number + uint text_width = 0; ///< The width of the actual text + int line_height = 0; ///< Height of the text lines + Dimension icon{}; ///< Dimension of the company icon. /** * (Re)Build the company league list @@ -249,15 +249,15 @@ static void HandleLinkClick(Link link) class ScriptLeagueWindow : public Window { private: - LeagueTableID table; - std::vector> rows; - uint rank_width; ///< The width of the rank ordinal - uint text_width; ///< The width of the actual text - uint score_width; ///< The width of the score text - uint header_height; ///< Height of the table header - int line_height; ///< Height of the text lines - Dimension icon_size; ///< Dimension of the company icon. - std::string title; + LeagueTableID table{}; + std::vector> rows{}; + uint rank_width = 0; ///< The width of the rank ordinal + uint text_width = 0; ///< The width of the actual text + uint score_width = 0; ///< The width of the score text + uint header_height = 0; ///< Height of the table header + int line_height = 0; ///< Height of the text lines + Dimension icon_size{}; ///< Dimension of the company icon. + std::string title{}; /** * Rebuild the company league list diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp index e898b13d9e..58c8a299fa 100644 --- a/src/linkgraph/linkgraph_gui.cpp +++ b/src/linkgraph/linkgraph_gui.cpp @@ -544,10 +544,8 @@ void ShowLinkGraphLegend() AllocateWindowDescFront(_linkgraph_legend_desc, 0); } -LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc &desc, int window_number) : Window(desc) +LinkGraphLegendWindow::LinkGraphLegendWindow(WindowDesc &desc, int window_number) : Window(desc), num_cargo(_sorted_cargo_specs.size()) { - this->num_cargo = _sorted_cargo_specs.size(); - this->InitNested(window_number); this->InvalidateData(0); this->SetOverlay(GetMainWindow()->viewport->overlay); diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h index dfc71418a4..a7f589ff18 100644 --- a/src/linkgraph/linkgraph_gui.h +++ b/src/linkgraph/linkgraph_gui.h @@ -115,8 +115,8 @@ public: void OnInvalidateData(int data = 0, bool gui_scope = true) override; private: - std::shared_ptr overlay; - size_t num_cargo; + std::shared_ptr overlay{}; + size_t num_cargo = 0; void UpdateOverlayCompanies(); void UpdateOverlayCargoes(); diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index f5fea0f63a..256c906329 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -68,11 +68,11 @@ static WindowDesc _land_info_desc( ); class LandInfoWindow : public Window { - StringList landinfo_data; ///< Info lines to show. - std::string cargo_acceptance; ///< Centered multi-line string for cargo acceptance. + StringList landinfo_data{}; ///< Info lines to show. + std::string cargo_acceptance{}; ///< Centered multi-line string for cargo acceptance. public: - TileIndex tile; + TileIndex tile = INVALID_TILE; void DrawWidget(const Rect &r, WidgetID widget) const override { @@ -412,8 +412,8 @@ static const std::initializer_list _credits = { }; struct AboutWindow : public Window { - int text_position; ///< The top of the scrolling text - int line_height; ///< The height of a single line + int text_position = 0; ///< The top of the scrolling text + int line_height = 0; ///< The height of a single line static const int num_visible_lines = 19; ///< The number of lines visible simultaneously AboutWindow() : Window(_about_desc) @@ -600,8 +600,8 @@ static WindowDesc _tool_tips_desc( /** Window for displaying a tooltip. */ struct TooltipsWindow : public Window { - EncodedString text; ///< String to display as tooltip. - TooltipCloseCondition close_cond; ///< Condition for closing the window. + EncodedString text{}; ///< String to display as tooltip. + TooltipCloseCondition close_cond{}; ///< Condition for closing the window. TooltipsWindow(Window *parent, EncodedString &&text, TooltipCloseCondition close_tooltip) : Window(_tool_tips_desc), text(std::move(text)) { @@ -896,8 +896,8 @@ void QueryString::ClickEditBox(Window *w, Point pt, WidgetID wid, int click_coun /** Class for the string query window. */ struct QueryStringWindow : public Window { - QueryString editbox; ///< Editbox. - QueryStringFlags flags; ///< Flags controlling behaviour of the window. + QueryString editbox; ///< Editbox. + QueryStringFlags flags{}; ///< Flags controlling behaviour of the window. QueryStringWindow(std::string_view str, StringID caption, uint max_bytes, uint max_chars, WindowDesc &desc, Window *parent, CharSetFilter afilter, QueryStringFlags flags) : Window(desc), editbox(max_bytes, max_chars) @@ -1016,9 +1016,9 @@ void ShowQueryString(std::string_view str, StringID caption, uint maxsize, Windo * Window used for asking the user a YES/NO question. */ struct QueryWindow : public Window { - QueryCallbackProc *proc; ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise - EncodedString caption; ///< caption for query window. - EncodedString message; ///< message for query window. + QueryCallbackProc *proc = nullptr; ///< callback function executed on closing of popup. Window* points to parent, bool is true if 'yes' clicked, false otherwise + EncodedString caption{}; ///< caption for query window. + EncodedString message{}; ///< message for query window. QueryWindow(WindowDesc &desc, EncodedString &&caption, EncodedString &&message, Window *parent, QueryCallbackProc *callback) : Window(desc), proc(callback), caption(std::move(caption)), message(std::move(message))