mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-23 07:43:01 +01:00
Remove track_list member var from window base (#20626)
* Remove track_list member var from window base * Address review comment and readd OnOpen
This commit is contained in:
@@ -93,7 +93,6 @@ class TrackDeletePromptWindow final : public Window
|
||||
};
|
||||
|
||||
static void WindowTrackDeletePromptOpen(TrackDesignFileRef* tdFileRef);
|
||||
static void WindowTrackDesignListReloadTracks();
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -115,20 +114,12 @@ void TrackDesignManageWindow::OnOpen()
|
||||
widgets = _trackManageWidgets;
|
||||
WindowInitScrollWidgets(*this);
|
||||
|
||||
auto* trackDesignListWindow = WindowFindByClass(WindowClass::TrackDesignList);
|
||||
if (trackDesignListWindow != nullptr)
|
||||
{
|
||||
trackDesignListWindow->track_list.track_list_being_updated = true;
|
||||
}
|
||||
WindowTrackDesignListSetBeingUpdated(true);
|
||||
}
|
||||
|
||||
void TrackDesignManageWindow::OnClose()
|
||||
{
|
||||
WindowBase* trackDesignListWindow = WindowFindByClass(WindowClass::TrackDesignList);
|
||||
if (trackDesignListWindow != nullptr)
|
||||
{
|
||||
trackDesignListWindow->track_list.track_list_being_updated = false;
|
||||
}
|
||||
WindowTrackDesignListSetBeingUpdated(false);
|
||||
}
|
||||
|
||||
void TrackDesignManageWindow::OnMouseUp(WidgetIndex widgetIndex)
|
||||
@@ -244,11 +235,3 @@ void TrackDeletePromptWindow::OnDraw(DrawPixelInfo& dpi)
|
||||
STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK, ft, { TextAlignment::CENTRE });
|
||||
}
|
||||
|
||||
static void WindowTrackDesignListReloadTracks()
|
||||
{
|
||||
WindowBase* trackListWindow = WindowFindByClass(WindowClass::TrackDesignList);
|
||||
if (trackListWindow != nullptr)
|
||||
{
|
||||
trackListWindow->track_list.reload_track_designs = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +78,8 @@ private:
|
||||
uint16_t _loadedTrackDesignIndex;
|
||||
std::unique_ptr<TrackDesign> _loadedTrackDesign;
|
||||
std::vector<uint8_t> _trackDesignPreviewPixels;
|
||||
bool _selectedItemIsBeingUpdated;
|
||||
bool _reloadTrackDesigns;
|
||||
|
||||
void FilterList()
|
||||
{
|
||||
@@ -199,8 +201,15 @@ private:
|
||||
}
|
||||
|
||||
public:
|
||||
TrackListWindow(const RideSelection item)
|
||||
{
|
||||
_window_track_list_item = item;
|
||||
}
|
||||
|
||||
void OnOpen() override
|
||||
{
|
||||
LoadDesignsList(_window_track_list_item);
|
||||
|
||||
String::Set(_filterString, sizeof(_filterString), "");
|
||||
_trackListWidgets[WIDX_FILTER_STRING].string = _filterString;
|
||||
widgets = _trackListWidgets;
|
||||
@@ -215,8 +224,8 @@ public:
|
||||
}
|
||||
|
||||
WindowInitScrollWidgets(*this);
|
||||
track_list.track_list_being_updated = false;
|
||||
track_list.reload_track_designs = false;
|
||||
_selectedItemIsBeingUpdated = false;
|
||||
_reloadTrackDesigns = false;
|
||||
// Start with first track highlighted
|
||||
selected_list_item = 0;
|
||||
if (_trackDesigns.size() != 0 && !(gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER))
|
||||
@@ -319,7 +328,7 @@ public:
|
||||
|
||||
void OnScrollMouseDown(const int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
if (!track_list.track_list_being_updated)
|
||||
if (!_selectedItemIsBeingUpdated)
|
||||
{
|
||||
int32_t i = GetListItemFromPosition(screenCoords);
|
||||
if (i != -1)
|
||||
@@ -331,7 +340,7 @@ public:
|
||||
|
||||
void OnScrollMouseOver(const int32_t scrollIndex, const ScreenCoordsXY& screenCoords) override
|
||||
{
|
||||
if (!track_list.track_list_being_updated)
|
||||
if (!_selectedItemIsBeingUpdated)
|
||||
{
|
||||
int32_t i = GetListItemFromPosition(screenCoords);
|
||||
if (i != -1 && selected_list_item != i)
|
||||
@@ -422,12 +431,12 @@ public:
|
||||
WidgetInvalidate(*this, WIDX_FILTER_STRING); // TODO Check this
|
||||
}
|
||||
|
||||
if (track_list.reload_track_designs)
|
||||
if (_reloadTrackDesigns)
|
||||
{
|
||||
LoadDesignsList(_window_track_list_item);
|
||||
selected_list_item = 0;
|
||||
Invalidate();
|
||||
track_list.reload_track_designs = false;
|
||||
_reloadTrackDesigns = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -733,17 +742,20 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
bool SetRideSelection(const RideSelection item)
|
||||
{
|
||||
_window_track_list_item = item;
|
||||
LoadDesignsList(item);
|
||||
return true;
|
||||
}
|
||||
|
||||
void OnResize() override
|
||||
{
|
||||
ResizeFrame();
|
||||
}
|
||||
|
||||
void SetIsBeingUpdated(const bool beingUpdated)
|
||||
{
|
||||
_selectedItemIsBeingUpdated = beingUpdated;
|
||||
}
|
||||
|
||||
void ReloadTrackDesigns()
|
||||
{
|
||||
_reloadTrackDesigns = true;
|
||||
}
|
||||
};
|
||||
|
||||
WindowBase* WindowTrackListOpen(const RideSelection item)
|
||||
@@ -760,7 +772,23 @@ WindowBase* WindowTrackListOpen(const RideSelection item)
|
||||
{
|
||||
screenPos = { 0, TOP_TOOLBAR_HEIGHT + 2 };
|
||||
}
|
||||
auto* w = WindowCreate<TrackListWindow>(WindowClass::TrackDesignList, WW, WH, 0);
|
||||
w->SetRideSelection(item);
|
||||
return w;
|
||||
return WindowCreate<TrackListWindow>(WindowClass::TrackDesignList, WW, WH, 0, item);
|
||||
}
|
||||
|
||||
void WindowTrackDesignListReloadTracks()
|
||||
{
|
||||
auto* trackListWindow = static_cast<TrackListWindow*>(WindowFindByClass(WindowClass::TrackDesignList));
|
||||
if (trackListWindow != nullptr)
|
||||
{
|
||||
trackListWindow->ReloadTrackDesigns();
|
||||
}
|
||||
}
|
||||
|
||||
void WindowTrackDesignListSetBeingUpdated(const bool beingUpdated)
|
||||
{
|
||||
auto* trackListWindow = static_cast<TrackListWindow*>(WindowFindByClass(WindowClass::TrackDesignList));
|
||||
if (trackListWindow != nullptr)
|
||||
{
|
||||
trackListWindow->SetIsBeingUpdated(beingUpdated);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,6 +147,8 @@ void WindowRideMeasurementsDesignCancel();
|
||||
// rct2: 0x00F635EE
|
||||
extern RideSelection _window_track_list_item;
|
||||
WindowBase* WindowTrackListOpen(RideSelection item);
|
||||
void WindowTrackDesignListReloadTracks();
|
||||
void WindowTrackDesignListSetBeingUpdated(bool beingUpdated);
|
||||
|
||||
void SetMapTooltip(Formatter& ft);
|
||||
const Formatter& GetMapTooltip();
|
||||
|
||||
@@ -223,12 +223,6 @@ struct Focus
|
||||
}
|
||||
};
|
||||
|
||||
struct TrackListVariables
|
||||
{
|
||||
bool track_list_being_updated;
|
||||
bool reload_track_designs;
|
||||
};
|
||||
|
||||
struct WindowCloseModifier
|
||||
{
|
||||
WindowIdentifier window;
|
||||
|
||||
@@ -53,7 +53,6 @@ struct WindowBase
|
||||
uint16_t no_list_items{}; // 0 for no items
|
||||
int16_t selected_list_item{}; // -1 for none selected
|
||||
std::optional<Focus> focus;
|
||||
TrackListVariables track_list;
|
||||
union
|
||||
{
|
||||
int16_t page{};
|
||||
|
||||
Reference in New Issue
Block a user