diff --git a/distribution/changelog.txt b/distribution/changelog.txt index bb894624ef..7bea5156ea 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.20 (in development) ------------------------------------------------------------------------ +- Feature: [#22905] Add diagonal downward-inclined brakes to hybrid coaster and single rail coaster. - Improved: [#23677] Building new ride track now inherits the colour scheme from the previous piece. - Fix: [#1972, #11679] Vehicles passing by toilets can cause them to glitch (original bug). - Fix: [#9999, #10000, #10001, #10002, #10003] Truncated scenario strings when using Catalan, Czech, Japanese, Polish or Russian. diff --git a/resources/g2/sprites.json b/resources/g2/sprites.json index d3c47c0317..b1c19203e7 100644 --- a/resources/g2/sprites.json +++ b/resources/g2/sprites.json @@ -39926,6 +39926,46 @@ "y": 15, "palette": "keep" }, + { + "path": "track/rmc/brake_gentle_diag_1.png", + "x": -54, + "y": -23 + }, + { + "path": "track/rmc/brake_gentle_diag_2.png", + "x": -24, + "y": -14 + }, + { + "path": "track/rmc/brake_gentle_diag_3.png", + "x": -34, + "y": -23 + }, + { + "path": "track/rmc/brake_gentle_diag_4.png", + "x": -24, + "y": -30 + }, + { + "path": "track/raptor/brake_gentle_diag_1.png", + "x": -32, + "y": -7 + }, + { + "path": "track/raptor/brake_gentle_diag_2.png", + "x": -3, + "y": -6 + }, + { + "path": "track/raptor/brake_gentle_diag_3.png", + "x": -32, + "y": -7 + }, + { + "path": "track/raptor/brake_gentle_diag_4.png", + "x": -3, + "y": -22 + }, { "path": "icons/rotate_view_anti-clockwise.png" } diff --git a/resources/g2/track/raptor/brake_gentle_diag_1.png b/resources/g2/track/raptor/brake_gentle_diag_1.png new file mode 100644 index 0000000000..770b4d57c0 Binary files /dev/null and b/resources/g2/track/raptor/brake_gentle_diag_1.png differ diff --git a/resources/g2/track/raptor/brake_gentle_diag_2.png b/resources/g2/track/raptor/brake_gentle_diag_2.png new file mode 100644 index 0000000000..fc333fdad1 Binary files /dev/null and b/resources/g2/track/raptor/brake_gentle_diag_2.png differ diff --git a/resources/g2/track/raptor/brake_gentle_diag_3.png b/resources/g2/track/raptor/brake_gentle_diag_3.png new file mode 100644 index 0000000000..0a6b0d275f Binary files /dev/null and b/resources/g2/track/raptor/brake_gentle_diag_3.png differ diff --git a/resources/g2/track/raptor/brake_gentle_diag_4.png b/resources/g2/track/raptor/brake_gentle_diag_4.png new file mode 100644 index 0000000000..5c6a47981b Binary files /dev/null and b/resources/g2/track/raptor/brake_gentle_diag_4.png differ diff --git a/resources/g2/track/rmc/brake_gentle_diag_1.png b/resources/g2/track/rmc/brake_gentle_diag_1.png new file mode 100644 index 0000000000..f809e31255 Binary files /dev/null and b/resources/g2/track/rmc/brake_gentle_diag_1.png differ diff --git a/resources/g2/track/rmc/brake_gentle_diag_2.png b/resources/g2/track/rmc/brake_gentle_diag_2.png new file mode 100644 index 0000000000..4a93920e78 Binary files /dev/null and b/resources/g2/track/rmc/brake_gentle_diag_2.png differ diff --git a/resources/g2/track/rmc/brake_gentle_diag_3.png b/resources/g2/track/rmc/brake_gentle_diag_3.png new file mode 100644 index 0000000000..9aa2e7a7a5 Binary files /dev/null and b/resources/g2/track/rmc/brake_gentle_diag_3.png differ diff --git a/resources/g2/track/rmc/brake_gentle_diag_4.png b/resources/g2/track/rmc/brake_gentle_diag_4.png new file mode 100644 index 0000000000..b2d644b797 Binary files /dev/null and b/resources/g2/track/rmc/brake_gentle_diag_4.png differ diff --git a/src/openrct2-ui/ride/Construction.cpp b/src/openrct2-ui/ride/Construction.cpp index 40bda7c494..61167826f0 100644 --- a/src/openrct2-ui/ride/Construction.cpp +++ b/src/openrct2-ui/ride/Construction.cpp @@ -36,6 +36,7 @@ namespace OpenRCT2 TrackElemType::Brakes, TrackElemType::DiagBrakes, TrackElemType::Down25Brakes, + TrackElemType::DiagDown25Brakes, TrackElemType::BlockBrakes, TrackElemType::DiagBlockBrakes, @@ -216,7 +217,7 @@ namespace OpenRCT2 }; // Update the magic number with the current number of track elements to silence - static_assert(EnumValue(TrackElemType::Count) == 349, "Reminder to add new track element to special dropdown list"); + static_assert(EnumValue(TrackElemType::Count) == 350, "Reminder to add new track element to special dropdown list"); /** * diff --git a/src/openrct2/SpriteIds.h b/src/openrct2/SpriteIds.h index 181fc300eb..9f6b770817 100644 --- a/src/openrct2/SpriteIds.h +++ b/src/openrct2/SpriteIds.h @@ -1702,7 +1702,9 @@ enum : ImageIndex SPR_G2_CORKSCREW_BOOSTER_NE_SW_2, SPR_G2_CORKSCREW_BOOSTER_NW_SE_2, SPR_G2_OPAQUE_WATER_OVERLAY, - SPR_G2_ICON_ROTATE_ANTI_CLOCKWISE = SPR_G2_OPAQUE_WATER_OVERLAY + 5, + SPR_G2_HYBRID_GENTLE_DIAG_BRAKE = SPR_G2_OPAQUE_WATER_OVERLAY + 5, + SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE = SPR_G2_HYBRID_GENTLE_DIAG_BRAKE + 4, + SPR_G2_ICON_ROTATE_ANTI_CLOCKWISE = SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE + 4, SPR_G2_END, diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 0b2f685278..29f6035a3a 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -49,7 +49,7 @@ using namespace OpenRCT2; // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -constexpr uint8_t kNetworkStreamVersion = 1; +constexpr uint8_t kNetworkStreamVersion = 2; const std::string kNetworkStreamID = std::string(kOpenRCT2Version) + "-" + std::to_string(kNetworkStreamVersion); diff --git a/src/openrct2/paint/track/coaster/HybridCoaster.cpp b/src/openrct2/paint/track/coaster/HybridCoaster.cpp index 4f763a93fe..79c49c7117 100644 --- a/src/openrct2/paint/track/coaster/HybridCoaster.cpp +++ b/src/openrct2/paint/track/coaster/HybridCoaster.cpp @@ -14365,6 +14365,67 @@ namespace OpenRCT2::HybridRC PaintUtilSetGeneralSupportHeight(session, height + 56); } + static void TrackDiag25DegDownBrakes( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, GetTrackColour(session).WithIndex(SPR_G2_HYBRID_GENTLE_DIAG_BRAKE + 1), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, GetTrackColour(session).WithIndex(SPR_G2_HYBRID_GENTLE_DIAG_BRAKE + 2), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + WoodenBSupportsPaintSetupRotated( + session, supportType.wooden, WoodenSupportSubType::Corner0, direction, height + 16, session.SupportColours); + PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, GetTrackColour(session).WithIndex(SPR_G2_HYBRID_GENTLE_DIAG_BRAKE), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + WoodenBSupportsPaintSetupRotated( + session, supportType.wooden, WoodenSupportSubType::Corner2, direction, height + 16, session.SupportColours); + PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 3: + switch (direction) + { + case 1: + PaintAddImageAsParentRotated( + session, direction, GetTrackColour(session).WithIndex(SPR_G2_HYBRID_GENTLE_DIAG_BRAKE + 3), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight(session, kSegmentsAll, 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + } + } + TrackPaintFunction GetTrackPaintFunction(OpenRCT2::TrackElemType trackType) { switch (trackType) @@ -14799,6 +14860,8 @@ namespace OpenRCT2::HybridRC return Trackbooster; case TrackElemType::Down25Brakes: return Track25DegDownBrakes; + case TrackElemType::DiagDown25Brakes: + return TrackDiag25DegDownBrakes; default: return TrackPaintFunctionDummy; diff --git a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp index 3a86504b8b..3bfb8ad857 100644 --- a/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp +++ b/src/openrct2/paint/track/coaster/SingleRailRollerCoaster.cpp @@ -19984,6 +19984,105 @@ namespace OpenRCT2::SingleRailRC session, ride, 5 - trackSequence, (direction + 2) & 3, height, trackElement, supportType); } + static void TrackDiag25DegDownBrakes( + PaintSession& session, const Ride& ride, uint8_t trackSequence, uint8_t direction, int32_t height, + const TrackElement& trackElement, SupportType supportType) + { + switch (trackSequence) + { + case 0: + switch (direction) + { + case 3: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE + 1)), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::rightCorner, PaintSegment::centre, PaintSegment::topRightSide, + PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 1: + switch (direction) + { + case 0: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE + 2)), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::topCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::topRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 2: + switch (direction) + { + case 2: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE)), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::bottomCorner, PaintSegment::centre, PaintSegment::bottomLeftSide, + PaintSegment::bottomRightSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + case 3: + switch (direction) + { + case 0: + MetalBSupportsPaintSetup( + session, supportType.metal, MetalSupportPlace::LeftCorner, 8, height, session.SupportColours); + break; + case 1: + PaintAddImageAsParentRotated( + session, direction, session.TrackColours.WithIndex((SPR_G2_SINGLE_RAIL_GENTLE_DIAG_BRAKE + 3)), + { -16, -16, height }, { { -16, -16, height }, { 32, 32, 3 } }); + MetalBSupportsPaintSetup( + session, supportType.metal, MetalSupportPlace::TopCorner, 8, height, session.SupportColours); + break; + case 2: + MetalBSupportsPaintSetup( + session, supportType.metal, MetalSupportPlace::RightCorner, 8, height, session.SupportColours); + break; + case 3: + MetalBSupportsPaintSetup( + session, supportType.metal, MetalSupportPlace::BottomCorner, 8, height, session.SupportColours); + break; + } + PaintUtilSetSegmentSupportHeight( + session, + PaintUtilRotateSegments( + EnumsToFlags( + PaintSegment::leftCorner, PaintSegment::centre, PaintSegment::topLeftSide, + PaintSegment::bottomLeftSide), + direction), + 0xFFFF, 0); + PaintUtilSetGeneralSupportHeight(session, height + 56); + break; + } + } + TrackPaintFunction GetTrackPaintFunction(OpenRCT2::TrackElemType trackType) { switch (trackType) @@ -20483,6 +20582,8 @@ namespace OpenRCT2::SingleRailRC return TrackRightEighthBankToOrthogonalDown25; case TrackElemType::Down25Brakes: return Track25DegDownBrakes; + case TrackElemType::DiagDown25Brakes: + return TrackDiag25DegDownBrakes; default: return TrackPaintFunctionDummy; } diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h index 0d4fafcf72..9f793bc9a7 100644 --- a/src/openrct2/park/ParkFile.h +++ b/src/openrct2/park/ParkFile.h @@ -11,10 +11,10 @@ namespace OpenRCT2 struct GameState_t; // Current version that is saved. - constexpr uint32_t kParkFileCurrentVersion = 50; + constexpr uint32_t kParkFileCurrentVersion = 51; // The minimum version that is forwards compatible with the current version. - constexpr uint32_t kParkFileMinVersion = 50; + constexpr uint32_t kParkFileMinVersion = 51; // The minimum version that is backwards compatible with the current version. // If this is increased beyond 0, uncomment the checks in ParkFile.cpp and Context.cpp! diff --git a/src/openrct2/ride/Ride.cpp b/src/openrct2/ride/Ride.cpp index f57f113fae..35d6d95abf 100644 --- a/src/openrct2/ride/Ride.cpp +++ b/src/openrct2/ride/Ride.cpp @@ -4925,7 +4925,7 @@ OpenRCT2::BitSet RideEntryGetSupportedTrackPieces( {}, // TrackGroup::slopeCurveLargeBanked { SpriteGroupType::SlopeFlat, SpritePrecision::Sprites8 }, // TrackGroup::diagBrakes { SpriteGroupType::SlopeFlat, SpritePrecision::Sprites8 }, // TrackGroup::diagBlockBrakes - { SpriteGroupType::Slopes25, SpritePrecision::Sprites4 }, // TrackGroup::inclinedBrakes + { SpriteGroupType::Slopes25, SpritePrecision::Sprites8 }, // TrackGroup::inclinedBrakes { SpriteGroupType::SlopeFlat, SpritePrecision::Sprites8 }, // TrackGroup::diagBooster { SpriteGroupType::Slopes8, SpritePrecision::Sprites4, SpriteGroupType::Slopes16, SpritePrecision::Sprites4, SpriteGroupType::Slopes25, SpritePrecision::Sprites8, SpriteGroupType::Slopes42, SpritePrecision::Sprites8, diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index a985ab0b3a..2dfe620097 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -638,6 +638,7 @@ bool TrackTypeIsBrakes(OpenRCT2::TrackElemType trackType) case TrackElemType::Brakes: case TrackElemType::DiagBrakes: case TrackElemType::Down25Brakes: + case TrackElemType::DiagDown25Brakes: return true; default: return false; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 74c54313df..ea52f6cd7c 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -616,7 +616,9 @@ namespace OpenRCT2 LeftEighthDiveLoopDownToDiag = 347, RightEighthDiveLoopDownToDiag = 348, - Count = 349, + DiagDown25Brakes = 349, + + Count = 350, None = 65535, }; diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 93f801be70..584bf9d3a6 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -378,6 +378,7 @@ namespace OpenRCT2::TrackMetaData { 4, 1, 0,152, -32, 96 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal { 0, 7,152, 0, -96, -32 }, // TrackElemType::LeftEighthDiveLoopDownToDiag { 0, 4,152, 0, -96, 32 }, // TrackElemType::RightEighthDiveLoopDownToDiag + { 4, 4, 16, 0, -32, 32 } // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackCoordinates) == EnumValue(TrackElemType::Count)); @@ -731,6 +732,7 @@ namespace OpenRCT2::TrackMetaData 165, // TrackElemType::RightEighthDiveLoopUpToOrthogonal 165, // TrackElemType::LeftEighthDiveLoopDownToDiag 165, // TrackElemType::RightEighthDiveLoopDownToDiag + 45, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackPieceLengths) == EnumValue(TrackElemType::Count)); @@ -1086,6 +1088,7 @@ namespace OpenRCT2::TrackMetaData { TrackElemType::LeftEighthDiveLoopDownToDiag, TrackCurve::None }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal { TrackCurve::None, TrackElemType::RightEighthDiveLoopUpToOrthogonal }, // TrackElemType::LeftEighthDiveLoopDownToDiag { TrackCurve::None, TrackElemType::LeftEighthDiveLoopUpToOrthogonal }, // TrackElemType::RightEighthDiveLoopDownToDiag + { TrackElemType::DiagDown25Brakes, TrackElemType::DiagDown25Brakes }, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackCurveChain) == EnumValue(TrackElemType::Count)); @@ -1629,6 +1632,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::None, // TrackElemType::RightEighthDiveLoopUpToOrthogonal TrackElemType::None, // TrackElemType::LeftEighthDiveLoopDownToDiag TrackElemType::None, // TrackElemType::RightEighthDiveLoopDownToDiag + TrackElemType::None, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kAlternativeTrackTypes) == EnumValue(TrackElemType::Count)); @@ -1983,6 +1987,7 @@ namespace OpenRCT2::TrackMetaData 458752, // TrackElemType::RightEighthDiveLoopUpToOrthogonal 458752, // TrackElemType::LeftEighthDiveLoopDownToDiag 458752, // TrackElemType::RightEighthDiveLoopDownToDiag + 109824, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackPricing) == EnumValue(TrackElemType::Count)); @@ -2337,6 +2342,7 @@ namespace OpenRCT2::TrackMetaData TrackElemType::LeftEighthDiveLoopUpToOrthogonal, // TrackElemType::RightEighthDiveLoopUpToOrthogonal TrackElemType::RightEighthDiveLoopDownToDiag, // TrackElemType::LeftEighthDiveLoopDownToDiag TrackElemType::LeftEighthDiveLoopDownToDiag, // TrackElemType::RightEighthDiveLoopDownToDiag + TrackElemType::DiagDown25Brakes, }; static_assert(std::size(kTrackElementMirrorMap) == EnumValue(TrackElemType::Count)); @@ -2691,6 +2697,7 @@ namespace OpenRCT2::TrackMetaData (1 << 0) | (1 << 5), // TrackElemType::RightEighthDiveLoopUpToOrthogonal (1 << 0) | (1 << 5), // TrackElemType::LeftEighthDiveLoopDownToDiag (1 << 0) | (1 << 5), // TrackElemType::RightEighthDiveLoopDownToDiag + (1 << 3), // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kTrackHeightMarkerPositions) == EnumValue(TrackElemType::Count)); @@ -3048,6 +3055,7 @@ namespace OpenRCT2::TrackMetaData /* TrackElemType::RightEighthDiveLoopUpToOrthogonal */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::LeftEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::RightEighthDiveLoopDownToDiag */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::DiagDown25Brakes */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, }; static_assert(std::size(kTrackFlags) == EnumValue(TrackElemType::Count)); // clang-format on @@ -3406,6 +3414,7 @@ namespace OpenRCT2::TrackMetaData { TrackGroup::diveLoop, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 56 }, // TrackElemType::RightEighthDiveLoopUpToOrthogonal { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::LeftEighthDiveLoopDownToDiag { TrackGroup::diveLoop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -56 }, // TrackElemType::RightEighthDiveLoopDownToDiag + { TrackGroup::inclinedBrakes, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagDown25 }; static_assert(std::size(kTrackDefinitions) == EnumValue(TrackElemType::Count)); @@ -3470,7 +3479,7 @@ namespace OpenRCT2::TrackMetaData SpinFunction::R9, SpinFunction::L9, SpinFunction::R9, SpinFunction::L9, SpinFunction::R9, SpinFunction::L9, SpinFunction::R9, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::None, SpinFunction::L9, SpinFunction::R9, SpinFunction::L9, - SpinFunction::R9 + SpinFunction::R9, SpinFunction::None }; static_assert(std::size(kTrackTypeToSpinFunction) == EnumValue(TrackElemType::Count)); @@ -4832,6 +4841,7 @@ namespace OpenRCT2::TrackMetaData STR_DIVE_LOOP_RIGHT, // TrackElemType::RightEighthDiveLoopUpToOrthogonal STR_DIVE_LOOP_LEFT, // TrackElemType::LeftEighthDiveLoopDownToDiag STR_DIVE_LOOP_RIGHT, // TrackElemType::RightEighthDiveLoopDownToDiag + STR_BRAKES, // TrackElemType::DiagDown25Brakes }; static_assert(std::size(kRideConfigurationStringIds) == EnumValue(TrackElemType::Count)); @@ -13049,6 +13059,7 @@ namespace OpenRCT2::TrackMetaData { 6, { kRightEighthDiveLoopDownToDiagSeq0, kRightEighthDiveLoopDownToDiagSeq1, kRightEighthDiveLoopDownToDiagSeq2, kRightEighthDiveLoopDownToDiagSeq3, kRightEighthDiveLoopDownToDiagSeq4, kRightEighthDiveLoopDownToDiagSeq5 } }, + /* TrackElemType::DiagDown25Brakes */ { 4, { kDiagDown25Seq0, kDiagDown25Seq1, kDiagDown25Seq2, kDiagDown25Seq3 } } }; #pragma endregion diff --git a/src/openrct2/ride/VehicleSubpositionData.cpp b/src/openrct2/ride/VehicleSubpositionData.cpp index 79313ae97e..321991e7c9 100644 --- a/src/openrct2/ride/VehicleSubpositionData.cpp +++ b/src/openrct2/ride/VehicleSubpositionData.cpp @@ -31061,6 +31061,7 @@ static constexpr const VehicleInfoList *TrackVehicleInfoListDefault[] = { &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal0 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal1 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal2 , &TrackVehicleInfoRightEighthDiveLoopUpToOrthogonal3 , //TrackElemType::RightEighthDiveLoopUpToOrthogonal &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal0 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal1 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal2 , &TrackVehicleInfoLeftEighthDiveLoopDownToOrthogonal3 , //TrackElemType::LeftEighthDiveLoopDownToOrthogonal &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal0, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal1, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal2, &TrackVehicleInfoRightEighthDiveLoopDownToOrthogonal3, //TrackElemType::RightEighthDiveLoopDownToOrthogonal + &TrackVehicleInfo_916BF6, &TrackVehicleInfo_916D18, &TrackVehicleInfo_916E3A, &TrackVehicleInfo_916F5C, // DiagDown25Brakes }; static_assert(std::size(TrackVehicleInfoListDefault) == VehicleTrackSubpositionSizeDefault);