mirror of https://github.com/OpenRCT2/OpenRCT2.git
Replace RideTypeHasRideGroups with flag (#11375)
This commit is contained in:
parent
fc5a5fe320
commit
e1e58423fc
|
@ -1495,7 +1495,7 @@ static rct_string_id get_ride_type_string_id(const ObjectRepositoryItem* item)
|
|||
uint8_t rideType = item->RideInfo.RideType[i];
|
||||
if (rideType != RIDE_TYPE_NULL)
|
||||
{
|
||||
if (RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::RideGroupFind(rideType, item->RideInfo.RideGroupIndex);
|
||||
result = rideGroup->Naming.name;
|
||||
|
|
|
@ -324,7 +324,7 @@ static void window_new_ride_populate_list()
|
|||
|
||||
if (ride_type_is_invented(rideType) || gCheatsIgnoreResearchStatus)
|
||||
{
|
||||
if (!RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (!RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
nextListItem = window_new_ride_iterate_over_ride_group(rideType, 0, nextListItem);
|
||||
}
|
||||
|
@ -367,7 +367,7 @@ static ride_list_item* window_new_ride_iterate_over_ride_group(
|
|||
// Ride entries
|
||||
rct_ride_entry* rideEntry = get_ride_entry(rideEntryIndex);
|
||||
|
||||
if (RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideEntryRideGroup = RideGroupManager::GetRideGroup(rideType, rideEntry);
|
||||
const RideGroup* rideGroup = RideGroupManager::RideGroupFind(rideType, rideGroupIndex);
|
||||
|
@ -563,7 +563,7 @@ void window_new_ride_focus(ride_list_item rideItem)
|
|||
{
|
||||
const RideGroup* irg = RideGroupManager::GetRideGroup(rideTypeIndex, rideEntry);
|
||||
|
||||
if (!RideGroupManager::RideTypeHasRideGroups(rideTypeIndex) || rideGroup->Equals(irg))
|
||||
if (!RideTypeDescriptors[rideTypeIndex].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS) || rideGroup->Equals(irg))
|
||||
{
|
||||
_windowNewRideHighlightedItem[0] = rideItem;
|
||||
w->new_ride.highlighted_ride_id = rideItem.ride_type_and_entry;
|
||||
|
@ -948,7 +948,7 @@ static int32_t get_num_track_designs(ride_list_item item)
|
|||
}
|
||||
|
||||
auto repo = OpenRCT2::GetContext()->GetTrackDesignRepository();
|
||||
if (rideEntry != nullptr && RideGroupManager::RideTypeHasRideGroups(item.type))
|
||||
if (rideEntry != nullptr && RideTypeDescriptors[item.type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
auto rideGroup = RideGroupManager::GetRideGroup(item.type, rideEntry);
|
||||
if (rideGroup != nullptr)
|
||||
|
@ -1077,7 +1077,7 @@ static void window_new_ride_list_vehicles_for(uint8_t rideType, const rct_ride_e
|
|||
continue;
|
||||
|
||||
// Skip if vehicle does not belong to the same ride group
|
||||
if (RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
auto rideGroup = RideGroupManager::GetRideGroup(rideType, rideEntry);
|
||||
auto currentRideGroup = RideGroupManager::GetRideGroup(rideType, currentRideEntry);
|
||||
|
|
|
@ -2364,7 +2364,7 @@ static void populate_vehicle_type_dropdown(Ride* ride)
|
|||
continue;
|
||||
|
||||
// Skip if vehicle does not belong to the same ride group
|
||||
if (RideGroupManager::RideTypeHasRideGroups(ride->type) && !selectionShouldBeExpanded)
|
||||
if (RideTypeDescriptors[ride->type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS) && !selectionShouldBeExpanded)
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(ride->type, rideEntry);
|
||||
const RideGroup* currentRideGroup = RideGroupManager::GetRideGroup(ride->type, currentRideEntry);
|
||||
|
|
|
@ -2543,7 +2543,7 @@ void window_ride_construction_update_enabled_track_pieces()
|
|||
|
||||
int32_t rideType = ride_get_alternative_type(ride);
|
||||
|
||||
if (!gCheatsEnableAllDrawableTrackPieces && RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (!gCheatsEnableAllDrawableTrackPieces && RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(rideType, rideEntry);
|
||||
_enabledRidePieces = rideGroup->AvailableTrackPieces;
|
||||
|
|
|
@ -768,7 +768,7 @@ static void window_track_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
|
|||
static void track_list_load_designs(ride_list_item item)
|
||||
{
|
||||
auto repo = OpenRCT2::GetContext()->GetTrackDesignRepository();
|
||||
if (RideGroupManager::RideTypeHasRideGroups(item.type))
|
||||
if (RideTypeDescriptors[item.type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
auto rideEntry = get_ride_entry(item.entry_index);
|
||||
if (rideEntry != nullptr)
|
||||
|
|
|
@ -52,7 +52,7 @@ GameActionResult::Ptr TrackDesignAction::Query() const
|
|||
}
|
||||
|
||||
// The rest of the cases are handled by the code in ride_create()
|
||||
if (RideGroupManager::RideTypeHasRideGroups(_td.type) && entryIndex == OBJECT_ENTRY_INDEX_NULL)
|
||||
if (RideTypeDescriptors[_td.type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS) && entryIndex == OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
const ObjectRepositoryItem* ori = object_repository_find_object_by_name(rideEntryObject->name);
|
||||
if (ori != nullptr)
|
||||
|
@ -144,7 +144,7 @@ GameActionResult::Ptr TrackDesignAction::Execute() const
|
|||
}
|
||||
|
||||
// The rest of the cases are handled by the code in ride_create()
|
||||
if (RideGroupManager::RideTypeHasRideGroups(_td.type) && entryIndex == OBJECT_ENTRY_INDEX_NULL)
|
||||
if (RideTypeDescriptors[_td.type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS) && entryIndex == OBJECT_ENTRY_INDEX_NULL)
|
||||
{
|
||||
const ObjectRepositoryItem* ori = object_repository_find_object_by_name(rideEntryObject->name);
|
||||
if (ori != nullptr)
|
||||
|
|
|
@ -374,7 +374,7 @@ public:
|
|||
{
|
||||
maxHeight = rideEntry->max_height;
|
||||
}
|
||||
else if (RideGroupManager::RideTypeHasRideGroups(ride->type))
|
||||
else if (RideTypeDescriptors[ride->type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(ride->type, rideEntry);
|
||||
maxHeight = rideGroup->MaximumHeight;
|
||||
|
|
|
@ -462,7 +462,7 @@ private:
|
|||
return false;
|
||||
}
|
||||
|
||||
if (RideGroupManager::RideTypeHasRideGroups(ride->type))
|
||||
if (RideTypeDescriptors[ride->type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
auto rideEntry = get_ride_entry(ride->subtype);
|
||||
if (rideEntry == nullptr)
|
||||
|
|
|
@ -208,7 +208,7 @@ void research_finish_item(ResearchItem* researchItem)
|
|||
rct_string_id availabilityString;
|
||||
|
||||
// Determine if the ride group this entry belongs to was invented before.
|
||||
if (RideGroupManager::RideTypeHasRideGroups(base_ride_type))
|
||||
if (RideTypeDescriptors[base_ride_type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(base_ride_type, rideEntry);
|
||||
|
||||
|
@ -265,7 +265,8 @@ void research_finish_item(ResearchItem* researchItem)
|
|||
// If a vehicle is the first to be invented for its ride group, show the ride group name.
|
||||
else if (
|
||||
!ride_type_was_invented_before
|
||||
|| (RideGroupManager::RideTypeHasRideGroups(base_ride_type) && !ride_group_was_invented_before))
|
||||
|| (RideTypeDescriptors[base_ride_type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS)
|
||||
&& !ride_group_was_invented_before))
|
||||
{
|
||||
rct_ride_name naming = get_ride_naming(base_ride_type, rideEntry);
|
||||
availabilityString = STR_NEWS_ITEM_RESEARCH_NEW_RIDE_AVAILABLE;
|
||||
|
|
|
@ -5650,7 +5650,7 @@ void Ride::SetNameToDefault()
|
|||
*/
|
||||
rct_ride_name get_ride_naming(const uint8_t rideType, rct_ride_entry* rideEntry)
|
||||
{
|
||||
if (RideGroupManager::RideTypeHasRideGroups(rideType))
|
||||
if (RideTypeDescriptors[rideType].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
const RideGroup* rideGroup = RideGroupManager::GetRideGroup(rideType, rideEntry);
|
||||
return rideGroup->Naming;
|
||||
|
@ -7803,7 +7803,7 @@ size_t Ride::FormatNameTo(void* argsV) const
|
|||
rideTypeName = rideEntry->naming.name;
|
||||
}
|
||||
}
|
||||
else if (RideGroupManager::RideTypeHasRideGroups(type))
|
||||
else if (RideTypeDescriptors[type].HasFlag(RIDE_TYPE_FLAG_HAS_RIDE_GROUPS))
|
||||
{
|
||||
auto rideEntry = GetRideEntry();
|
||||
if (rideEntry != nullptr)
|
||||
|
|
|
@ -204,6 +204,7 @@ enum ride_type_flags : uint64_t
|
|||
RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY = (1ULL << 48),
|
||||
RIDE_TYPE_FLAG_SUPPORTS_LEVEL_CROSSINGS = (1ULL << 49),
|
||||
RIDE_TYPE_FLAG_IS_SUSPENDED = (1ULL << 50),
|
||||
RIDE_TYPE_FLAG_HAS_RIDE_GROUPS = (1ULL << 51),
|
||||
};
|
||||
|
||||
// Set on ride types that have a main colour, additional colour and support colour.
|
||||
|
|
|
@ -224,21 +224,6 @@ const RideGroup* RideGroupManager::GetRideGroup(const uint8_t rideType, const rc
|
|||
}
|
||||
}
|
||||
|
||||
bool RideGroupManager::RideTypeHasRideGroups(const uint8_t rideType)
|
||||
{
|
||||
switch (rideType)
|
||||
{
|
||||
case RIDE_TYPE_CORKSCREW_ROLLER_COASTER:
|
||||
case RIDE_TYPE_JUNIOR_ROLLER_COASTER:
|
||||
case RIDE_TYPE_CAR_RIDE:
|
||||
case RIDE_TYPE_TWISTER_ROLLER_COASTER:
|
||||
case RIDE_TYPE_STEEL_WILD_MOUSE:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
const RideGroup* RideGroupManager::RideGroupFind(const uint8_t rideType, const uint8_t index)
|
||||
{
|
||||
if (index >= MAX_RIDE_GROUPS_PER_RIDE_TYPE)
|
||||
|
|
|
@ -32,7 +32,6 @@ class RideGroupManager
|
|||
{
|
||||
public:
|
||||
static const RideGroup* GetRideGroup(const uint8_t trackType, const rct_ride_entry* rideEntry);
|
||||
static bool RideTypeHasRideGroups(const uint8_t trackType);
|
||||
static const RideGroup* RideGroupFind(const uint8_t rideType, const uint8_t index);
|
||||
|
||||
static const std::vector<const char*> GetPreferredRideEntryOrder(const uint8_t rideType);
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr const RideTypeDescriptor CorkscrewRollerCoasterRTD =
|
|||
SET_FIELD(TrackPaintFunction, get_track_paint_function_corkscrew_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_HAS_LARGE_CURVES |
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
|
||||
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
|
||||
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
|
||||
SET_FIELD(LiftData, { SoundId::LiftArrow, 4, 6 }),
|
||||
|
|
|
@ -23,7 +23,8 @@ constexpr const RideTypeDescriptor JuniorRollerCoasterRTD =
|
|||
SET_FIELD(TrackPaintFunction, get_track_paint_function_junior_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_HAS_LARGE_CURVES |
|
||||
RIDE_TYPE_FLAG_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
RIDE_TYPE_FLAG_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
|
||||
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
|
||||
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
|
||||
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr const RideTypeDescriptor SteelWildMouseRTD =
|
|||
SET_FIELD(TrackPaintFunction, get_track_paint_function_wild_mouse),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_ALLOW_DOORS_ON_TRACK |
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
|
||||
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
|
||||
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
|
||||
SET_FIELD(LiftData, { SoundId::LiftWildMouse, 4, 6 }),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD =
|
|||
SET_FIELD(TrackPaintFunction, get_track_paint_function_twister_rc),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_HAS_LARGE_CURVES |
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
|
||||
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
|
||||
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
|
||||
SET_FIELD(LiftData, { SoundId::LiftBM, 5, 8 }),
|
||||
|
|
|
@ -25,7 +25,8 @@ constexpr const RideTypeDescriptor CarRideRTD =
|
|||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN |
|
||||
RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR |
|
||||
RIDE_TYPE_FLAG_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT |
|
||||
RIDE_TYPE_FLAG_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT),
|
||||
RIDE_TYPE_FLAG_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER |
|
||||
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_HAS_RIDE_GROUPS),
|
||||
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
|
||||
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
|
||||
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
|
||||
|
|
Loading…
Reference in New Issue