mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #21009 from Gymnasiast/refactor/covered-drawers
Split up drawing functions for covered track elements
This commit is contained in:
commit
35a690bfa4
|
@ -981,7 +981,8 @@
|
|||
<ClCompile Include="ride\VehicleRiderControl.cpp" />
|
||||
<ClCompile Include="ride\VehicleSubpositionData.cpp" />
|
||||
<ClCompile Include="ride\water\BoatHire.cpp" />
|
||||
<ClCompile Include="ride\water\DingySlide.cpp" />
|
||||
<ClCompile Include="ride\water\DinghySlide.cpp" />
|
||||
<ClCompile Include="ride\water\DinghySlideCovered.cpp" />
|
||||
<ClCompile Include="ride\water\LogFlume.cpp" />
|
||||
<ClCompile Include="ride\water\RiverRapids.cpp" />
|
||||
<ClCompile Include="ride\water\SplashBoats.cpp" />
|
||||
|
@ -1059,4 +1060,4 @@
|
|||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
</Project>
|
||||
</Project>
|
||||
|
|
|
@ -267,6 +267,24 @@ enum class RideConstructionWindowContext : uint8_t
|
|||
Maze,
|
||||
};
|
||||
|
||||
struct TrackDrawerDescriptor
|
||||
{
|
||||
TRACK_PAINT_FUNCTION_GETTER Regular;
|
||||
TRACK_PAINT_FUNCTION_GETTER Covered;
|
||||
|
||||
constexpr TrackDrawerDescriptor(TRACK_PAINT_FUNCTION_GETTER function)
|
||||
: Regular(function)
|
||||
, Covered(nullptr)
|
||||
{
|
||||
}
|
||||
|
||||
constexpr TrackDrawerDescriptor(TRACK_PAINT_FUNCTION_GETTER functionRegular, TRACK_PAINT_FUNCTION_GETTER functionCovered)
|
||||
: Regular(functionRegular)
|
||||
, Covered(functionCovered)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct RideTypeDescriptor
|
||||
{
|
||||
uint8_t AlternateType;
|
||||
|
@ -279,7 +297,7 @@ struct RideTypeDescriptor
|
|||
RideTrackGroup CoveredTrackPieces;
|
||||
/** rct2: 0x0097CC68 */
|
||||
track_type_t StartTrackPiece;
|
||||
TRACK_PAINT_FUNCTION_GETTER TrackPaintFunction;
|
||||
TrackDrawerDescriptor TrackPaintFunctions;
|
||||
uint64_t Flags;
|
||||
/** rct2: 0x0097C8AC */
|
||||
uint64_t RideModes;
|
||||
|
@ -511,7 +529,7 @@ constexpr RideTypeDescriptor DummyRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, nullptr),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(nullptr)),
|
||||
SET_FIELD(Flags, 0),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit)),
|
||||
SET_FIELD(DefaultMode, RideMode::ContinuousCircuit),
|
||||
|
|
|
@ -669,6 +669,53 @@ bool TrackElementIsCovered(track_type_t trackElementType)
|
|||
}
|
||||
}
|
||||
|
||||
track_type_t UncoverTrackElement(track_type_t trackElementType)
|
||||
{
|
||||
switch (trackElementType)
|
||||
{
|
||||
case TrackElemType::FlatCovered:
|
||||
return TrackElemType::Flat;
|
||||
case TrackElemType::Up25Covered:
|
||||
return TrackElemType::Up25;
|
||||
case TrackElemType::Up60Covered:
|
||||
return TrackElemType::Up60;
|
||||
case TrackElemType::FlatToUp25Covered:
|
||||
return TrackElemType::FlatToUp25;
|
||||
case TrackElemType::Up25ToUp60Covered:
|
||||
return TrackElemType::Up25ToUp60;
|
||||
case TrackElemType::Up60ToUp25Covered:
|
||||
return TrackElemType::Up60ToUp25;
|
||||
case TrackElemType::Up25ToFlatCovered:
|
||||
return TrackElemType::Up25ToFlat;
|
||||
case TrackElemType::Down25Covered:
|
||||
return TrackElemType::Down25;
|
||||
case TrackElemType::Down60Covered:
|
||||
return TrackElemType::Down60;
|
||||
case TrackElemType::FlatToDown25Covered:
|
||||
return TrackElemType::FlatToDown25;
|
||||
case TrackElemType::Down25ToDown60Covered:
|
||||
return TrackElemType::Down25ToDown60;
|
||||
case TrackElemType::Down60ToDown25Covered:
|
||||
return TrackElemType::Down60ToDown25;
|
||||
case TrackElemType::Down25ToFlatCovered:
|
||||
return TrackElemType::Down25ToFlat;
|
||||
case TrackElemType::LeftQuarterTurn5TilesCovered:
|
||||
return TrackElemType::LeftQuarterTurn5Tiles;
|
||||
case TrackElemType::RightQuarterTurn5TilesCovered:
|
||||
return TrackElemType::RightQuarterTurn5Tiles;
|
||||
case TrackElemType::SBendLeftCovered:
|
||||
return TrackElemType::SBendLeft;
|
||||
case TrackElemType::SBendRightCovered:
|
||||
return TrackElemType::SBendRight;
|
||||
case TrackElemType::LeftQuarterTurn3TilesCovered:
|
||||
return TrackElemType::LeftQuarterTurn3Tiles;
|
||||
case TrackElemType::RightQuarterTurn3TilesCovered:
|
||||
return TrackElemType::RightQuarterTurn3Tiles;
|
||||
default:
|
||||
return trackElementType;
|
||||
}
|
||||
}
|
||||
|
||||
bool TrackTypeHasSpeedSetting(track_type_t trackType)
|
||||
{
|
||||
return TrackTypeIsBooster(trackType) || TrackTypeIsBrakes(trackType) || TrackTypeIsBlockBrakes(trackType);
|
||||
|
|
|
@ -679,6 +679,7 @@ void TrackGetBack(const CoordsXYE& input, CoordsXYE* output);
|
|||
void TrackGetFront(const CoordsXYE& input, CoordsXYE* output);
|
||||
|
||||
bool TrackElementIsCovered(track_type_t trackElementType);
|
||||
track_type_t UncoverTrackElement(track_type_t trackElementType);
|
||||
bool TrackTypeIsStation(track_type_t trackType);
|
||||
bool TrackTypeIsBrakes(track_type_t trackType);
|
||||
bool TrackTypeIsBlockBrakes(track_type_t trackType);
|
||||
|
|
|
@ -2254,7 +2254,18 @@ void PaintTrack(PaintSession& session, Direction direction, int32_t height, cons
|
|||
}
|
||||
|
||||
const auto& rtd = GetRideTypeDescriptor(trackElement.GetRideType());
|
||||
TRACK_PAINT_FUNCTION_GETTER paintFunctionGetter = rtd.TrackPaintFunction;
|
||||
auto paintFunctions = rtd.TrackPaintFunctions;
|
||||
TRACK_PAINT_FUNCTION_GETTER paintFunctionGetter;
|
||||
if (TrackElementIsCovered(trackType))
|
||||
{
|
||||
trackType = UncoverTrackElement(trackType);
|
||||
paintFunctionGetter = paintFunctions.Covered;
|
||||
}
|
||||
else
|
||||
{
|
||||
paintFunctionGetter = paintFunctions.Regular;
|
||||
}
|
||||
|
||||
if (paintFunctionGetter != nullptr)
|
||||
{
|
||||
TRACK_PAINT_FUNCTION paintFunction = paintFunctionGetter(trackType);
|
||||
|
|
|
@ -430,6 +430,7 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionBobsleighRC(int32_t trackType);
|
|||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionObservationTower(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionLoopingRC(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionDinghySlide(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionDinghySlideCovered(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionMineTrainRC(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionChairlift(int32_t trackType);
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionCorkscrewRC(int32_t trackType);
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor AirPoweredVerticalCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionAirPoweredVerticalRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionAirPoweredVerticalRC)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch)),
|
||||
SET_FIELD(DefaultMode, RideMode::PoweredLaunchPasstrough),
|
||||
|
|
|
@ -21,7 +21,7 @@ constexpr RideTypeDescriptor AlpineCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_HELIX_UP_BANKED_HALF}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, AlpineRC::GetTrackPaintFunction),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(AlpineRC::GetTrackPaintFunction)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN
|
||||
| RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_CHECK_FOR_STALLING | RIDE_TYPE_FLAG_HAS_TRACK
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor BobsleighCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionBobsleighRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionBobsleighRC)),
|
||||
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_PEEP_CHECK_GFORCES |
|
||||
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor ClassicMiniRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_ON_RIDE_PHOTO}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionJuniorRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionJuniorRC)),
|
||||
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_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor ClassicWoodenRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, 0),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionClassicWoodenRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionClassicWoodenRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor CompactInvertedCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCompactInvertedRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCompactInvertedRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor CorkscrewRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_TWIST}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCorkscrewRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCorkscrewRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor FlyingRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER, TRACK_SLOPE_STEEP_LONG, TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TRACK_FLYING_HALF_LOOP_UNINVERTED_DOWN, TRACK_STATION_END, TRACK_VERTICAL_LOOP, TRACK_POWERED_LIFT}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionFlyingRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionFlyingRC)),
|
||||
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_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES |
|
||||
|
@ -96,7 +96,7 @@ constexpr RideTypeDescriptor FlyingRollerCoasterAltRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_UP, TRACK_FLYING_HALF_LOOP_INVERTED_UP}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, nullptr),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(nullptr)),
|
||||
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_FLAG_START_CONSTRUCTION_INVERTED),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned)),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor GigaCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BARREL_ROLL, TRACK_QUARTER_LOOP, TRACK_HALF_LOOP, TRACK_HALF_LOOP_MEDIUM, TRACK_HALF_LOOP_LARGE, TRACK_VERTICAL_LOOP, TRACK_CORKSCREW, TRACK_CORKSCREW_LARGE, TRACK_ZERO_G_ROLL, TRACK_ZERO_G_ROLL_LARGE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionGigaRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionGigaRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_ALLOW_CABLE_LIFT_HILL |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor HeartlineTwisterCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionHeartlineTwisterRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionHeartlineTwisterRC)),
|
||||
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_PEEP_CHECK_GFORCES |
|
||||
RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS),
|
||||
|
|
|
@ -21,7 +21,7 @@ constexpr RideTypeDescriptor HybridCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, HybridRC::GetTrackPaintFunction),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(HybridRC::GetTrackPaintFunction)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | 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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS),
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor HyperTwisterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, { TRACK_LIFT_HILL_STEEP, TRACK_BRAKE_FOR_DROP, TRACK_BOOSTER, TRACK_POWERED_LIFT }),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Tubes>),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Tubes>)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor HypercoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_VERTICAL_LOOP, TRACK_HALF_LOOP, TRACK_CORKSCREW, TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCorkscrewRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCorkscrewRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor InvertedHairpinCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionInvertedHairpinRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionInvertedHairpinRC)),
|
||||
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_PEEP_CHECK_GFORCES |
|
||||
RIDE_TYPE_FLAG_IS_SUSPENDED),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor InvertedImpulseCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionInvertedImpulseRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionInvertedImpulseRC)),
|
||||
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_PEEP_CHECK_GFORCES |
|
||||
RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor InvertedRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionInvertedRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionInvertedRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG_IS_SUSPENDED |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor JuniorRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_STEEP_UP, TRACK_SLOPE_STEEP_DOWN, TRACK_ON_RIDE_PHOTO}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionJuniorRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionJuniorRC)),
|
||||
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_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LIMLaunchedRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_LONG, TRACK_ZERO_G_ROLL, TRACK_ZERO_G_ROLL_LARGE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLimLaunchedRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLimLaunchedRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LayDownRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_FLYING_HALF_LOOP_UNINVERTED_DOWN, TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLayDownRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLayDownRC)),
|
||||
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_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
|
@ -89,7 +89,7 @@ constexpr RideTypeDescriptor LayDownRollerCoasterAltRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_FLYING_HALF_LOOP_INVERTED_UP, TRACK_STATION_END, TRACK_LIFT_HILL}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, nullptr),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(nullptr)),
|
||||
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),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned)),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LoopingRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_VERTICAL, TRACK_TWIST, TRACK_CORKSCREW, TRACK_CURVE_VERTICAL, TRACK_QUARTER_LOOP, TRACK_SLOPE_LONG, TRACK_BARREL_ROLL, TRACK_HALF_LOOP, TRACK_HALF_LOOP_MEDIUM, TRACK_HALF_LOOP_LARGE,TRACK_CORKSCREW_LARGE, TRACK_ZERO_G_ROLL, TRACK_ZERO_G_ROLL_LARGE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLoopingRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLoopingRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MineRideRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMineRide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMineRide)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MineTrainCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMineTrainRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMineTrainRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MiniRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER, TRACK_LIFT_HILL_CURVED}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MiniSuspendedCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniSuspendedRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniSuspendedRC)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
|
||||
RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MultiDimensionRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMultiDimensionRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMultiDimensionRC)),
|
||||
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_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES |
|
||||
|
@ -94,7 +94,7 @@ constexpr RideTypeDescriptor MultiDimensionRollerCoasterAltRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, nullptr),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(nullptr)),
|
||||
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_FLAG_HAS_SEAT_ROTATION),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned)),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor ReverseFreefallCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionReverseFreefallRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionReverseFreefallRC)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT | RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::LimPoweredLaunch)),
|
||||
SET_FIELD(DefaultMode, RideMode::LimPoweredLaunch),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor ReverserRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionReverserRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionReverserRC)),
|
||||
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_PEEP_CHECK_GFORCES),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit)),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SideFrictionRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSideFrictionRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSideFrictionRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -21,7 +21,7 @@ constexpr RideTypeDescriptor SingleRailRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_STEEP_LONG, TRACK_HALF_LOOP_LARGE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, SingleRailRC::GetTrackPaintFunction),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(SingleRailRC::GetTrackPaintFunction)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | 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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor SpinningWildMouseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_LIFT_HILL_STEEP, TRACK_SLOPE_STEEP_UP, TRACK_SLOPE_STEEP_DOWN, TRACK_SLOPE_CURVE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionWildMouse),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionWildMouse)),
|
||||
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_PEEP_CHECK_GFORCES),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned)),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SpiralRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER, TRACK_LIFT_HILL}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor StandUpRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionStandUpRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionStandUpRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SteelWildMouseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_ROTATION_CONTROL_TOGGLE}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionWildMouse),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionWildMouse)),
|
||||
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),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SteeplechaseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSteeplechase),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSteeplechase)),
|
||||
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_PEEP_CHECK_GFORCES),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SuspendedSwingingCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSuspendedSwingingRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSuspendedSwingingRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_IS_SUSPENDED),
|
||||
|
|
|
@ -25,7 +25,7 @@ constexpr RideTypeDescriptor TwisterRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_LIFT_HILL_STEEP, TRACK_BRAKE_FOR_DROP}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Tubes>),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Tubes>)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -25,7 +25,7 @@ constexpr RideTypeDescriptor VerticalDropCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_HALF_LOOP, TRACK_CORKSCREW, TRACK_BARREL_ROLL, TRACK_POWERED_LIFT, TRACK_HALF_LOOP_LARGE, TRACK_QUARTER_LOOP, TRACK_BOOSTER, TRACK_TWIST}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Boxed>),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionBolligerMabillard<MetalSupportType::Boxed>)),
|
||||
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_PEEP_CHECK_GFORCES),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor VirginiaReelRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionVirginiaReel),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionVirginiaReel)),
|
||||
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_PEEP_CHECK_GFORCES),
|
||||
SET_FIELD(RideModes, EnumsToFlags(RideMode::ContinuousCircuit)),
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor WaterCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_LONG}),
|
||||
SET_FIELD(CoveredTrackPieces, {TrackElemType::Flat, TrackElemType::LeftQuarterTurn5Tiles, TrackElemType::RightQuarterTurn5Tiles, TrackElemType::SBendLeft, TrackElemType::SBendRight}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionWaterRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionWaterRC, GetTrackPaintFunctionSplashBoats)),
|
||||
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_TRACK_ELEMENTS_HAVE_TWO_VARIETIES | RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor WoodenRollerCoasterRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_BOOSTER}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionWoodenRC),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionWoodenRC)),
|
||||
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_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor WoodenWildMouseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionWoodenWildMouse),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionWoodenWildMouse)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS |
|
||||
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
|
||||
RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | RIDE_TYPE_FLAG_ALLOW_DOORS_ON_TRACK |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor CarRideRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE_STEEP_UP, TRACK_SLOPE_STEEP_DOWN, TRACK_RAPIDS}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCarRide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCarRide)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
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 |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor CircusRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCircus),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCircus)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor CrookedHouseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCrookedHouse),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCrookedHouse)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_ALLOW_MUSIC |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor DodgemsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack4x4),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionDodgems),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionDodgems)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_MUSIC_ON_DEFAULT |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor FerrisWheelRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x4C),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionFerrisWheel),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionFerrisWheel)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_ALLOW_MUSIC |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor FlyingSaucersRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack4x4),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionFlyingSaucers),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionFlyingSaucers)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL |
|
||||
RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor GhostTrainRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionGhostTrain),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionGhostTrain)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_G_FORCES | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor HauntedHouseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionHauntedHouse),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionHauntedHouse)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_ALLOW_MUSIC |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MazeRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::Maze),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMaze),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMaze)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_NO_VEHICLES |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY |
|
||||
RIDE_TYPE_FLAG_PEEP_CAN_USE_UMBRELLA | RIDE_TYPE_FLAG_IS_MAZE),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MerryGoRoundRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMerryGoRound),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMerryGoRound)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_MUSIC_ON_DEFAULT |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MiniGolfRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniGolf),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniGolf)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_HAS_ONE_STATION |
|
||||
RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT |
|
||||
RIDE_TYPE_FLAG_SLIGHTLY_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MiniHelicoptersRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SPINNING_TUNNEL}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniHelicopters),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniHelicopters)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
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 |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MonorailCyclesRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMonorailCycles),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMonorailCycles)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS |
|
||||
RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MonsterTrucksRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SPINNING_TUNNEL}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionCarRide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionCarRide)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
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 |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor ObservationTowerRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::TowerBase),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionObservationTower),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionObservationTower)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK |
|
||||
RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SpaceRingsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSpaceRings),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSpaceRings)),
|
||||
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_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_SINGLE_SESSION |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SpiralSlideRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack2x2),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSpiralSlide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSpiralSlide)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | 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_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_ALLOW_MUSIC |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor CashMachineRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionShop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionShop)),
|
||||
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_IS_SHOP_OR_FACILITY |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY),
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor DrinkStallRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionShop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionShop)),
|
||||
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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_SELLS_DRINKS | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor FirstAidRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionFacility),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionFacility)),
|
||||
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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_IS_FIRST_AID | RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor FoodStallRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionShop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionShop)),
|
||||
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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_SELLS_FOOD | RIDE_TYPE_FLAG_LIST_VEHICLES_SEPARATELY |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor InformationKioskRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1B),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionShop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionShop)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | 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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor ShopRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionShop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionShop)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | 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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor ToiletsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x1A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionFacility),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionFacility)),
|
||||
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_SHOP_OR_FACILITY | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor CinemaRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunction3dCinema),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunction3dCinema)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor EnterpriseRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack4x4),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionEnterprise),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionEnterprise)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor GoKartsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionGoKarts),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionGoKarts)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_ONE_STATION |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | 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_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG_INTERESTING_TO_LOOK_AT),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LaunchedFreefallRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::TowerBase),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLaunchedFreefall),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLaunchedFreefall)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_TRACK_NO_WALLS | 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 |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor MagicCarpetRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x4A),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMagicCarpet),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMagicCarpet)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor MotionSimulatorRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack2x2),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMotionsimulator),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMotionsimulator)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_ALLOW_MUSIC |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor RotoDropRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::TowerBase),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionRotoDrop),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionRotoDrop)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SwingingInverterShipRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x4B),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSwingingInverterShip),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSwingingInverterShip)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SwingingShipRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack1x5),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSwingingShip),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSwingingShip)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS |
|
||||
RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor TopSpinRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionTopspin),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionTopspin)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL |
|
||||
RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -22,7 +22,7 @@ constexpr RideTypeDescriptor TwistRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::FlatTrack3x3),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionTwist),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionTwist)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS |
|
||||
RIDE_TYPE_FLAG_VEHICLE_IS_INTEGRAL | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_FLAT_RIDE |
|
||||
RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor ChairliftRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionChairlift),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionChairlift)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK |
|
||||
RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LiftRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::TowerBase),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLift),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLift)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_SINGLE_PIECE_STATION |
|
||||
RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_TRACK_NO_WALLS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_ALLOW_EXTRA_TOWER_BASES | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MiniatureRailwayRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMiniatureRailway),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMiniatureRailway)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor MonorailRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionMonorail),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionMonorail)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor SuspendedMonorailRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSuspendedMonorail),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSuspendedMonorail)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS |
|
||||
RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -30,10 +30,6 @@ enum
|
|||
SPR_DINGHY_SLIDE_STATION_SW_NE = 19732,
|
||||
SPR_DINGHY_SLIDE_STATION_NW_SE = 19733,
|
||||
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE = 19736,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE = 19737,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE = 19738,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE = 19739,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_SW_NE = 19740,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_NW_SE = 19741,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_NE_SW = 19742,
|
||||
|
@ -106,54 +102,7 @@ enum
|
|||
SPR_DINGHY_SLIDE_25_DEG_CHAIN_FRONT_NW_SE = 19809,
|
||||
SPR_DINGHY_SLIDE_25_DEG_CHAIN_FRONT_NE_SW = 19810,
|
||||
SPR_DINGHY_SLIDE_25_DEG_CHAIN_FRONT_SE_NW = 19811,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SW_NE = 19812,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NW_SE = 19813,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NE_SW = 19814,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SE_NW = 19815,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SW_NE = 19816,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NW_SE = 19817,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NE_SW = 19818,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SE_NW = 19819,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SW_NE = 19820,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NW_SE = 19821,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NE_SW = 19822,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SE_NW = 19823,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SW_NE = 19824,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NW_SE = 19825,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NE_SW = 19826,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SE_NW = 19827,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_SW_NE = 19828,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_NW_SE = 19829,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_NE_SW = 19830,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_SE_NW = 19831,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SW_NE = 19832,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NW_SE = 19833,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NE_SW = 19834,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SE_NW = 19835,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SW_NE = 19836,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NW_SE = 19837,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NE_SW = 19838,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SE_NW = 19839,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SW_NE = 19840,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NW_SE = 19841,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NE_SW = 19842,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SE_NW = 19843,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SW_NE = 19844,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NW_SE = 19845,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NE_SW = 19846,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SE_NW = 19847,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SW_NE = 19848,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NW_SE = 19849,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NE_SW = 19850,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SE_NW = 19851,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_SW_NE = 19852,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_NW_SE = 19853,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_NE_SW = 19854,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_SE_NW = 19855,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SW_NE = 19856,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NW_SE = 19857,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NE_SW = 19858,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SE_NW = 19859,
|
||||
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_SW_SE_PART_0 = 19860,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_SW_SE_PART_1 = 19861,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_SW_SE_PART_2 = 19862,
|
||||
|
@ -178,30 +127,7 @@ enum
|
|||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_FRONT_SE_NE_PART_0 = 19881,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_FRONT_SE_NE_PART_1 = 19882,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_FRONT_SE_NE_PART_2 = 19883,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_0 = 19884,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_1 = 19885,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_2 = 19886,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_0 = 19887,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_1 = 19888,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_2 = 19889,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_0 = 19890,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_1 = 19891,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_2 = 19892,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_0 = 19893,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_1 = 19894,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_2 = 19895,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_0 = 19896,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_1 = 19897,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_2 = 19898,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_0 = 19899,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_1 = 19900,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_2 = 19901,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_0 = 19902,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_1 = 19903,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_2 = 19904,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_0 = 19905,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_1 = 19906,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_2 = 19907,
|
||||
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_SW_SE_PART_0 = 19908,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_SW_SE_PART_1 = 19909,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_SW_SE_PART_2 = 19910,
|
||||
|
@ -242,46 +168,7 @@ enum
|
|||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_FRONT_SE_NE_PART_2 = 19945,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_FRONT_SE_NE_PART_3 = 19946,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_FRONT_SE_NE_PART_4 = 19947,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_0 = 19948,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_1 = 19949,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_2 = 19950,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_3 = 19951,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_4 = 19952,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_0 = 19953,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_1 = 19954,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_2 = 19955,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_3 = 19956,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_4 = 19957,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_0 = 19958,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_1 = 19959,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_2 = 19960,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_3 = 19961,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_4 = 19962,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_0 = 19963,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_1 = 19964,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_2 = 19965,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_3 = 19966,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_4 = 19967,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_0 = 19968,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_1 = 19969,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_2 = 19970,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_3 = 19971,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_4 = 19972,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_0 = 19973,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_1 = 19974,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_2 = 19975,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_3 = 19976,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_4 = 19977,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_0 = 19978,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_1 = 19979,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_2 = 19980,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_3 = 19981,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_4 = 19982,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_0 = 19983,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_1 = 19984,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_2 = 19985,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_3 = 19986,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_4 = 19987,
|
||||
|
||||
SPR_DINGHY_SLIDE_S_BEND_SW_SE_SW_SEQ_3 = 19988,
|
||||
SPR_DINGHY_SLIDE_S_BEND_SW_SE_SW_SEQ_2 = 19989,
|
||||
SPR_DINGHY_SLIDE_S_BEND_SW_SE_SW_SEQ_1 = 19990,
|
||||
|
@ -314,38 +201,6 @@ enum
|
|||
SPR_DINGHY_SLIDE_S_BEND_FRONT_SE_SW_SE_SEQ_1 = 20017,
|
||||
SPR_DINGHY_SLIDE_S_BEND_FRONT_SE_SW_SE_SEQ_2 = 20018,
|
||||
SPR_DINGHY_SLIDE_S_BEND_FRONT_SE_SW_SE_SEQ_3 = 20019,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3 = 20020,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2 = 20021,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1 = 20022,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0 = 20023,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0 = 20024,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1 = 20025,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2 = 20026,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3 = 20027,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3 = 20028,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2 = 20029,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1 = 20030,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0 = 20031,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0 = 20032,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1 = 20033,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2 = 20034,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3 = 20035,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 = 20036,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 = 20037,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 = 20038,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 = 20039,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 = 20040,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 = 20041,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 = 20042,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 = 20043,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 = 20044,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 = 20045,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 = 20046,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 = 20047,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 = 20048,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 = 20049,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 = 20050,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 = 20051,
|
||||
};
|
||||
|
||||
static void DinghySlideTrackFlat(
|
||||
|
@ -1149,743 +1004,6 @@ static void DinghySlideTrackLeftQuarterTurn3(
|
|||
DinghySlideTrackRightQuarterTurn3(session, ride, trackSequence, (direction + 1) % 4, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackFlatCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegUpCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack60DegUpCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 56, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackFlatTo25DegUpCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegUpTo60DegUpCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 24, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack60DegUpTo25DegUpCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 24, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegUpToFlatCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_0);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, TUNNEL_12);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 40, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegDownCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrack25DegUpCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack60DegDownCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrack60DegUpCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackFlatTo25DegDownCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrack25DegUpToFlatCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegDownTo60DegDownCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrack60DegUpTo25DegUpCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack25DegDownToFlatCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackFlatTo25DegUpCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackRightQuarterTurn5Covered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr SpriteBb imageIds[4][5] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_1, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_2, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_3, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_4, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 34, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_2, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_3, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_4, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_2, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_3, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_4, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_2, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_3, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_4, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
};
|
||||
static constexpr SpriteBb frontImageIds[4][5] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 30, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_1, { 0, 0, 0 }, { 0, 16, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_2, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_3, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_4, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 34, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_2, { 0, 0, 0 }, { 0, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_3, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_4, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_2, { 0, 0, 0 }, { 16, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_3, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_4, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_2, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_3, { 0, 0, 0 }, { 0, 16, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_4, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
};
|
||||
|
||||
TrackPaintUtilRightQuarterTurn5TilesPaint2(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
|
||||
TrackPaintUtilRightQuarterTurn5TilesPaint2(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
case 6:
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (direction == 0 && trackSequence == 0)
|
||||
{
|
||||
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 0 && trackSequence == 6)
|
||||
{
|
||||
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 1 && trackSequence == 6)
|
||||
{
|
||||
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 3 && trackSequence == 0)
|
||||
{
|
||||
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
|
||||
}
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_CC, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_C4, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 5:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_D4 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C8, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 6:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackLeftQuarterTurn5Covered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
|
||||
DinghySlideTrackRightQuarterTurn5Covered(session, ride, trackSequence, (direction + 1) % 4, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackSBendLeftCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][4][2] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 },
|
||||
},
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
|
||||
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
|
||||
int16_t bboy;
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 1:
|
||||
bboy = (direction == 0 || direction == 1) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 0 || direction == 1)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
|
||||
session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
bboy = (direction == 2 || direction == 3) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 2 || direction == 3)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
|
||||
session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (trackSequence == 0)
|
||||
{
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
else if (trackSequence == 3)
|
||||
{
|
||||
if (direction == 1 || direction == 2)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackSBendRightCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][4][2] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 },
|
||||
},
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
|
||||
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
|
||||
int16_t bboy;
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 1:
|
||||
bboy = (direction == 2 || direction == 3) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 0 || direction == 1)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
|
||||
: MetalSupportPlace::BottomRightSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
bboy = (direction == 0 || direction == 1) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 2 || direction == 3)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
|
||||
: MetalSupportPlace::BottomRightSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (trackSequence == 0)
|
||||
{
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
else if (trackSequence == 3)
|
||||
{
|
||||
if (direction == 1 || direction == 2)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackRightQuarterTurn3Covered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr SpriteBb imageIds[4][3] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_1, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_2, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_2, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_2, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_1, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_2, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
};
|
||||
static constexpr SpriteBb frontImageIds[4][3] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_1, { 0, 0, 0 }, { 16, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_2, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_2, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_2, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_1, { 0, 0, 0 }, { 0, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_2, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
};
|
||||
|
||||
TrackPaintUtilRightQuarterTurn3TilesPaint3(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
|
||||
TrackPaintUtilRightQuarterTurn3TilesPaint3(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
|
||||
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
break;
|
||||
}
|
||||
|
||||
int32_t blockedSegments = 0;
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC;
|
||||
break;
|
||||
case 2:
|
||||
blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0;
|
||||
break;
|
||||
case 3:
|
||||
blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8;
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments, direction), 0xFFFF, 0);
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackLeftQuarterTurn3Covered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];
|
||||
DinghySlideTrackRightQuarterTurn3Covered(session, ride, trackSequence, (direction + 1) % 4, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrack60DegDownTo25DegDownCovered(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrack25DegUpTo60DegUpCovered(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionDinghySlide(int32_t trackType)
|
||||
{
|
||||
switch (trackType)
|
||||
|
@ -1932,44 +1050,6 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionDinghySlide(int32_t trackType)
|
|||
return DinghySlideTrackLeftQuarterTurn3;
|
||||
case TrackElemType::RightQuarterTurn3Tiles:
|
||||
return DinghySlideTrackRightQuarterTurn3;
|
||||
case TrackElemType::FlatCovered:
|
||||
return DinghySlideTrackFlatCovered;
|
||||
case TrackElemType::Up25Covered:
|
||||
return DinghySlideTrack25DegUpCovered;
|
||||
case TrackElemType::Up60Covered:
|
||||
return DinghySlideTrack60DegUpCovered;
|
||||
case TrackElemType::FlatToUp25Covered:
|
||||
return DinghySlideTrackFlatTo25DegUpCovered;
|
||||
case TrackElemType::Up25ToUp60Covered:
|
||||
return DinghySlideTrack25DegUpTo60DegUpCovered;
|
||||
case TrackElemType::Up60ToUp25Covered:
|
||||
return DinghySlideTrack60DegUpTo25DegUpCovered;
|
||||
case TrackElemType::Up25ToFlatCovered:
|
||||
return DinghySlideTrack25DegUpToFlatCovered;
|
||||
case TrackElemType::Down25Covered:
|
||||
return DinghySlideTrack25DegDownCovered;
|
||||
case TrackElemType::Down60Covered:
|
||||
return DinghySlideTrack60DegDownCovered;
|
||||
case TrackElemType::FlatToDown25Covered:
|
||||
return DinghySlideTrackFlatTo25DegDownCovered;
|
||||
case TrackElemType::Down25ToDown60Covered:
|
||||
return DinghySlideTrack25DegDownTo60DegDownCovered;
|
||||
case TrackElemType::Down60ToDown25Covered:
|
||||
return DinghySlideTrack60DegDownTo25DegDownCovered;
|
||||
case TrackElemType::Down25ToFlatCovered:
|
||||
return DinghySlideTrack25DegDownToFlatCovered;
|
||||
case TrackElemType::LeftQuarterTurn5TilesCovered:
|
||||
return DinghySlideTrackLeftQuarterTurn5Covered;
|
||||
case TrackElemType::RightQuarterTurn5TilesCovered:
|
||||
return DinghySlideTrackRightQuarterTurn5Covered;
|
||||
case TrackElemType::SBendLeftCovered:
|
||||
return DinghySlideTrackSBendLeftCovered;
|
||||
case TrackElemType::SBendRightCovered:
|
||||
return DinghySlideTrackSBendRightCovered;
|
||||
case TrackElemType::LeftQuarterTurn3TilesCovered:
|
||||
return DinghySlideTrackLeftQuarterTurn3Covered;
|
||||
case TrackElemType::RightQuarterTurn3TilesCovered:
|
||||
return DinghySlideTrackRightQuarterTurn3Covered;
|
||||
}
|
||||
|
||||
return nullptr;
|
|
@ -0,0 +1,953 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2014-2023 OpenRCT2 developers
|
||||
*
|
||||
* For a complete list of all authors, please refer to contributors.md
|
||||
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
||||
*
|
||||
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../paint/Paint.h"
|
||||
#include "../../paint/Supports.h"
|
||||
#include "../Track.h"
|
||||
#include "../TrackPaint.h"
|
||||
|
||||
enum
|
||||
{
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE = 19736,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE = 19737,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE = 19738,
|
||||
SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE = 19739,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SW_NE = 19812,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NW_SE = 19813,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NE_SW = 19814,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SE_NW = 19815,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SW_NE = 19816,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NW_SE = 19817,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NE_SW = 19818,
|
||||
SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SE_NW = 19819,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SW_NE = 19820,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NW_SE = 19821,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NE_SW = 19822,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SE_NW = 19823,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SW_NE = 19824,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NW_SE = 19825,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NE_SW = 19826,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SE_NW = 19827,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_SW_NE = 19828,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_NW_SE = 19829,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_NE_SW = 19830,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_SE_NW = 19831,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SW_NE = 19832,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NW_SE = 19833,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NE_SW = 19834,
|
||||
SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SE_NW = 19835,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SW_NE = 19836,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NW_SE = 19837,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NE_SW = 19838,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SE_NW = 19839,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SW_NE = 19840,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NW_SE = 19841,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NE_SW = 19842,
|
||||
SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SE_NW = 19843,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SW_NE = 19844,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NW_SE = 19845,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NE_SW = 19846,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SE_NW = 19847,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SW_NE = 19848,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NW_SE = 19849,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NE_SW = 19850,
|
||||
SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SE_NW = 19851,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_SW_NE = 19852,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_NW_SE = 19853,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_NE_SW = 19854,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_SE_NW = 19855,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SW_NE = 19856,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NW_SE = 19857,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NE_SW = 19858,
|
||||
SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SE_NW = 19859,
|
||||
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_0 = 19884,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_1 = 19885,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_2 = 19886,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_0 = 19887,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_1 = 19888,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_2 = 19889,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_0 = 19890,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_1 = 19891,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_2 = 19892,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_0 = 19893,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_1 = 19894,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_2 = 19895,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_0 = 19896,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_1 = 19897,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_2 = 19898,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_0 = 19899,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_1 = 19900,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_2 = 19901,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_0 = 19902,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_1 = 19903,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_2 = 19904,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_0 = 19905,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_1 = 19906,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_2 = 19907,
|
||||
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_0 = 19948,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_1 = 19949,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_2 = 19950,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_3 = 19951,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_4 = 19952,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_0 = 19953,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_1 = 19954,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_2 = 19955,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_3 = 19956,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_4 = 19957,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_0 = 19958,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_1 = 19959,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_2 = 19960,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_3 = 19961,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_4 = 19962,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_0 = 19963,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_1 = 19964,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_2 = 19965,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_3 = 19966,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_4 = 19967,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_0 = 19968,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_1 = 19969,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_2 = 19970,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_3 = 19971,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_4 = 19972,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_0 = 19973,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_1 = 19974,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_2 = 19975,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_3 = 19976,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_4 = 19977,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_0 = 19978,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_1 = 19979,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_2 = 19980,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_3 = 19981,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_4 = 19982,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_0 = 19983,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_1 = 19984,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_2 = 19985,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_3 = 19986,
|
||||
SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_4 = 19987,
|
||||
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3 = 20020,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2 = 20021,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1 = 20022,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0 = 20023,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0 = 20024,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1 = 20025,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2 = 20026,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3 = 20027,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3 = 20028,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2 = 20029,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1 = 20030,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0 = 20031,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0 = 20032,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1 = 20033,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2 = 20034,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3 = 20035,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 = 20036,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 = 20037,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 = 20038,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 = 20039,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 = 20040,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 = 20041,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 = 20042,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 = 20043,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 = 20044,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 = 20045,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 = 20046,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 = 20047,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 = 20048,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 = 20049,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 = 20050,
|
||||
SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 = 20051,
|
||||
};
|
||||
|
||||
static void DinghySlideTrackCoveredFlat(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_COVERED_FRONT_NW_SE },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 26 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegUp(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 50 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 8, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 56, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered60DegUp(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 98 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 32, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 56, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 104, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredFlatTo25DegUp(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_FLAT_TO_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 42 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 3, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 48, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegUpTo60DegUp(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_60_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 12, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 24, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered60DegUpTo25DegUp(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SW_NE, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NW_SE, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_NE_SW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_SE_NW, SPR_DINGHY_SLIDE_60_DEG_TO_25_DEG_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 66 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 20, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_1);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 24, TUNNEL_2);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 72, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegUpToFlat(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][2] = {
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SW_NE, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SW_NE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NW_SE, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NW_SE },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_NE_SW, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_NE_SW },
|
||||
{ SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_SE_NW, SPR_DINGHY_SLIDE_25_DEG_TO_FLAT_COVERED_FRONT_SE_NW },
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][0]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 6, height }, { 32, 20, 2 } });
|
||||
|
||||
imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][1]);
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 27, height }, { 32, 1, 34 } });
|
||||
|
||||
if (TrackPaintUtilShouldPaintSupports(session.MapPosition))
|
||||
{
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 6, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height - 8, TUNNEL_0);
|
||||
}
|
||||
else
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height + 8, TUNNEL_12);
|
||||
}
|
||||
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC, direction), 0xFFFF, 0);
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 40, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegDown(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCovered25DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered60DegDown(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCovered60DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredFlatTo25DegDown(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCovered25DegUpToFlat(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegDownTo60DegDown(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCovered60DegUpTo25DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered25DegDownToFlat(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCoveredFlatTo25DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredRightQuarterTurn5(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr SpriteBb imageIds[4][5] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_1, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_2, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_3, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SW_SE_PART_4, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 34, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_2, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_3, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NW_SW_PART_4, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_2, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_3, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_NE_NW_PART_4, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_2, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_3, { 0, 0, 0 }, { 0, 16, 0 }, { 32, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_SE_NE_PART_4, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
};
|
||||
static constexpr SpriteBb frontImageIds[4][5] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 30, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_1, { 0, 0, 0 }, { 0, 16, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_2, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_3, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SW_SE_PART_4, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 34, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_2, { 0, 0, 0 }, { 0, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_3, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NW_SW_PART_4, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_2, { 0, 0, 0 }, { 16, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_3, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_NE_NW_PART_4, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_2, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_3, { 0, 0, 0 }, { 0, 16, 27 }, { 32, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_5_COVERED_FRONT_SE_NE_PART_4, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
};
|
||||
|
||||
TrackPaintUtilRightQuarterTurn5TilesPaint2(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
|
||||
TrackPaintUtilRightQuarterTurn5TilesPaint2(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
case 6:
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (direction == 0 && trackSequence == 0)
|
||||
{
|
||||
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 0 && trackSequence == 6)
|
||||
{
|
||||
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 1 && trackSequence == 6)
|
||||
{
|
||||
PaintUtilPushTunnelLeft(session, height, TUNNEL_0);
|
||||
}
|
||||
if (direction == 3 && trackSequence == 0)
|
||||
{
|
||||
PaintUtilPushTunnelRight(session, height, TUNNEL_0);
|
||||
}
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_CC, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_C4, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 5:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_D4 | SEGMENT_C4 | SEGMENT_D0 | SEGMENT_B8 | SEGMENT_C0 | SEGMENT_C8, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 6:
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredLeftQuarterTurn5(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
trackSequence = mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[trackSequence];
|
||||
DinghySlideTrackCoveredRightQuarterTurn5(session, ride, trackSequence, (direction + 1) % 4, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredSBendLeft(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][4][2] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_SE_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_NW_NE_SEQ_0 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_NW_SW_NW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NW_SW_NW_SEQ_0 },
|
||||
},
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
|
||||
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
|
||||
int16_t bboy;
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 1:
|
||||
bboy = (direction == 0 || direction == 1) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 0 || direction == 1)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
|
||||
session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
bboy = (direction == 2 || direction == 3) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 2 || direction == 3)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::TopRightSide : MetalSupportPlace::TopLeftSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, (direction & 1), height,
|
||||
session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (trackSequence == 0)
|
||||
{
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
else if (trackSequence == 3)
|
||||
{
|
||||
if (direction == 1 || direction == 2)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredSBendRight(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr uint32_t imageIds[4][4][2] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SW_NW_SW_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_NE_SE_NE_SEQ_0 },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_3, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_3 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_2, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_2 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_1, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_1 },
|
||||
{ SPR_DINGHY_SLIDE_S_BEND_COVERED_SE_SW_SE_SEQ_0, SPR_DINGHY_SLIDE_S_BEND_COVERED_FRONT_SE_SW_SE_SEQ_0 },
|
||||
},
|
||||
};
|
||||
|
||||
auto imageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][0]);
|
||||
auto frontImageId = session.TrackColours[SCHEME_TRACK].WithIndex(imageIds[direction][trackSequence][1]);
|
||||
int16_t bboy;
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
case 1:
|
||||
bboy = (direction == 2 || direction == 3) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 0 || direction == 1)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
|
||||
: MetalSupportPlace::BottomRightSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 2:
|
||||
bboy = (direction == 0 || direction == 1) ? 0 : 6;
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, bboy, height }, { 32, 26, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, bboy, height + 27 }, { 32, 26, 0 } });
|
||||
if (direction == 2 || direction == 3)
|
||||
{
|
||||
const auto supportPlace = (direction & 1) ? MetalSupportPlace::BottomLeftSide
|
||||
: MetalSupportPlace::BottomRightSide;
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, supportPlace, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session,
|
||||
PaintUtilRotateSegments(SEGMENT_B4 | SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0, direction),
|
||||
0xFFFF, 0);
|
||||
break;
|
||||
case 3:
|
||||
PaintAddImageAsParentRotated(session, direction, imageId, { 0, 0, height }, { { 0, 2, height }, { 32, 27, 2 } });
|
||||
PaintAddImageAsParentRotated(
|
||||
session, direction, frontImageId, { 0, 0, height }, { { 0, 2, height + 27 }, { 32, 27, 0 } });
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
PaintUtilSetSegmentSupportHeight(
|
||||
session, PaintUtilRotateSegments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (trackSequence == 0)
|
||||
{
|
||||
if (direction == 0 || direction == 3)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
else if (trackSequence == 3)
|
||||
{
|
||||
if (direction == 1 || direction == 2)
|
||||
{
|
||||
PaintUtilPushTunnelRotated(session, direction, height, TUNNEL_0);
|
||||
}
|
||||
}
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredRightQuarterTurn3(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
static constexpr SpriteBb imageIds[4][3] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_1, { 0, 0, 0 }, { 16, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SW_SE_PART_2, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NW_SW_PART_2, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_NE_NW_PART_2, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 0 }, { 20, 32, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_1, { 0, 0, 0 }, { 0, 16, 0 }, { 16, 16, 2 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_SE_NE_PART_2, { 0, 0, 0 }, { 0, 6, 0 }, { 32, 20, 2 } },
|
||||
},
|
||||
};
|
||||
static constexpr SpriteBb frontImageIds[4][3] = {
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_1, { 0, 0, 0 }, { 16, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SW_SE_PART_2, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_1, { 0, 0, 0 }, { 16, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NW_SW_PART_2, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_0, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_1, { 0, 0, 0 }, { 0, 0, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_NE_NW_PART_2, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
},
|
||||
{
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_0, { 0, 0, 0 }, { 6, 0, 27 }, { 20, 32, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_1, { 0, 0, 0 }, { 0, 16, 27 }, { 16, 16, 0 } },
|
||||
{ SPR_DINGHY_SLIDE_QUARTER_TURN_3_COVERED_FRONT_SE_NE_PART_2, { 0, 0, 0 }, { 0, 6, 27 }, { 32, 20, 0 } },
|
||||
},
|
||||
};
|
||||
|
||||
TrackPaintUtilRightQuarterTurn3TilesPaint3(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], imageIds);
|
||||
TrackPaintUtilRightQuarterTurn3TilesPaint3(
|
||||
session, height, direction, trackSequence, session.TrackColours[SCHEME_TRACK], frontImageIds);
|
||||
TrackPaintUtilRightQuarterTurn3TilesTunnel(session, height, direction, trackSequence, TUNNEL_0);
|
||||
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
MetalASupportsPaintSetup(
|
||||
session, MetalSupportType::Tubes, MetalSupportPlace::Centre, 0, height, session.TrackColours[SCHEME_SUPPORTS]);
|
||||
break;
|
||||
}
|
||||
|
||||
int32_t blockedSegments = 0;
|
||||
switch (trackSequence)
|
||||
{
|
||||
case 0:
|
||||
blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_BC;
|
||||
break;
|
||||
case 2:
|
||||
blockedSegments = SEGMENT_D0 | SEGMENT_C4 | SEGMENT_D4 | SEGMENT_C0;
|
||||
break;
|
||||
case 3:
|
||||
blockedSegments = SEGMENT_D4 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_B8;
|
||||
break;
|
||||
}
|
||||
PaintUtilSetSegmentSupportHeight(session, PaintUtilRotateSegments(blockedSegments, direction), 0xFFFF, 0);
|
||||
|
||||
PaintUtilSetGeneralSupportHeight(session, height + 32, 0x20);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCoveredLeftQuarterTurn3(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
trackSequence = mapLeftQuarterTurn3TilesToRightQuarterTurn3Tiles[trackSequence];
|
||||
DinghySlideTrackCoveredRightQuarterTurn3(session, ride, trackSequence, (direction + 1) % 4, height, trackElement);
|
||||
}
|
||||
|
||||
static void DinghySlideTrackCovered60DegDownTo25DegDown(
|
||||
PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height,
|
||||
const TrackElement& trackElement)
|
||||
{
|
||||
DinghySlideTrackCovered25DegUpTo60DegUp(session, ride, trackSequence, (direction + 2) & 3, height, trackElement);
|
||||
}
|
||||
|
||||
TRACK_PAINT_FUNCTION GetTrackPaintFunctionDinghySlideCovered(int32_t trackType)
|
||||
{
|
||||
switch (trackType)
|
||||
{
|
||||
case TrackElemType::Flat:
|
||||
return DinghySlideTrackCoveredFlat;
|
||||
case TrackElemType::Up25:
|
||||
return DinghySlideTrackCovered25DegUp;
|
||||
case TrackElemType::Up60:
|
||||
return DinghySlideTrackCovered60DegUp;
|
||||
case TrackElemType::FlatToUp25:
|
||||
return DinghySlideTrackCoveredFlatTo25DegUp;
|
||||
case TrackElemType::Up25ToUp60:
|
||||
return DinghySlideTrackCovered25DegUpTo60DegUp;
|
||||
case TrackElemType::Up60ToUp25:
|
||||
return DinghySlideTrackCovered60DegUpTo25DegUp;
|
||||
case TrackElemType::Up25ToFlat:
|
||||
return DinghySlideTrackCovered25DegUpToFlat;
|
||||
case TrackElemType::Down25:
|
||||
return DinghySlideTrackCovered25DegDown;
|
||||
case TrackElemType::Down60:
|
||||
return DinghySlideTrackCovered60DegDown;
|
||||
case TrackElemType::FlatToDown25:
|
||||
return DinghySlideTrackCoveredFlatTo25DegDown;
|
||||
case TrackElemType::Down25ToDown60:
|
||||
return DinghySlideTrackCovered25DegDownTo60DegDown;
|
||||
case TrackElemType::Down60ToDown25:
|
||||
return DinghySlideTrackCovered60DegDownTo25DegDown;
|
||||
case TrackElemType::Down25ToFlat:
|
||||
return DinghySlideTrackCovered25DegDownToFlat;
|
||||
case TrackElemType::LeftQuarterTurn5Tiles:
|
||||
return DinghySlideTrackCoveredLeftQuarterTurn5;
|
||||
case TrackElemType::RightQuarterTurn5Tiles:
|
||||
return DinghySlideTrackCoveredRightQuarterTurn5;
|
||||
case TrackElemType::SBendLeft:
|
||||
return DinghySlideTrackCoveredSBendLeft;
|
||||
case TrackElemType::SBendRight:
|
||||
return DinghySlideTrackCoveredSBendRight;
|
||||
case TrackElemType::LeftQuarterTurn3Tiles:
|
||||
return DinghySlideTrackCoveredLeftQuarterTurn3;
|
||||
case TrackElemType::RightQuarterTurn3Tiles:
|
||||
return DinghySlideTrackCoveredRightQuarterTurn3;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
|
@ -398,101 +398,6 @@ TRACK_PAINT_FUNCTION GetTrackPaintFunctionWaterRC(int32_t trackType)
|
|||
return WaterRCTrackDiag25DegDownTo60DegDown;
|
||||
case TrackElemType::DiagDown60ToDown25:
|
||||
return WaterRCTrackDiag60DegDownTo25DegDown;
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// Use Junior RC
|
||||
//////////////////////////////////////////////////////
|
||||
case TrackElemType::LeftQuarterTurn5Tiles:
|
||||
case TrackElemType::RightQuarterTurn5Tiles:
|
||||
case TrackElemType::FlatToLeftBank:
|
||||
case TrackElemType::FlatToRightBank:
|
||||
case TrackElemType::LeftBankToFlat:
|
||||
case TrackElemType::RightBankToFlat:
|
||||
case TrackElemType::BankedLeftQuarterTurn5Tiles:
|
||||
case TrackElemType::BankedRightQuarterTurn5Tiles:
|
||||
case TrackElemType::LeftBankToUp25:
|
||||
case TrackElemType::RightBankToUp25:
|
||||
case TrackElemType::Up25ToLeftBank:
|
||||
case TrackElemType::Up25ToRightBank:
|
||||
case TrackElemType::LeftBankToDown25:
|
||||
case TrackElemType::RightBankToDown25:
|
||||
case TrackElemType::Down25ToLeftBank:
|
||||
case TrackElemType::Down25ToRightBank:
|
||||
case TrackElemType::LeftBank:
|
||||
case TrackElemType::RightBank:
|
||||
case TrackElemType::SBendLeft:
|
||||
case TrackElemType::SBendRight:
|
||||
case TrackElemType::LeftQuarterTurn3Tiles:
|
||||
case TrackElemType::RightQuarterTurn3Tiles:
|
||||
case TrackElemType::LeftBankedQuarterTurn3Tiles:
|
||||
case TrackElemType::RightBankedQuarterTurn3Tiles:
|
||||
case TrackElemType::FlatToUp60:
|
||||
case TrackElemType::Up60ToFlat:
|
||||
case TrackElemType::FlatToDown60:
|
||||
case TrackElemType::Down60ToFlat:
|
||||
case TrackElemType::LeftHalfBankedHelixUpSmall:
|
||||
case TrackElemType::RightHalfBankedHelixUpSmall:
|
||||
case TrackElemType::LeftHalfBankedHelixDownSmall:
|
||||
case TrackElemType::RightHalfBankedHelixDownSmall:
|
||||
case TrackElemType::LeftHalfBankedHelixUpLarge:
|
||||
case TrackElemType::RightHalfBankedHelixUpLarge:
|
||||
case TrackElemType::LeftHalfBankedHelixDownLarge:
|
||||
case TrackElemType::RightHalfBankedHelixDownLarge:
|
||||
case TrackElemType::Brakes:
|
||||
case TrackElemType::LeftEighthToDiag:
|
||||
case TrackElemType::RightEighthToDiag:
|
||||
case TrackElemType::LeftEighthToOrthogonal:
|
||||
case TrackElemType::RightEighthToOrthogonal:
|
||||
case TrackElemType::LeftEighthBankToDiag:
|
||||
case TrackElemType::RightEighthBankToDiag:
|
||||
case TrackElemType::LeftEighthBankToOrthogonal:
|
||||
case TrackElemType::RightEighthBankToOrthogonal:
|
||||
case TrackElemType::DiagFlatToLeftBank:
|
||||
case TrackElemType::DiagFlatToRightBank:
|
||||
case TrackElemType::DiagLeftBankToFlat:
|
||||
case TrackElemType::DiagRightBankToFlat:
|
||||
case TrackElemType::DiagLeftBankToUp25:
|
||||
case TrackElemType::DiagRightBankToUp25:
|
||||
case TrackElemType::DiagUp25ToLeftBank:
|
||||
case TrackElemType::DiagUp25ToRightBank:
|
||||
case TrackElemType::DiagLeftBankToDown25:
|
||||
case TrackElemType::DiagRightBankToDown25:
|
||||
case TrackElemType::DiagDown25ToLeftBank:
|
||||
case TrackElemType::DiagDown25ToRightBank:
|
||||
case TrackElemType::DiagLeftBank:
|
||||
case TrackElemType::DiagRightBank:
|
||||
case TrackElemType::BlockBrakes:
|
||||
case TrackElemType::Booster:
|
||||
return GetTrackPaintFunctionJuniorRC(trackType);
|
||||
|
||||
//////////////////////////////////////////////////////
|
||||
// Use River Rafts
|
||||
//////////////////////////////////////////////////////
|
||||
case TrackElemType::FlatCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Flat);
|
||||
case TrackElemType::LeftQuarterTurn5TilesCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::LeftQuarterTurn5Tiles);
|
||||
case TrackElemType::RightQuarterTurn5TilesCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::RightQuarterTurn5Tiles);
|
||||
case TrackElemType::SBendLeftCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::SBendLeft);
|
||||
case TrackElemType::SBendRightCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::SBendRight);
|
||||
case TrackElemType::FlatToDown25Covered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::FlatToDown25);
|
||||
case TrackElemType::Down25Covered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Down25);
|
||||
case TrackElemType::Down25ToDown60Covered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Down25ToDown60);
|
||||
case TrackElemType::Down60Covered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Down60);
|
||||
case TrackElemType::Down60ToDown25Covered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Down60ToDown25);
|
||||
case TrackElemType::Down25ToFlatCovered:
|
||||
return GetTrackPaintFunctionSplashBoats(TrackElemType::Down25ToFlat);
|
||||
|
||||
case TrackElemType::OnRidePhoto:
|
||||
return GetTrackPaintFunctionJuniorRC(trackType);
|
||||
}
|
||||
return nullptr;
|
||||
return GetTrackPaintFunctionJuniorRC(trackType);
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor BoatHireRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionBoatHire),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionBoatHire)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_TRACK_MUST_BE_ON_WATER |
|
||||
RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_CHECK_FOR_STALLING |
|
||||
RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR | RIDE_TYPE_FLAG_ALLOW_MUSIC | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT),
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor DinghySlideRTD =
|
|||
SET_FIELD(ExtraTrackPieces,{}),
|
||||
SET_FIELD(CoveredTrackPieces, {TrackElemType::Flat, TrackElemType::Up25, TrackElemType::Up60, TrackElemType::FlatToUp25, TrackElemType::Up25ToUp60, TrackElemType::Up60ToUp25, TrackElemType::Up25ToFlat, TrackElemType::Down25, TrackElemType::Down60, TrackElemType::FlatToDown25, TrackElemType::Down25ToDown60, TrackElemType::Down60ToDown25, TrackElemType::Down25ToFlat, TrackElemType::LeftQuarterTurn5Tiles, TrackElemType::RightQuarterTurn5Tiles, TrackElemType::SBendLeft, TrackElemType::SBendRight, TrackElemType::LeftQuarterTurn3Tiles,TrackElemType::RightQuarterTurn3Tiles}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionDinghySlide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionDinghySlide, GetTrackPaintFunctionDinghySlideCovered)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES |
|
||||
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_TRACK_ELEMENTS_HAVE_TWO_VARIETIES |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor LogFlumeRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionLogFlume),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionLogFlume)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_HAS_TRACK |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor RiverRaftsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {TRACK_SLOPE, TRACK_SLOPE_STEEP_DOWN, TRACK_ON_RIDE_PHOTO}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSplashBoats),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSplashBoats)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | 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 |
|
||||
|
|
|
@ -23,7 +23,7 @@ constexpr RideTypeDescriptor RiverRapidsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionRiverRapids),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionRiverRapids)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS |
|
||||
RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor SplashBoatsRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSplashBoats),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSplashBoats)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS |
|
||||
RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS |
|
||||
|
|
|
@ -24,7 +24,7 @@ constexpr RideTypeDescriptor SubmarineRideRTD =
|
|||
SET_FIELD(ExtraTrackPieces, {}),
|
||||
SET_FIELD(CoveredTrackPieces, {}),
|
||||
SET_FIELD(StartTrackPiece, TrackElemType::EndStation),
|
||||
SET_FIELD(TrackPaintFunction, GetTrackPaintFunctionSubmarineRide),
|
||||
SET_FIELD(TrackPaintFunctions, TrackDrawerDescriptor(GetTrackPaintFunctionSubmarineRide)),
|
||||
SET_FIELD(Flags, RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
|
||||
RIDE_TYPE_FLAG_TRACK_MUST_BE_ON_WATER | 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 |
|
||||
|
|
Loading…
Reference in New Issue