1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-20 21:43:06 +01:00

Implement cleaner method for checking mode availability

This commit is contained in:
Gymnasiast
2022-08-03 19:42:43 +02:00
parent 293370c3c5
commit b54ef13c4f
3 changed files with 7 additions and 2 deletions

View File

@@ -551,8 +551,7 @@ GameActions::Result TrackPlaceAction::Execute() const
RideMode newMode = RideMode::ContinuousCircuitBlockSectioned;
if (ride->mode == RideMode::PoweredLaunch)
{
if (ride->GetRideTypeDescriptor().RideModes
& (1ULL << static_cast<uint8_t>(RideMode::PoweredLaunchBlockSectioned))
if (ride->GetRideTypeDescriptor().SupportsRideMode(RideMode::PoweredLaunchBlockSectioned)
|| gCheatsShowAllOperatingModes)
newMode = RideMode::PoweredLaunchBlockSectioned;
else

View File

@@ -376,6 +376,11 @@ ResearchCategory RideTypeDescriptor::GetResearchCategory() const
return ResearchCategory::Transport;
}
bool RideTypeDescriptor::SupportsRideMode(RideMode rideMode) const
{
return RideModes & EnumToFlag(rideMode);
}
static RideTrackGroup _enabledRidePieces = {};
bool IsTrackEnabled(int32_t trackFlagIndex)

View File

@@ -220,6 +220,7 @@ struct RideTypeDescriptor
void GetAvailableTrackPieces(RideTrackGroup& res) const;
bool SupportsTrackPiece(const uint64_t trackPiece) const;
ResearchCategory GetResearchCategory() const;
bool SupportsRideMode(RideMode rideMode) const;
};
#ifdef _WIN32