1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-21 05:53:02 +01:00

Merge pull request #25674 from matheusvb3/simplify-guest

Simple guest purchase logic refactor
This commit is contained in:
Michael Steenbeek
2026-01-04 17:25:10 +01:00
committed by GitHub

View File

@@ -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);