mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 15:52:55 +01:00
Move all construction related logic into OnOpen (#20632)
This commit is contained in:
@@ -390,28 +390,32 @@ namespace OpenRCT2::Ui::Windows
|
|||||||
public:
|
public:
|
||||||
CustomWindow(std::shared_ptr<Plugin> owner, const CustomWindowDesc& desc)
|
CustomWindow(std::shared_ptr<Plugin> owner, const CustomWindowDesc& desc)
|
||||||
: _info(owner, desc)
|
: _info(owner, desc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
number = GetNewWindowNumber();
|
number = GetNewWindowNumber();
|
||||||
|
|
||||||
// Set window tab
|
// Set window tab
|
||||||
page = desc.TabIndex.value_or(0);
|
page = _info.Desc.TabIndex.value_or(0);
|
||||||
|
|
||||||
// Set window colours
|
// Set window colours
|
||||||
colours[0] = COLOUR_GREY;
|
colours[0] = COLOUR_GREY;
|
||||||
colours[1] = COLOUR_GREY;
|
colours[1] = COLOUR_GREY;
|
||||||
colours[2] = COLOUR_GREY;
|
colours[2] = COLOUR_GREY;
|
||||||
auto numColours = std::min(std::size(colours), std::size(desc.Colours));
|
auto numColours = std::min(std::size(colours), std::size(_info.Desc.Colours));
|
||||||
for (size_t i = 0; i < numColours; i++)
|
for (size_t i = 0; i < numColours; i++)
|
||||||
{
|
{
|
||||||
colours[i] = desc.Colours[i];
|
colours[i] = _info.Desc.Colours[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (desc.IsResizable())
|
if (_info.Desc.IsResizable())
|
||||||
{
|
{
|
||||||
min_width = desc.MinWidth.value_or(0);
|
min_width = _info.Desc.MinWidth.value_or(0);
|
||||||
min_height = desc.MinHeight.value_or(0);
|
min_height = _info.Desc.MinHeight.value_or(0);
|
||||||
max_width = desc.MaxWidth.value_or(std::numeric_limits<uint16_t>::max());
|
max_width = _info.Desc.MaxWidth.value_or(std::numeric_limits<uint16_t>::max());
|
||||||
max_height = desc.MaxHeight.value_or(std::numeric_limits<uint16_t>::max());
|
max_height = _info.Desc.MaxHeight.value_or(std::numeric_limits<uint16_t>::max());
|
||||||
}
|
}
|
||||||
RefreshWidgets();
|
RefreshWidgets();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -492,33 +492,15 @@ static u8string OpenSystemFileBrowser(bool isSave)
|
|||||||
class LoadSaveWindow final : public Window
|
class LoadSaveWindow final : public Window
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LoadSaveWindow(int32_t type)
|
LoadSaveWindow(int32_t loadSaveType)
|
||||||
|
: type(loadSaveType)
|
||||||
{
|
{
|
||||||
widgets = window_loadsave_widgets;
|
|
||||||
|
|
||||||
const auto uiContext = OpenRCT2::GetContext()->GetUiContext();
|
|
||||||
if (!uiContext->HasFilePicker())
|
|
||||||
{
|
|
||||||
disabled_widgets |= (1uLL << WIDX_BROWSE);
|
|
||||||
window_loadsave_widgets[WIDX_BROWSE].type = WindowWidgetType::Empty;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Split LOADSAVETYPE_* into two proper enum classes (one for load/save, the other for the type)
|
|
||||||
const bool isSave = (type & 0x01) == LOADSAVETYPE_SAVE;
|
|
||||||
const auto path = GetDir(type);
|
|
||||||
|
|
||||||
const char* pattern = GetFilterPatternByType(type, isSave);
|
|
||||||
PopulateList(isSave, path, pattern);
|
|
||||||
no_list_items = static_cast<uint16_t>(_listItems.size());
|
|
||||||
selected_list_item = -1;
|
|
||||||
|
|
||||||
InitScrollWidgets();
|
|
||||||
ComputeMaxDateWidth();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int32_t maxDateWidth{ 0 };
|
int32_t maxDateWidth{ 0 };
|
||||||
int32_t maxTimeWidth{ 0 };
|
int32_t maxTimeWidth{ 0 };
|
||||||
|
int32_t type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void PopulateList(int32_t includeNewItem, const u8string& directory, std::string_view extensionPattern)
|
void PopulateList(int32_t includeNewItem, const u8string& directory, std::string_view extensionPattern)
|
||||||
@@ -692,6 +674,26 @@ public:
|
|||||||
public:
|
public:
|
||||||
void OnOpen() override
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
|
widgets = window_loadsave_widgets;
|
||||||
|
|
||||||
|
const auto uiContext = OpenRCT2::GetContext()->GetUiContext();
|
||||||
|
if (!uiContext->HasFilePicker())
|
||||||
|
{
|
||||||
|
disabled_widgets |= (1uLL << WIDX_BROWSE);
|
||||||
|
window_loadsave_widgets[WIDX_BROWSE].type = WindowWidgetType::Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Split LOADSAVETYPE_* into two proper enum classes (one for load/save, the other for the type)
|
||||||
|
const bool isSave = (type & 0x01) == LOADSAVETYPE_SAVE;
|
||||||
|
const auto path = GetDir(type);
|
||||||
|
|
||||||
|
const char* pattern = GetFilterPatternByType(type, isSave);
|
||||||
|
PopulateList(isSave, path, pattern);
|
||||||
|
no_list_items = static_cast<uint16_t>(_listItems.size());
|
||||||
|
selected_list_item = -1;
|
||||||
|
|
||||||
|
InitScrollWidgets();
|
||||||
|
ComputeMaxDateWidth();
|
||||||
min_width = WW;
|
min_width = WW;
|
||||||
min_height = WH / 2;
|
min_height = WH / 2;
|
||||||
max_width = WW * 2;
|
max_width = WW * 2;
|
||||||
@@ -1120,6 +1122,10 @@ public:
|
|||||||
OverwritePromptWindow(const std::string_view name, const std::string_view path)
|
OverwritePromptWindow(const std::string_view name, const std::string_view path)
|
||||||
: _name(name)
|
: _name(name)
|
||||||
, _path(path)
|
, _path(path)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
widgets = window_overwrite_prompt_widgets;
|
widgets = window_overwrite_prompt_widgets;
|
||||||
colours[0] = TRANSLUCENT(COLOUR_BORDEAUX_RED);
|
colours[0] = TRANSLUCENT(COLOUR_BORDEAUX_RED);
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ static Formatter _mapTooltipArgs;
|
|||||||
class MapTooltip final : public Window
|
class MapTooltip final : public Window
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MapTooltip()
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
widgets = window_map_tooltip_widgets;
|
widgets = window_map_tooltip_widgets;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,7 +161,7 @@ private:
|
|||||||
ScreenCoordsXY InformationGetSize();
|
ScreenCoordsXY InformationGetSize();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
MultiplayerWindow();
|
void OnOpen() override;
|
||||||
|
|
||||||
void SetPage(int32_t page_number);
|
void SetPage(int32_t page_number);
|
||||||
|
|
||||||
@@ -193,7 +193,7 @@ WindowBase* WindowMultiplayerOpen()
|
|||||||
return window;
|
return window;
|
||||||
}
|
}
|
||||||
|
|
||||||
MultiplayerWindow::MultiplayerWindow()
|
void MultiplayerWindow::OnOpen()
|
||||||
{
|
{
|
||||||
SetPage(WINDOW_MULTIPLAYER_PAGE_INFORMATION);
|
SetPage(WINDOW_MULTIPLAYER_PAGE_INFORMATION);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,11 +116,12 @@ static constexpr StringId ResearchStageNames[] = {
|
|||||||
class ResearchWindow final : public Window
|
class ResearchWindow final : public Window
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ResearchWindow()
|
void OnOpen() override
|
||||||
{
|
{
|
||||||
widgets = window_research_page_widgets[WINDOW_RESEARCH_PAGE_DEVELOPMENT];
|
widgets = window_research_page_widgets[WINDOW_RESEARCH_PAGE_DEVELOPMENT];
|
||||||
width = WW_DEVELOPMENT;
|
width = WW_DEVELOPMENT;
|
||||||
height = WH_DEVELOPMENT;
|
height = WH_DEVELOPMENT;
|
||||||
|
ResearchUpdateUncompletedTypes();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetPage(int32_t newPageIndex)
|
void SetPage(int32_t newPageIndex)
|
||||||
@@ -152,11 +153,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void OnOpen() override
|
|
||||||
{
|
|
||||||
ResearchUpdateUncompletedTypes();
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnUpdate() override
|
void OnUpdate() override
|
||||||
{
|
{
|
||||||
// Tab animation
|
// Tab animation
|
||||||
|
|||||||
@@ -635,6 +635,10 @@ public:
|
|||||||
RideWindow(const Ride& ride)
|
RideWindow(const Ride& ride)
|
||||||
{
|
{
|
||||||
rideId = ride.id;
|
rideId = ride.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void OnOpen() override
|
||||||
|
{
|
||||||
widgets = PageWidgets[WINDOW_RIDE_PAGE_MAIN];
|
widgets = PageWidgets[WINDOW_RIDE_PAGE_MAIN];
|
||||||
hold_down_widgets = PageHoldDownWidgets[WINDOW_RIDE_PAGE_MAIN];
|
hold_down_widgets = PageHoldDownWidgets[WINDOW_RIDE_PAGE_MAIN];
|
||||||
|
|
||||||
@@ -648,9 +652,15 @@ public:
|
|||||||
max_width = 500;
|
max_width = 500;
|
||||||
max_height = 450;
|
max_height = 450;
|
||||||
|
|
||||||
UpdateOverallView(ride);
|
auto ride = GetRide(rideId);
|
||||||
|
if (ride == nullptr)
|
||||||
|
{
|
||||||
|
Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
UpdateOverallView(*ride);
|
||||||
|
|
||||||
PopulateVehicleTypeDropdown(ride, true);
|
PopulateVehicleTypeDropdown(*ride, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnClose() override
|
virtual void OnClose() override
|
||||||
|
|||||||
Reference in New Issue
Block a user