From 623dd88fe73aebce2a2d98e3cf60870fbaee097c Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Tue, 9 Aug 2022 08:44:15 +0100 Subject: [PATCH] Clean up `selhero_Init` --- Source/DiabloUI/selhero.cpp | 51 +++++++++++++++---------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/Source/DiabloUI/selhero.cpp b/Source/DiabloUI/selhero.cpp index 82b8f3d33..146230625 100644 --- a/Source/DiabloUI/selhero.cpp +++ b/Source/DiabloUI/selhero.cpp @@ -453,46 +453,37 @@ void selhero_Init() const Point uiPosition = GetUIRectangle().position; vecSelDlgItems.clear(); - SDL_Rect rect = { (Sint16)(uiPosition.x + 24), (Sint16)(uiPosition.y + 161), 590, 35 }; + SDL_Rect rect = MakeSdlRect(uiPosition.x + 24, uiPosition.y + 161, 590, 35); vecSelHeroDialog.push_back(std::make_unique(&title, rect, UiFlags::AlignCenter | UiFlags::FontSize30 | UiFlags::ColorUiSilver, 3)); - rect = { (Sint16)(uiPosition.x + 30), (Sint16)(uiPosition.y + 211), 180, 76 }; + rect = MakeSdlRect(uiPosition.x + 30, uiPosition.y + 211, 180, 76); auto heroImg = std::make_unique(UiGetHeroDialogSprite(0), rect, UiFlags::None); SELHERO_DIALOG_HERO_IMG = heroImg.get(); vecSelHeroDialog.push_back(std::move(heroImg)); - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 323), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Level:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); + const UiFlags labelFlags = UiFlags::FontSize12 | UiFlags::ColorUiSilverDark | UiFlags::AlignRight; + const UiFlags valueFlags = UiFlags::FontSize12 | UiFlags::ColorUiSilverDark | UiFlags::AlignCenter; + const int labelX = uiPosition.x + 39; + const int valueX = uiPosition.x + 159; + const int labelWidth = 110; + const int valueWidth = 40; + const int statHeight = 21; - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 323), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[0], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 358), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Strength:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 358), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[1], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 380), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Magic:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 380), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[2], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 401), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Dexterity:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 401), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[3], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 422), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Vitality:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 422), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[4], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); + vecSelHeroDialog.push_back(std::make_unique(_("Level:").data(), MakeSdlRect(labelX, uiPosition.y + 323, labelWidth, statHeight), labelFlags)); + vecSelHeroDialog.push_back(std::make_unique(textStats[0], MakeSdlRect(valueX, uiPosition.y + 323, valueWidth, statHeight), valueFlags)); + const char *statLabels[] { + _("Strength:").data(), _("Magic:").data(), _("Dexterity:").data(), _("Vitality:").data(), #ifdef _DEBUG - rect = { (Sint16)(uiPosition.x + 39), (Sint16)(uiPosition.y + 443), 110, 21 }; - vecSelHeroDialog.push_back(std::make_unique(_("Savegame:").data(), rect, UiFlags::AlignRight | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); - rect = { (Sint16)(uiPosition.x + 159), (Sint16)(uiPosition.y + 443), 40, 21 }; - vecSelHeroDialog.push_back(std::make_unique(textStats[5], rect, UiFlags::AlignCenter | UiFlags::FontSize12 | UiFlags::ColorUiSilverDark)); + _("Savegame:").data() #endif + }; + int statY = uiPosition.y + 358; + for (size_t i = 0; i < sizeof(statLabels) / sizeof(statLabels[0]); ++i) { + vecSelHeroDialog.push_back(std::make_unique(statLabels[i], MakeSdlRect(labelX, statY, labelWidth, statHeight), labelFlags)); + vecSelHeroDialog.push_back(std::make_unique(textStats[i + 1], MakeSdlRect(valueX, statY, valueWidth, statHeight), valueFlags)); + statY += statHeight; + } } void selhero_List_Init()