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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user