From aff3b41feb63e34aa27516aa2d590f65ffc93648 Mon Sep 17 00:00:00 2001 From: Hielke Morsink Date: Sat, 16 Oct 2021 18:02:26 +0200 Subject: [PATCH] Refactor research status drawing code --- src/openrct2-ui/windows/Research.cpp | 123 +++++++++++++-------------- 1 file changed, 58 insertions(+), 65 deletions(-) diff --git a/src/openrct2-ui/windows/Research.cpp b/src/openrct2-ui/windows/Research.cpp index 24ee76c84f..2801ebc474 100644 --- a/src/openrct2-ui/windows/Research.cpp +++ b/src/openrct2-ui/windows/Research.cpp @@ -291,61 +291,58 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp if (gResearchProgressStage == RESEARCH_STAGE_FINISHED_ALL) { - { - auto ft = Formatter(); - ft.Add(STR_RESEARCH_UNKNOWN); - DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_TYPE_LABEL, ft); - screenCoords.y += 25; - } - // Progress - { - auto ft = Formatter(); - ft.Add(STR_RESEARCH_COMPLETED_AL); - DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, ft); - screenCoords.y += 15; - } + // Research type + auto ft = Formatter(); + ft.Add(STR_RESEARCH_UNKNOWN); + DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_TYPE_LABEL, ft); + screenCoords.y += 25; - { - auto ft = Formatter(); - ft.Add(STR_RESEARCH_STAGE_UNKNOWN); - DrawTextBasic(dpi, screenCoords, STR_RESEARCH_EXPECTED_LABEL, ft); - } + // Progress + ft = Formatter(); + ft.Add(STR_RESEARCH_COMPLETED_AL); + DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, ft); + screenCoords.y += 15; + + // Expected + ft = Formatter(); + ft.Add(STR_RESEARCH_STAGE_UNKNOWN); + DrawTextBasic(dpi, screenCoords, STR_RESEARCH_EXPECTED_LABEL, ft); } else { // Research type - std::array strings = { - static_cast(STR_RESEARCH_UNKNOWN), - STR_NONE, - }; + auto ft = Formatter(); rct_string_id label = STR_RESEARCH_TYPE_LABEL; - if (gResearchProgressStage != RESEARCH_STAGE_INITIAL_RESEARCH) + if (gResearchProgressStage == RESEARCH_STAGE_INITIAL_RESEARCH) { - strings[0] = gResearchNextItem->GetCategoryName(); - if (gResearchProgressStage != RESEARCH_STAGE_DESIGNING) + ft.Add(STR_RESEARCH_UNKNOWN); + } + else if (gResearchProgressStage == RESEARCH_STAGE_DESIGNING) + { + ft.Add(gResearchNextItem->GetCategoryName()); + } + else if (gResearchNextItem->type == Research::EntryType::Ride) + { + const auto& rtd = GetRideTypeDescriptor(gResearchNextItem->baseRideType); + if (rtd.HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY)) { - strings[0] = gResearchNextItem->GetName(); - if (gResearchNextItem->type == Research::EntryType::Ride) - { - auto rtd = GetRideTypeDescriptor(gResearchNextItem->baseRideType); - if (!rtd.HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY)) - { - if (gResearchNextItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE) - { - strings[0] = rtd.Naming.Name; - } - else - { - strings[1] = rtd.Naming.Name; - label = STR_RESEARCH_TYPE_LABEL_VEHICLE; - } - } - } + ft.Add(gResearchNextItem->GetName()); + } + else if (gResearchNextItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE) + { + ft.Add(rtd.Naming.Name); + } + else + { + ft.Add(gResearchNextItem->GetName()); + ft.Add(rtd.Naming.Name); + label = STR_RESEARCH_TYPE_LABEL_VEHICLE; } } - auto ft = Formatter(); - ft.Add(strings[0]); - ft.Add(strings[1]); + else + { + ft.Add(gResearchNextItem->GetName()); + } DrawTextWrapped(dpi, screenCoords, 296, label, ft); screenCoords.y += 25; @@ -377,36 +374,32 @@ void window_research_development_page_paint(rct_window* w, rct_drawpixelinfo* dp if (gResearchLastItem.has_value()) { rct_string_id lastDevelopmentFormat = STR_EMPTY; - std::array strings = { - gResearchLastItem->GetName(), - STR_NONE, - }; - auto type = gResearchLastItem->type; - if (type == Research::EntryType::Scenery) + auto ft = Formatter(); + if (gResearchLastItem->type == Research::EntryType::Scenery) { lastDevelopmentFormat = STR_RESEARCH_SCENERY_LABEL; + ft.Add(gResearchLastItem->GetName()); } else { lastDevelopmentFormat = STR_RESEARCH_RIDE_LABEL; - auto rtd = GetRideTypeDescriptor(gResearchLastItem->baseRideType); - if (!rtd.HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY)) + const auto& rtd = GetRideTypeDescriptor(gResearchLastItem->baseRideType); + if (rtd.HasFlag(RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY)) { - if (gResearchLastItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE) - { - strings[0] = rtd.Naming.Name; - } - else - { - strings[1] = rtd.Naming.Name; - lastDevelopmentFormat = STR_RESEARCH_VEHICLE_LABEL; - } + ft.Add(gResearchLastItem->GetName()); + } + else if (gResearchLastItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE) + { + ft.Add(rtd.Naming.Name); + } + else + { + ft.Add(gResearchLastItem->GetName()); + ft.Add(rtd.Naming.Name); + lastDevelopmentFormat = STR_RESEARCH_VEHICLE_LABEL; } } - auto ft = Formatter(); - ft.Add(strings[0]); - ft.Add(strings[1]); DrawTextWrapped(dpi, screenCoords, 266, lastDevelopmentFormat, ft); } }