1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-20 05:23:04 +01:00

Make pre-existing wooden flat-to-steep pieces invisible

This commit is contained in:
Gymnasiast
2024-09-19 22:19:22 +02:00
parent cd915b72f1
commit c0720d608f
3 changed files with 26 additions and 8 deletions

View File

@@ -66,8 +66,6 @@
#include <string_view>
#include <vector>
constexpr uint32_t BlockBrakeImprovementsVersion = 27;
using namespace OpenRCT2;
namespace OpenRCT2
@@ -1104,7 +1102,7 @@ namespace OpenRCT2
{
it.element->SetInvisible(true);
}
if (os.GetHeader().TargetVersion < BlockBrakeImprovementsVersion)
if (os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
{
if (trackType == TrackElemType::Brakes)
trackElement->SetBrakeClosed(true);
@@ -2102,7 +2100,7 @@ namespace OpenRCT2
cs.ReadWrite(entity.scream_sound_id);
cs.ReadWrite(entity.TrackSubposition);
cs.ReadWrite(entity.NumLaps);
if (cs.GetMode() == OrcaStream::Mode::READING && os.GetHeader().TargetVersion < BlockBrakeImprovementsVersion)
if (cs.GetMode() == OrcaStream::Mode::READING && os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
{
uint8_t brakeSpeed;
cs.ReadWrite(brakeSpeed);
@@ -2132,7 +2130,7 @@ namespace OpenRCT2
entity.SetFlag(VehicleFlags::Crashed);
}
}
if (cs.GetMode() == OrcaStream::Mode::READING && os.GetHeader().TargetVersion < BlockBrakeImprovementsVersion)
if (cs.GetMode() == OrcaStream::Mode::READING && os.GetHeader().TargetVersion < kBlockBrakeImprovementsVersion)
{
entity.BlockBrakeSpeed = kRCT2DefaultBlockBrakeSpeed;
}

View File

@@ -11,7 +11,7 @@ namespace OpenRCT2
struct GameState_t;
// Current version that is saved.
constexpr uint32_t PARK_FILE_CURRENT_VERSION = 36;
constexpr uint32_t PARK_FILE_CURRENT_VERSION = 37;
// The minimum version that is forwards compatible with the current version.
constexpr uint32_t PARK_FILE_MIN_VERSION = 33;
@@ -23,6 +23,12 @@ namespace OpenRCT2
constexpr uint32_t PARK_FILE_MAGIC = 0x4B524150; // PARK
struct IStream;
// As uint16_t, in order to allow comparison with int32_t
constexpr uint16_t kLogFlumeSteepSlopeVersion = 16;
constexpr uint16_t kBlockBrakeImprovementsVersion = 27;
constexpr uint16_t kGigaCoasterInversions = 31;
constexpr uint16_t kWoodenFlatToSteepVersion = 37;
} // namespace OpenRCT2
class ParkFileExporter

View File

@@ -18,6 +18,7 @@
#include "../interface/Viewport.h"
#include "../management/Finance.h"
#include "../network/network.h"
#include "../park/ParkFile.h"
#include "../platform/Platform.h"
#include "../rct1/RCT1.h"
#include "../ride/RideColour.h"
@@ -1007,7 +1008,7 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, track_type_t trackType,
// Lots of Log Flumes exist where the downward slopes are simulated by using other track
// types like the Splash Boats, but not actually made invisible, because they never needed
// to be.
if (rideType == RIDE_TYPE_LOG_FLUME && parkFileVersion <= 15)
if (rideType == RIDE_TYPE_LOG_FLUME && parkFileVersion < kLogFlumeSteepSlopeVersion)
{
if (trackType == TrackElemType::Down25ToDown60 || trackType == TrackElemType::Down60
|| trackType == TrackElemType::Down60ToDown25)
@@ -1015,7 +1016,7 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, track_type_t trackType,
return true;
}
}
else if (rideType == RIDE_TYPE_GIGA_COASTER && parkFileVersion <= 30)
else if (rideType == RIDE_TYPE_GIGA_COASTER && parkFileVersion < kGigaCoasterInversions)
{
switch (trackType)
{
@@ -1122,6 +1123,19 @@ bool TrackTypeMustBeMadeInvisible(ride_type_t rideType, track_type_t trackType,
return true;
}
}
else if (
(rideType == RIDE_TYPE_WOODEN_ROLLER_COASTER || rideType == RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER)
&& parkFileVersion < kWoodenFlatToSteepVersion)
{
switch (trackType)
{
case TrackElemType::FlatToUp60LongBase:
case TrackElemType::Up60ToFlatLongBase:
case TrackElemType::FlatToDown60LongBase:
case TrackElemType::Down60ToFlatLongBase:
return true;
}
}
return false;
}