diff --git a/src/openrct2/entity/Guest.cpp b/src/openrct2/entity/Guest.cpp index b03a48a6aa..a8f96c0ec8 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(); @@ -1709,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);