1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 19:13:07 +01:00

Refactor research status drawing code

This commit is contained in:
Hielke Morsink
2021-10-16 18:02:26 +02:00
parent c2d3ca5f85
commit aff3b41feb

View File

@@ -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<rct_string_id>(STR_RESEARCH_UNKNOWN);
DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_TYPE_LABEL, ft);
screenCoords.y += 25;
}
// Progress
{
auto ft = Formatter();
ft.Add<rct_string_id>(STR_RESEARCH_COMPLETED_AL);
DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, ft);
screenCoords.y += 15;
}
// Research type
auto ft = Formatter();
ft.Add<rct_string_id>(STR_RESEARCH_UNKNOWN);
DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_TYPE_LABEL, ft);
screenCoords.y += 25;
{
auto ft = Formatter();
ft.Add<rct_string_id>(STR_RESEARCH_STAGE_UNKNOWN);
DrawTextBasic(dpi, screenCoords, STR_RESEARCH_EXPECTED_LABEL, ft);
}
// Progress
ft = Formatter();
ft.Add<rct_string_id>(STR_RESEARCH_COMPLETED_AL);
DrawTextWrapped(dpi, screenCoords, 296, STR_RESEARCH_PROGRESS_LABEL, ft);
screenCoords.y += 15;
// Expected
ft = Formatter();
ft.Add<rct_string_id>(STR_RESEARCH_STAGE_UNKNOWN);
DrawTextBasic(dpi, screenCoords, STR_RESEARCH_EXPECTED_LABEL, ft);
}
else
{
// Research type
std::array strings = {
static_cast<rct_string_id>(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<rct_string_id>(STR_RESEARCH_UNKNOWN);
}
else if (gResearchProgressStage == RESEARCH_STAGE_DESIGNING)
{
ft.Add<rct_string_id>(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<rct_string_id>(gResearchNextItem->GetName());
}
else if (gResearchNextItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE)
{
ft.Add<rct_string_id>(rtd.Naming.Name);
}
else
{
ft.Add<rct_string_id>(gResearchNextItem->GetName());
ft.Add<rct_string_id>(rtd.Naming.Name);
label = STR_RESEARCH_TYPE_LABEL_VEHICLE;
}
}
auto ft = Formatter();
ft.Add<rct_string_id>(strings[0]);
ft.Add<rct_string_id>(strings[1]);
else
{
ft.Add<rct_string_id>(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<rct_string_id>(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<rct_string_id>(gResearchLastItem->GetName());
}
else if (gResearchLastItem->flags & RESEARCH_ENTRY_FLAG_FIRST_OF_TYPE)
{
ft.Add<rct_string_id>(rtd.Naming.Name);
}
else
{
ft.Add<rct_string_id>(gResearchLastItem->GetName());
ft.Add<rct_string_id>(rtd.Naming.Name);
lastDevelopmentFormat = STR_RESEARCH_VEHICLE_LABEL;
}
}
auto ft = Formatter();
ft.Add<rct_string_id>(strings[0]);
ft.Add<rct_string_id>(strings[1]);
DrawTextWrapped(dpi, screenCoords, 266, lastDevelopmentFormat, ft);
}
}