From 7b5ab2b007651b7546971129ee6e234997b8e432 Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Tue, 25 Nov 2025 19:07:48 -0300 Subject: [PATCH 1/2] Refactor shop item handling with switch statement --- src/openrct2/entity/Guest.cpp | 58 +++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index a6879a3e90..e6282410ca 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1669,32 +1669,38 @@ static bool GuestDecideAndBuyItem(Guest& guest, Ride& ride, const ShopItem shopI guest.GiveItem(shopItem); const auto hasRandomShopColour = ride.hasLifecycleFlag(RIDE_LIFECYCLE_RANDOM_SHOP_COLOURS); - if (shopItem == ShopItem::tShirt) - guest.TshirtColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::hat) - guest.HatColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::balloon) - guest.BalloonColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::umbrella) - guest.UmbrellaColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; - - if (shopItem == ShopItem::map) - guest.ResetPathfindGoal(); - - if (shopItem == ShopItem::photo) - guest.Photo1RideRef = ride.id; - - if (shopItem == ShopItem::photo2) - guest.Photo2RideRef = ride.id; - - if (shopItem == ShopItem::photo3) - guest.Photo3RideRef = ride.id; - - if (shopItem == ShopItem::photo4) - guest.Photo4RideRef = ride.id; + switch (shopItem) + { + case ShopItem::tShirt: + guest.TshirtColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::hat: + guest.HatColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::balloon: + guest.BalloonColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::umbrella: + guest.UmbrellaColour = hasRandomShopColour ? ScenarioRandMax(kColourNumNormal) : ride.trackColours[0].main; + break; + case ShopItem::map: + guest.ResetPathfindGoal(); + break; + case ShopItem::photo: + guest.Photo1RideRef = ride.id; + break; + case ShopItem::photo2: + guest.Photo2RideRef = ride.id; + break; + case ShopItem::photo3: + guest.Photo3RideRef = ride.id; + break; + case ShopItem::photo4: + guest.Photo4RideRef = ride.id; + break; + default: + break; + } guest.WindowInvalidateFlags |= PEEP_INVALIDATE_PEEP_INVENTORY; guest.UpdateAnimationGroup(); From 0c1e78a042767015566e9508a878da47dc09e68a Mon Sep 17 00:00:00 2001 From: matheusvb3 <98937378+matheusvb3@users.noreply.github.com> Date: Wed, 26 Nov 2025 01:18:43 -0300 Subject: [PATCH 2/2] Replace if chain with else ifs --- src/openrct2/entity/Guest.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index e6282410ca..32569b2bbd 100644 --- a/src/openrct2/entity/Guest.cpp +++ b/src/openrct2/entity/Guest.cpp @@ -1715,29 +1715,25 @@ static bool GuestDecideAndBuyItem(Guest& guest, Ride& ride, const ShopItem shopI } } - if (shopItemDescriptor.IsFood()) - guest.AmountOfFood++; - - if (shopItemDescriptor.IsDrink()) - guest.AmountOfDrinks++; - - if (shopItemDescriptor.IsSouvenir()) - guest.AmountOfSouvenirs++; - money64* expend_type = &guest.PaidOnSouvenirs; ExpenditureType expenditure = ExpenditureType::shopStock; if (shopItemDescriptor.IsFood()) { + guest.AmountOfFood++; expend_type = &guest.PaidOnFood; expenditure = ExpenditureType::foodDrinkStock; } - - if (shopItemDescriptor.IsDrink()) + else if (shopItemDescriptor.IsDrink()) { + guest.AmountOfDrinks++; expend_type = &guest.PaidOnDrink; expenditure = ExpenditureType::foodDrinkStock; } + else if (shopItemDescriptor.IsSouvenir()) + { + guest.AmountOfSouvenirs++; + } if (!(gameState.park.flags & PARK_FLAGS_NO_MONEY)) FinancePayment(shopItemDescriptor.Cost, expenditure);