Use RIDE_TYPE_FLAG_IS_TOILET

This commit is contained in:
frutiemax
2022-07-31 12:30:51 -04:00
committed by Gymnasiast
parent f8675d7e8e
commit 76104cbbee
8 changed files with 24 additions and 13 deletions

View File

@@ -6321,7 +6321,8 @@ static void WindowRideIncomeTogglePrimaryPrice(rct_window* w)
return;
ShopItem shop_item;
if (ride->type == RIDE_TYPE_TOILETS)
const auto& rtd = ride->GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
shop_item = ShopItem::Admission;
}
@@ -6440,7 +6441,8 @@ static bool WindowRideIncomeCanModifyPrimaryPrice(rct_window* w)
return false;
auto rideEntry = ride->GetRideEntry();
return park_ride_prices_unlocked() || ride->type == RIDE_TYPE_TOILETS
const auto& rtd = ride->GetRideTypeDescriptor();
return park_ride_prices_unlocked() || rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET)
|| (rideEntry != nullptr && rideEntry->shop_item[0] != ShopItem::None);
}
@@ -6639,7 +6641,8 @@ static void WindowRideIncomeInvalidate(rct_window* w)
window_ride_income_widgets[WIDX_PRIMARY_PRICE].tooltip = STR_NONE;
// If ride prices are locked, do not allow setting the price, unless we're dealing with a shop or toilet.
if (!park_ride_prices_unlocked() && rideEntry->shop_item[0] == ShopItem::None && ride->type != RIDE_TYPE_TOILETS)
const auto& rtd = ride->GetRideTypeDescriptor();
if (!park_ride_prices_unlocked() && rideEntry->shop_item[0] == ShopItem::None && !rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
w->disabled_widgets |= (1ULL << WIDX_PRIMARY_PRICE);
window_ride_income_widgets[WIDX_PRIMARY_PRICE_LABEL].tooltip = STR_RIDE_INCOME_ADMISSION_PAY_FOR_ENTRY_TIP;
@@ -6658,7 +6661,7 @@ static void WindowRideIncomeInvalidate(rct_window* w)
window_ride_income_widgets[WIDX_PRIMARY_PRICE].text = STR_FREE;
ShopItem primaryItem = ShopItem::Admission;
if (ride->type == RIDE_TYPE_TOILETS || ((primaryItem = rideEntry->shop_item[0]) != ShopItem::None))
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET) || ((primaryItem = rideEntry->shop_item[0]) != ShopItem::None))
{
window_ride_income_widgets[WIDX_PRIMARY_PRICE_SAME_THROUGHOUT_PARK].type = WindowWidgetType::Checkbox;

View File

@@ -235,7 +235,7 @@ GameActions::Result RideCreateAction::Execute() const
ride->price[0] = 0;
}
if (ride->type == RIDE_TYPE_TOILETS)
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
if (shop_item_has_common_price(ShopItem::Admission))
{

View File

@@ -97,7 +97,9 @@ GameActions::Result RideSetPriceAction::Execute() const
if (_primaryPrice)
{
shopItem = ShopItem::Admission;
if (ride->type != RIDE_TYPE_TOILETS)
const auto& rtd = ride->GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
shopItem = rideEntry->shop_item[0];
if (shopItem == ShopItem::None)
@@ -149,7 +151,8 @@ void RideSetPriceAction::RideSetCommonPrice(ShopItem shopItem) const
{
auto invalidate = false;
auto rideEntry = get_ride_entry(ride.subtype);
if (ride.type == RIDE_TYPE_TOILETS && shopItem == ShopItem::Admission)
const auto& rtd = ride.GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET) && shopItem == ShopItem::Admission)
{
if (ride.price[0] != _price)
{

View File

@@ -2206,7 +2206,8 @@ bool Guest::ShouldGoToShop(Ride* ride, bool peepAtShop)
return false;
}
if (ride->type == RIDE_TYPE_TOILETS)
const auto& rtd = ride->GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
if (Toilet < 70)
{

View File

@@ -376,7 +376,8 @@ static bool award_is_deserved_best_restrooms([[maybe_unused]] int32_t activeAwar
// Count open restrooms
const auto& rideManager = GetRideManager();
auto numRestrooms = static_cast<size_t>(std::count_if(rideManager.begin(), rideManager.end(), [](const Ride& ride) {
return ride.type == RIDE_TYPE_TOILETS && ride.status == RideStatus::Open;
const auto& rtd = ride.GetRideTypeDescriptor();
return rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET) && ride.status == RideStatus::Open;
}));
// At least 4 open restrooms

View File

@@ -234,11 +234,12 @@ int32_t ride_get_count()
size_t Ride::GetNumPrices() const
{
size_t result = 0;
if (type == RIDE_TYPE_CASH_MACHINE || type == RIDE_TYPE_FIRST_AID)
const auto& rtd = GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_CASH_MACHINE) || type == RIDE_TYPE_FIRST_AID)
{
result = 0;
}
else if (type == RIDE_TYPE_TOILETS)
else if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET))
{
result = 1;
}

View File

@@ -2222,7 +2222,9 @@ void PaintTrack(paint_session& session, Direction direction, int32_t height, con
if (lightfx_is_available())
{
uint8_t zOffset = 16;
if (ride->type == RIDE_TYPE_TOILETS || ride->type == RIDE_TYPE_FIRST_AID || ride->type == RIDE_TYPE_CASH_MACHINE)
const auto& rtd = ride->GetRideTypeDescriptor();
if (rtd.HasFlag(RIDE_TYPE_FLAG_IS_TOILET) || ride->type == RIDE_TYPE_FIRST_AID
|| rtd.HasFlag(RIDE_TYPE_FLAG_IS_CASH_MACHINE))
zOffset = 23;
if (ride->type == RIDE_TYPE_INFORMATION_KIOSK)

View File

@@ -24,7 +24,7 @@ constexpr const RideTypeDescriptor ToiletsRTD =
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
SET_FIELD(TrackPaintFunction, get_track_paint_function_facility),
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_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE |
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_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_IS_TOILET | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
SET_FIELD(RideModes, EnumsToFlags(RideMode::ShopStall)),
SET_FIELD(DefaultMode, RideMode::ShopStall),