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

Add RIDE_TYPE_FLAG_IS_CASH_MACHINE flag to RTD (#17130)

* Add RIDE_TYPE_FLAG_HAS_CASH flag to RTD

* Rename to RIDE_TYPE_FLAG_IS_CASH_MACHINE
This commit is contained in:
frutiemax
2022-05-04 14:37:11 -04:00
committed by GitHub
parent c1065db88f
commit 275e970d69
3 changed files with 17 additions and 13 deletions

View File

@@ -438,7 +438,7 @@ static void peep_update_hunger(Guest* peep);
static void peep_decide_whether_to_leave_park(Guest* peep);
static void peep_leave_park(Guest* peep);
static void peep_head_for_nearest_ride_type(Guest* peep, int32_t rideType);
static void peep_head_for_nearest_ride_with_flags(Guest* peep, int32_t rideTypeFlags);
static void PeepHeadForNearestRideWithFlags(Guest* peep, int64_t rideTypeFlags);
bool loc_690FD0(Peep* peep, RideId* rideToView, uint8_t* rideSeatToView, TileElement* tileElement);
template<> bool EntityBase::Is<Guest>() const
@@ -1088,16 +1088,16 @@ void Guest::Tick128UpdateGuest(int32_t index)
switch (chosen_thought)
{
case PeepThoughtType::Hungry:
peep_head_for_nearest_ride_with_flags(this, RIDE_TYPE_FLAG_SELLS_FOOD);
PeepHeadForNearestRideWithFlags(this, RIDE_TYPE_FLAG_SELLS_FOOD);
break;
case PeepThoughtType::Thirsty:
peep_head_for_nearest_ride_with_flags(this, RIDE_TYPE_FLAG_SELLS_DRINKS);
PeepHeadForNearestRideWithFlags(this, RIDE_TYPE_FLAG_SELLS_DRINKS);
break;
case PeepThoughtType::Toilet:
peep_head_for_nearest_ride_with_flags(this, RIDE_TYPE_FLAG_IS_TOILET);
PeepHeadForNearestRideWithFlags(this, RIDE_TYPE_FLAG_IS_TOILET);
break;
case PeepThoughtType::RunningOut:
peep_head_for_nearest_ride_type(this, RIDE_TYPE_CASH_MACHINE);
PeepHeadForNearestRideWithFlags(this, RIDE_TYPE_FLAG_IS_CASH_MACHINE);
break;
default:
break;
@@ -3218,7 +3218,7 @@ static void peep_head_for_nearest_ride_type(Guest* peep, int32_t rideType)
peep, considerOnlyCloseRides, [rideType](const Ride& ride) { return ride.type == rideType; });
}
static void peep_head_for_nearest_ride_with_flags(Guest* peep, int32_t rideTypeFlags)
static void PeepHeadForNearestRideWithFlags(Guest* peep, int64_t rideTypeFlags)
{
if ((rideTypeFlags & RIDE_TYPE_FLAG_IS_TOILET) && peep->HasFoodOrDrink())
{
@@ -3239,16 +3239,17 @@ void Guest::StopPurchaseThought(uint8_t ride_type)
{
auto thoughtType = PeepThoughtType::Hungry;
if (!GetRideTypeDescriptor(ride_type).HasFlag(RIDE_TYPE_FLAG_SELLS_FOOD))
const auto& rtd = GetRideTypeDescriptor(ride_type);
if (!rtd.HasFlag(RIDE_TYPE_FLAG_SELLS_FOOD))
{
thoughtType = PeepThoughtType::Thirsty;
if (!GetRideTypeDescriptor(ride_type).HasFlag(RIDE_TYPE_FLAG_SELLS_DRINKS))
if (!rtd.HasFlag(RIDE_TYPE_FLAG_SELLS_DRINKS))
{
thoughtType = PeepThoughtType::RunningOut;
if (ride_type != RIDE_TYPE_CASH_MACHINE)
if (!rtd.HasFlag(RIDE_TYPE_FLAG_IS_CASH_MACHINE))
{
thoughtType = PeepThoughtType::Toilet;
if (!GetRideTypeDescriptor(ride_type).HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
if (!rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
return;
}
@@ -3332,7 +3333,8 @@ void Guest::UpdateBuying()
return;
}
if (ride->type == RIDE_TYPE_CASH_MACHINE)
const auto& rtd = GetRideTypeDescriptor(ride->type);
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_CASH_MACHINE))
{
if (CurrentRide != PreviousRide)
{
@@ -3354,7 +3356,8 @@ void Guest::UpdateBuying()
if (CurrentRide != PreviousRide)
{
if (ride->type == RIDE_TYPE_CASH_MACHINE)
const auto& rtd = GetRideTypeDescriptor(ride->type);
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_CASH_MACHINE))
{
item_bought = peep_should_use_cash_machine(this, CurrentRide);
if (!item_bought)

View File

@@ -277,6 +277,7 @@ enum ride_type_flags : uint64_t
RIDE_TYPE_FLAG_HAS_LANDSCAPE_DOORS = (1ULL << 51),
RIDE_TYPE_FLAG_UP_INCLINE_REQUIRES_LIFT = (1ULL << 52),
RIDE_TYPE_FLAG_PEEP_CAN_USE_UMBRELLA = (1ULL << 53),
RIDE_TYPE_FLAG_IS_CASH_MACHINE = (1ULL << 54),
};
// Set on ride types that have a main colour, additional colour and support colour.

View File

@@ -23,7 +23,7 @@ constexpr const RideTypeDescriptor CashMachineRTD =
SET_FIELD(CoveredTrackPieces, {}),
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
SET_FIELD(TrackPaintFunction, get_track_paint_function_shop),
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_NO_VEHICLES |
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_NO_VEHICLES | RIDE_TYPE_FLAG_IS_CASH_MACHINE |
RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, EnumsToFlags(RideMode::ShopStall)),
SET_FIELD(DefaultMode, RideMode::ShopStall),