mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #14458 from Gymnasiast/backport-nsf
Backport ride limit refactors from new-save-format
This commit is contained in:
commit
c9943ee11d
|
@ -2702,7 +2702,7 @@ static void window_ride_vehicle_mousedown(rct_window* w, rct_widgetindex widgetI
|
|||
window_ride_show_vehicle_type_dropdown(w, &w->widgets[widgetIndex]);
|
||||
break;
|
||||
case WIDX_VEHICLE_TRAINS_INCREASE:
|
||||
if (ride->num_vehicles < 32)
|
||||
if (ride->num_vehicles < MAX_VEHICLES_PER_RIDE)
|
||||
ride->SetNumVehicles(ride->num_vehicles + 1);
|
||||
break;
|
||||
case WIDX_VEHICLE_TRAINS_DECREASE:
|
||||
|
@ -2710,7 +2710,7 @@ static void window_ride_vehicle_mousedown(rct_window* w, rct_widgetindex widgetI
|
|||
ride->SetNumVehicles(ride->num_vehicles - 1);
|
||||
break;
|
||||
case WIDX_VEHICLE_CARS_PER_TRAIN_INCREASE:
|
||||
if (ride->num_cars_per_train < 255)
|
||||
if (ride->num_cars_per_train < MAX_CARS_PER_TRAIN)
|
||||
ride->SetNumCarsPerVehicle(ride->num_cars_per_train + 1);
|
||||
break;
|
||||
case WIDX_VEHICLE_CARS_PER_TRAIN_DECREASE:
|
||||
|
|
|
@ -1981,7 +1981,7 @@ static void window_ride_construction_entrance_click(rct_window* w)
|
|||
else
|
||||
{
|
||||
gRideEntranceExitPlaceType = ENTRANCE_TYPE_RIDE_ENTRANCE;
|
||||
gRideEntranceExitPlaceRideIndex = w->number & 0xFF;
|
||||
gRideEntranceExitPlaceRideIndex = static_cast<ride_id_t>(w->number);
|
||||
gRideEntranceExitPlaceStationIndex = 0;
|
||||
input_set_flag(INPUT_FLAG_6, true);
|
||||
ride_construction_invalidate_current_track();
|
||||
|
|
|
@ -161,7 +161,7 @@ GameActions::Result::Ptr RideCreateAction::Execute() const
|
|||
ride->num_stations = 0;
|
||||
ride->num_vehicles = 1;
|
||||
ride->proposed_num_vehicles = 32;
|
||||
ride->max_trains = 32;
|
||||
ride->max_trains = MAX_VEHICLES_PER_RIDE;
|
||||
ride->num_cars_per_train = 1;
|
||||
ride->proposed_num_cars_per_train = 12;
|
||||
ride->min_waiting_time = 10;
|
||||
|
|
|
@ -259,11 +259,12 @@ GameActions::Result::Ptr TrackDesignAction::Execute() const
|
|||
ride->track_colour[i].supports = _td.track_support_colour[i];
|
||||
}
|
||||
|
||||
for (int32_t i = 0; i <= MAX_VEHICLES_PER_RIDE; i++)
|
||||
for (size_t i = 0; i <= MAX_VEHICLES_PER_RIDE; i++)
|
||||
{
|
||||
ride->vehicle_colours[i].Body = _td.vehicle_colours[i].body_colour;
|
||||
ride->vehicle_colours[i].Trim = _td.vehicle_colours[i].trim_colour;
|
||||
ride->vehicle_colours[i].Ternary = _td.vehicle_additional_colour[i];
|
||||
auto tdIndex = std::min(i, std::size(_td.vehicle_colours) - 1);
|
||||
ride->vehicle_colours[i].Body = _td.vehicle_colours[tdIndex].body_colour;
|
||||
ride->vehicle_colours[i].Trim = _td.vehicle_colours[tdIndex].trim_colour;
|
||||
ride->vehicle_colours[i].Ternary = _td.vehicle_additional_colour[tdIndex];
|
||||
}
|
||||
|
||||
for (int32_t count = 1; count == 1 || r->Error != GameActions::Status::Ok; ++count)
|
||||
|
|
|
@ -212,7 +212,7 @@ private:
|
|||
}
|
||||
}
|
||||
// Set remaining vehicles to same colour as first vehicle
|
||||
for (int32_t i = RCT1_MAX_TRAINS_PER_RIDE; i <= MAX_VEHICLES_PER_RIDE; i++)
|
||||
for (size_t i = RCT1_MAX_TRAINS_PER_RIDE; i < std::size(td->vehicle_colours); i++)
|
||||
{
|
||||
td->vehicle_colours[i] = td->vehicle_colours[0];
|
||||
td->vehicle_additional_colour[i] = td->vehicle_additional_colour[0];
|
||||
|
|
|
@ -3095,7 +3095,7 @@ vehicle_colour ride_get_vehicle_colour(Ride* ride, int32_t vehicleIndex)
|
|||
vehicle_colour result;
|
||||
|
||||
// Prevent indexing array out of bounds
|
||||
vehicleIndex = std::min(vehicleIndex, MAX_CARS_PER_TRAIN);
|
||||
vehicleIndex = std::min<int32_t>(vehicleIndex, MAX_CARS_PER_TRAIN);
|
||||
|
||||
result.main = ride->vehicle_colours[vehicleIndex].Body;
|
||||
result.additional_1 = ride->vehicle_colours[vehicleIndex].Trim;
|
||||
|
@ -6402,7 +6402,7 @@ void Ride::UpdateMaxVehicles()
|
|||
{
|
||||
case RideMode::ContinuousCircuitBlockSectioned:
|
||||
case RideMode::PoweredLaunchBlockSectioned:
|
||||
maxNumTrains = std::clamp(num_stations + num_block_brakes - 1, 1, 31);
|
||||
maxNumTrains = std::clamp<int32_t>(num_stations + num_block_brakes - 1, 1, MAX_VEHICLES_PER_RIDE);
|
||||
break;
|
||||
case RideMode::ReverseInclineLaunchedShuttle:
|
||||
case RideMode::PoweredLaunchPasstrough:
|
||||
|
@ -6434,7 +6434,7 @@ void Ride::UpdateMaxVehicles()
|
|||
if ((mode != RideMode::StationToStation && mode != RideMode::ContinuousCircuit)
|
||||
|| !(GetRideTypeDescriptor().HasFlag(RIDE_TYPE_FLAG_ALLOW_MORE_VEHICLES_THAN_STATION_FITS)))
|
||||
{
|
||||
maxNumTrains = std::min(maxNumTrains, 31);
|
||||
maxNumTrains = std::min(maxNumTrains, int32_t(MAX_VEHICLES_PER_RIDE));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6463,7 +6463,7 @@ void Ride::UpdateMaxVehicles()
|
|||
{
|
||||
maxNumTrains++;
|
||||
length += totalSpacing;
|
||||
} while (maxNumTrains < 31 && length < trackLength);
|
||||
} while (maxNumTrains < MAX_VEHICLES_PER_RIDE && length < trackLength);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -6482,7 +6482,7 @@ void Ride::UpdateMaxVehicles()
|
|||
|
||||
if (gCheatsDisableTrainLengthLimit)
|
||||
{
|
||||
maxNumTrains = 31;
|
||||
maxNumTrains = MAX_VEHICLES_PER_RIDE;
|
||||
}
|
||||
numVehicles = std::min(proposed_num_vehicles, static_cast<uint8_t>(maxNumTrains));
|
||||
|
||||
|
|
|
@ -36,12 +36,13 @@ struct Vehicle;
|
|||
// The max number of different types of vehicle.
|
||||
// Examples of vehicles here are the locomotive, tender and carriage of the Miniature Railway.
|
||||
#define MAX_VEHICLES_PER_RIDE_ENTRY 4
|
||||
#define MAX_VEHICLES_PER_RIDE 31
|
||||
constexpr const uint8_t MAX_VEHICLES_PER_RIDE = 31;
|
||||
constexpr const uint8_t MAX_CARS_PER_TRAIN = 255;
|
||||
constexpr const uint8_t MAX_VEHICLE_COLOURS = std::max(MAX_CARS_PER_TRAIN, MAX_VEHICLES_PER_RIDE);
|
||||
#define NUM_COLOUR_SCHEMES 4
|
||||
#define MAX_CATEGORIES_PER_RIDE 2
|
||||
#define DOWNTIME_HISTORY_SIZE 8
|
||||
#define CUSTOMER_HISTORY_SIZE 10
|
||||
#define MAX_CARS_PER_TRAIN 255
|
||||
#define MAX_STATIONS 4
|
||||
#define MAX_RIDES 255
|
||||
#define RIDE_TYPE_NULL 255
|
||||
|
@ -215,7 +216,7 @@ struct Ride
|
|||
ObjectEntryIndex subtype;
|
||||
RideMode mode;
|
||||
uint8_t colour_scheme_type;
|
||||
VehicleColour vehicle_colours[MAX_CARS_PER_TRAIN];
|
||||
VehicleColour vehicle_colours[MAX_VEHICLE_COLOURS];
|
||||
// 0 = closed, 1 = open, 2 = test
|
||||
uint8_t status;
|
||||
std::string custom_name;
|
||||
|
|
Loading…
Reference in New Issue