Merge pull request #20526 from aramk-hub/update-editorobjectives

Part of #20506: Using vectors for EditorObjectiveOptions
This commit is contained in:
Matthias Moninger 2023-07-02 22:39:23 +03:00 committed by GitHub
commit 1914502b7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 15 deletions

View File

@ -134,6 +134,10 @@ static uint64_t window_editor_objective_options_page_hold_down_widgets[] = {
class EditorObjectiveOptionsWindow final : public Window
{
private:
// Not shops or facilities
std::vector<RideId> _rideableRides;
public:
void OnOpen() override
{
@ -142,7 +146,6 @@ public:
hold_down_widgets = window_editor_objective_options_page_hold_down_widgets[WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN];
InitScrollWidgets();
selected_tab = WINDOW_EDITOR_OBJECTIVE_OPTIONS_PAGE_MAIN;
no_list_items = 0;
selected_list_item = -1;
UpdateDisabledWidgets();
}
@ -288,7 +291,7 @@ private:
page = newPage;
frame_no = 0;
no_list_items = 0;
_rideableRides.clear();
selected_list_item = -1;
hold_down_widgets = window_editor_objective_options_page_hold_down_widgets[newPage];
widgets = window_editor_objective_options_widgets[newPage];
@ -1000,19 +1003,18 @@ private:
OnResize();
InvalidateWidget(WIDX_TAB_2);
auto numItems = 0;
const auto oldSize = _rideableRides.size();
_rideableRides.clear();
for (auto& currentRide : GetRideManager())
{
if (currentRide.IsRide())
{
list_item_positions[numItems] = currentRide.id.ToUnderlying();
numItems++;
_rideableRides.push_back(currentRide.id);
}
}
if (no_list_items != numItems)
if (oldSize != _rideableRides.size())
{
no_list_items = numItems;
Invalidate();
}
}
@ -1024,7 +1026,7 @@ private:
ScreenSize OnScrollGetSizeRides(int32_t scrollIndex)
{
ScreenSize newSize;
newSize.height = no_list_items * 12;
newSize.height = static_cast<int32_t>(_rideableRides.size()) * 10;
return newSize;
}
@ -1036,11 +1038,10 @@ private:
void OnScrollMouseDownRides(int32_t scrollIndex, const ScreenCoordsXY& screenCoords)
{
auto i = screenCoords.y / 12;
if (i < 0 || i >= no_list_items)
if (i < 0 || i >= static_cast<int32_t>(_rideableRides.size()))
return;
const auto currentRideId = RideId::FromUnderlying(list_item_positions[i]);
auto currentRide = GetRide(currentRideId);
auto* currentRide = GetRide(_rideableRides[i]);
if (currentRide != nullptr)
{
currentRide->lifecycle_flags ^= RIDE_LIFECYCLE_INDESTRUCTIBLE;
@ -1057,7 +1058,7 @@ private:
int32_t i;
i = screenCoords.y / 12;
if (i < 0 || i >= no_list_items)
if (i < 0 || i >= static_cast<int32_t>(_rideableRides.size()))
return;
if (selected_list_item != i)
@ -1111,7 +1112,7 @@ private:
int32_t colour = ColourMapA[colours[1]].mid_light;
GfxFillRect(dpi, { { dpi.x, dpi.y }, { dpi.x + dpi.width - 1, dpi.y + dpi.height - 1 } }, colour);
for (int32_t i = 0; i < no_list_items; i++)
for (int32_t i = 0; i < static_cast<int32_t>(_rideableRides.size()); i++)
{
int32_t y = i * 12;
@ -1130,8 +1131,7 @@ private:
}
// Checkbox mark
const auto currentRideId = RideId::FromUnderlying(list_item_positions[i]);
auto currentRide = GetRide(currentRideId);
auto* currentRide = GetRide(_rideableRides[i]);
if (currentRide != nullptr)
{
if (currentRide->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE)