From 5b641d491786b621dabcdb1e6a0d28e0a0558d8a Mon Sep 17 00:00:00 2001 From: Karst Date: Sat, 3 Jun 2023 19:07:16 +0200 Subject: [PATCH] Add conversion code for backwards compatibility. --- src/openrct2/park/ParkFile.h | 2 +- src/openrct2/ride/Track.cpp | 206 +++++++++++++++++++++++++++++++++++ 2 files changed, 207 insertions(+), 1 deletion(-) diff --git a/src/openrct2/park/ParkFile.h b/src/openrct2/park/ParkFile.h index 3965c43d22..536923e2d2 100644 --- a/src/openrct2/park/ParkFile.h +++ b/src/openrct2/park/ParkFile.h @@ -9,7 +9,7 @@ struct ObjectRepositoryItem; namespace OpenRCT2 { // Current version that is saved. - constexpr uint32_t PARK_FILE_CURRENT_VERSION = 30; + constexpr uint32_t PARK_FILE_CURRENT_VERSION = 31; // The minimum version that is forwards compatible with the current version. constexpr uint32_t PARK_FILE_MIN_VERSION = 30; diff --git a/src/openrct2/ride/Track.cpp b/src/openrct2/ride/Track.cpp index 3bbf1b048b..7101974082 100644 --- a/src/openrct2/ride/Track.cpp +++ b/src/openrct2/ride/Track.cpp @@ -946,6 +946,212 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, track_type_t trackType, return true; } } + else if (rideType == RIDE_TYPE_GIGA_COASTER && parkFileVersion <= 30) + { + switch (trackType) + { + case TrackElemType::Up90: + + case TrackElemType::Down90: + + case TrackElemType::Up60ToUp90: + + case TrackElemType::Down90ToDown60: + + case TrackElemType::Up90ToUp60: + + case TrackElemType::Down60ToDown90: + + case TrackElemType::LeftQuarterTurn1TileUp90: + + case TrackElemType::RightQuarterTurn1TileUp90: + + case TrackElemType::LeftQuarterTurn1TileDown90: + + case TrackElemType::RightQuarterTurn1TileDown90: + + case TrackElemType::LeftBarrelRollUpToDown: + + case TrackElemType::RightBarrelRollUpToDown: + + case TrackElemType::LeftBarrelRollDownToUp: + + case TrackElemType::RightBarrelRollDownToUp: + + case TrackElemType::HalfLoopUp: + + case TrackElemType::HalfLoopDown: + + case TrackElemType::LeftVerticalLoop: + + case TrackElemType::RightVerticalLoop: + + case TrackElemType::LeftCorkscrewUp: + + case TrackElemType::RightCorkscrewUp: + + case TrackElemType::LeftCorkscrewDown: + + case TrackElemType::RightCorkscrewDown: + + case TrackElemType::LeftLargeCorkscrewUp: + + case TrackElemType::RightLargeCorkscrewUp: + + case TrackElemType::LeftLargeCorkscrewDown: + + case TrackElemType::RightLargeCorkscrewDown: + + case TrackElemType::LeftZeroGRollUp: + + case TrackElemType::RightZeroGRollUp: + + case TrackElemType::LeftZeroGRollDown: + + case TrackElemType::RightZeroGRollDown: + + case TrackElemType::LeftLargeZeroGRollUp: + + case TrackElemType::RightLargeZeroGRollUp: + + case TrackElemType::LeftLargeZeroGRollDown: + + case TrackElemType::RightLargeZeroGRollDown: + + case TrackElemType::Up90ToInvertedFlatQuarterLoop: + + case TrackElemType::InvertedFlatToDown90QuarterLoop: + + case TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25: + + case TrackElemType::RightBankToRightQuarterTurn3TilesUp25: + + case TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank: + + case TrackElemType::RightQuarterTurn3TilesDown25ToRightBank: + + case TrackElemType::LeftMediumHalfLoopUp: + + case TrackElemType::RightMediumHalfLoopUp: + + case TrackElemType::LeftMediumHalfLoopDown: + + case TrackElemType::RightMediumHalfLoopDown: + + case TrackElemType::LeftLargeHalfLoopUp: + + case TrackElemType::RightLargeHalfLoopUp: + + case TrackElemType::RightLargeHalfLoopDown: + + case TrackElemType::LeftLargeHalfLoopDown: + + case TrackElemType::FlatToUp60: + + case TrackElemType::Up60ToFlat: + + case TrackElemType::FlatToDown60: + + case TrackElemType::Down60ToFlat: + + case TrackElemType::DiagFlatToUp60: + + case TrackElemType::DiagUp60ToFlat: + + case TrackElemType::DiagFlatToDown60: + + case TrackElemType::DiagDown60ToFlat: + + case TrackElemType::LeftEighthToDiagUp25: + + case TrackElemType::RightEighthToDiagUp25: + + case TrackElemType::LeftEighthToDiagDown25: + + case TrackElemType::RightEighthToDiagDown25: + + case TrackElemType::LeftEighthToOrthogonalUp25: + + case TrackElemType::RightEighthToOrthogonalUp25: + + case TrackElemType::LeftEighthToOrthogonalDown25: + + case TrackElemType::RightEighthToOrthogonalDown25: + + case TrackElemType::DiagUp25ToLeftBankedUp25: + + case TrackElemType::DiagUp25ToRightBankedUp25: + + case TrackElemType::DiagLeftBankedUp25ToUp25: + + case TrackElemType::DiagRightBankedUp25ToUp25: + + case TrackElemType::DiagDown25ToLeftBankedDown25: + + case TrackElemType::DiagDown25ToRightBankedDown25: + + case TrackElemType::DiagLeftBankedDown25ToDown25: + + case TrackElemType::DiagRightBankedDown25ToDown25: + + case TrackElemType::DiagLeftBankedFlatToLeftBankedUp25: + + case TrackElemType::DiagRightBankedFlatToRightBankedUp25: + + case TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat: + + case TrackElemType::DiagRightBankedUp25ToRightBankedFlat: + + case TrackElemType::DiagLeftBankedFlatToLeftBankedDown25: + + case TrackElemType::DiagRightBankedFlatToRightBankedDown25: + + case TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat: + + case TrackElemType::DiagRightBankedDown25ToRightBankedFlat: + + case TrackElemType::DiagUp25LeftBanked: + + case TrackElemType::DiagUp25RightBanked: + + case TrackElemType::DiagDown25LeftBanked: + + case TrackElemType::DiagDown25RightBanked: + + case TrackElemType::DiagFlatToLeftBankedUp25: + + case TrackElemType::DiagFlatToRightBankedUp25: + + case TrackElemType::DiagLeftBankedUp25ToFlat: + + case TrackElemType::DiagRightBankedUp25ToFlat: + + case TrackElemType::DiagFlatToLeftBankedDown25: + + case TrackElemType::DiagFlatToRightBankedDown25: + + case TrackElemType::DiagLeftBankedDown25ToFlat: + + case TrackElemType::DiagRightBankedDown25ToFlat: + + case TrackElemType::LeftEighthBankToDiagUp25: + + case TrackElemType::RightEighthBankToDiagUp25: + + case TrackElemType::LeftEighthBankToDiagDown25: + + case TrackElemType::RightEighthBankToDiagDown25: + + case TrackElemType::LeftEighthBankToOrthogonalUp25: + + case TrackElemType::RightEighthBankToOrthogonalUp25: + + case TrackElemType::LeftEighthBankToOrthogonalDown25: + + case TrackElemType::RightEighthBankToOrthogonalDown25: + return true; + } + } return false; }