Refactor min max cars per train from nsf (#15911)

This commit is contained in:
Duncan
2021-11-14 20:58:44 +00:00
committed by GitHub
parent f84c5616e5
commit 5d2a56525f
7 changed files with 18 additions and 48 deletions

View File

@@ -2838,10 +2838,10 @@ static OpenRCT2String window_ride_vehicle_tooltip(
auto ft = Formatter();
ft.Increment(16);
ft.Add<uint16_t>(std::max(uint8_t(1), ride->GetMaxCarsPerTrain()) - rideEntry->zero_cars);
ft.Add<uint16_t>(std::max(uint8_t(1), ride->MaxCarsPerTrain) - rideEntry->zero_cars);
rct_string_id stringId = GetRideComponentName(RideComponentType::Car).singular;
if (ride->GetMaxCarsPerTrain() - rideEntry->zero_cars > 1)
if (ride->MaxCarsPerTrain - rideEntry->zero_cars > 1)
{
stringId = GetRideComponentName(RideComponentType::Car).plural;
}

View File

@@ -292,8 +292,8 @@ GameActions::Result::Ptr RideCreateAction::Execute() const
ride->num_circuits = 1;
ride->mode = ride->GetDefaultMode();
ride->SetMinCarsPerTrain(rideEntry->min_cars_in_train);
ride->SetMaxCarsPerTrain(rideEntry->max_cars_in_train);
ride->MinCarsPerTrain = rideEntry->min_cars_in_train;
ride->MaxCarsPerTrain = rideEntry->max_cars_in_train;
ride_set_vehicle_colours_to_random_preset(ride, _colour2);
window_invalidate_by_class(WC_RIDE_LIST);

View File

@@ -851,8 +851,8 @@ namespace RCT1
dst->max_waiting_time = src->max_waiting_time;
dst->operation_option = src->operation_option;
dst->num_circuits = 1;
dst->SetMinCarsPerTrain(rideEntry->min_cars_in_train);
dst->SetMaxCarsPerTrain(rideEntry->max_cars_in_train);
dst->MinCarsPerTrain = rideEntry->min_cars_in_train;
dst->MaxCarsPerTrain = rideEntry->max_cars_in_train;
// RCT1 used 5mph / 8 km/h for every lift hill
dst->lift_hill_speed = 5;

View File

@@ -751,8 +751,8 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src)
dst->proposed_num_vehicles = src->proposed_num_vehicles;
dst->proposed_num_cars_per_train = src->proposed_num_cars_per_train;
dst->max_trains = src->max_trains;
dst->SetMinCarsPerTrain(src->GetMinCarsPerTrain());
dst->SetMaxCarsPerTrain(src->GetMaxCarsPerTrain());
dst->SetMinCarsPerTrain(src->MinCarsPerTrain);
dst->SetMaxCarsPerTrain(src->MaxCarsPerTrain);
dst->min_waiting_time = src->min_waiting_time;
dst->max_waiting_time = src->max_waiting_time;

View File

@@ -705,8 +705,8 @@ public:
dst->proposed_num_vehicles = src->proposed_num_vehicles;
dst->proposed_num_cars_per_train = src->proposed_num_cars_per_train;
dst->max_trains = src->max_trains;
dst->SetMinCarsPerTrain(src->GetMinCarsPerTrain());
dst->SetMaxCarsPerTrain(src->GetMaxCarsPerTrain());
dst->MinCarsPerTrain = src->GetMinCarsPerTrain();
dst->MaxCarsPerTrain = src->GetMaxCarsPerTrain();
dst->min_waiting_time = src->min_waiting_time;
dst->max_waiting_time = src->max_waiting_time;

View File

@@ -5008,8 +5008,8 @@ void Ride::UpdateMaxVehicles()
{
int32_t trainLength;
num_cars_per_train = std::max(rideEntry->min_cars_in_train, num_cars_per_train);
SetMinCarsPerTrain(rideEntry->min_cars_in_train);
SetMaxCarsPerTrain(rideEntry->max_cars_in_train);
MinCarsPerTrain = rideEntry->min_cars_in_train;
MaxCarsPerTrain = rideEntry->max_cars_in_train;
// Calculate maximum train length based on smallest station length
auto stationNumTiles = ride_get_smallest_station_length(this);
@@ -5042,8 +5042,8 @@ void Ride::UpdateMaxVehicles()
{
newCarsPerTrain = std::min(maxCarsPerTrain, newCarsPerTrain);
}
SetMaxCarsPerTrain(maxCarsPerTrain);
SetMinCarsPerTrain(rideEntry->min_cars_in_train);
MaxCarsPerTrain = maxCarsPerTrain;
MinCarsPerTrain = rideEntry->min_cars_in_train;
switch (mode)
{
@@ -5121,8 +5121,8 @@ void Ride::UpdateMaxVehicles()
else
{
max_trains = rideEntry->cars_per_flat_ride;
SetMinCarsPerTrain(rideEntry->min_cars_in_train);
SetMaxCarsPerTrain(rideEntry->max_cars_in_train);
MinCarsPerTrain = rideEntry->min_cars_in_train;
MaxCarsPerTrain = rideEntry->max_cars_in_train;
numCarsPerTrain = rideEntry->max_cars_in_train;
maxNumTrains = rideEntry->cars_per_flat_ride;
}
@@ -5750,28 +5750,6 @@ const RideTypeDescriptor& Ride::GetRideTypeDescriptor() const
return ::GetRideTypeDescriptor(type);
}
uint8_t Ride::GetMinCarsPerTrain() const
{
return min_max_cars_per_train >> 4;
}
uint8_t Ride::GetMaxCarsPerTrain() const
{
return min_max_cars_per_train & 0xF;
}
void Ride::SetMinCarsPerTrain(uint8_t newValue)
{
min_max_cars_per_train &= ~0xF0;
min_max_cars_per_train |= (newValue << 4);
}
void Ride::SetMaxCarsPerTrain(uint8_t newValue)
{
min_max_cars_per_train &= ~0x0F;
min_max_cars_per_train |= newValue & 0x0F;
}
uint8_t Ride::GetNumShelteredSections() const
{
return num_sheltered_sections & ShelteredSectionsBits::NumShelteredSectionsMask;

View File

@@ -231,11 +231,8 @@ struct Ride
uint8_t proposed_num_vehicles;
uint8_t proposed_num_cars_per_train;
uint8_t max_trains;
private:
uint8_t min_max_cars_per_train;
public:
uint8_t MinCarsPerTrain;
uint8_t MaxCarsPerTrain;
uint8_t min_waiting_time;
uint8_t max_waiting_time;
union
@@ -459,11 +456,6 @@ public:
std::pair<RideMeasurement*, OpenRCT2String> GetMeasurement();
uint8_t GetMinCarsPerTrain() const;
uint8_t GetMaxCarsPerTrain() const;
void SetMinCarsPerTrain(uint8_t newValue);
void SetMaxCarsPerTrain(uint8_t newValue);
uint8_t GetNumShelteredSections() const;
void IncreaseNumShelteredSections();