Merge pull request #5644 from Gymnasiast/max-stations

Add define for number of colour schemes, correct several cases of max stations per ride
This commit is contained in:
Richard Jenkins 2017-06-17 14:32:36 +01:00 committed by GitHub
commit 312adaf8e7
10 changed files with 40 additions and 39 deletions

View File

@ -10363,7 +10363,7 @@ static sint32 guest_path_finding(rct_peep* peep)
sint32 numEntranceStations = 0;
uint8 entranceStations = 0;
for (uint8 stationNum = 0; stationNum < 4; ++stationNum){
for (uint8 stationNum = 0; stationNum < RCT12_MAX_STATIONS_PER_RIDE; ++stationNum){
if (ride->entrances[stationNum] == 0xFFFF) // stationNum has no entrance (so presumably an exit only station).
continue;

View File

@ -889,7 +889,7 @@ private:
}
else
{
for (int i = 0; i < 4; i++)
for (int i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++)
{
dst->track_colour_main[i] = RCT1::GetColour(src->track_colour_main[i]);
dst->track_colour_additional[i] = RCT1::GetColour(src->track_colour_additional[i]);

View File

@ -25,6 +25,7 @@
#define RCT12_MAX_STATIONS_PER_RIDE 4
#define RCT12_MAX_PEEP_SPAWNS 2
#define RCT12_MAX_PARK_ENTRANCES 4
#define RCT12_NUM_COLOUR_SCHEMES 4
#pragma pack(push, 1)

View File

@ -338,7 +338,7 @@ sint32 ride_get_count()
sint32 ride_get_total_queue_length(rct_ride *ride)
{
sint32 i, queueLength = 0;
for (i = 0; i < 4; i++)
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
if (ride->entrances[i] != 0xFFFF)
queueLength += ride->queue_length[i];
return queueLength;
@ -347,7 +347,7 @@ sint32 ride_get_total_queue_length(rct_ride *ride)
sint32 ride_get_max_queue_time(rct_ride *ride)
{
sint32 i, queueTime = 0;
for (i = 0; i < 4; i++)
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
if (ride->entrances[i] != 0xFFFF)
queueTime = max(queueTime, ride->queue_time[i]);
return queueTime;
@ -1069,7 +1069,7 @@ static void ride_remove_vehicles(rct_ride *ride)
ride->vehicles[i] = SPRITE_INDEX_NULL;
}
for (size_t i = 0; i < 4; i++)
for (size_t i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
ride->train_at_station[i] = 255;
}
}
@ -1115,7 +1115,7 @@ void ride_remove_peeps(sint32 rideIndex)
// Find first station
sint32 stationIndex = -1;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] != 0xFFFF) {
stationIndex = i;
break;
@ -1988,7 +1988,7 @@ static void ride_update(sint32 rideIndex)
// Update stations
if (ride->type != RIDE_TYPE_MAZE)
for (sint32 i = 0; i < 4; i++)
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++)
ride_update_station(ride, i);
// Update financial statistics
@ -2154,7 +2154,7 @@ static void ride_spiral_slide_update(rct_ride *ride)
const uint8 current_rotation = get_current_rotation();
// Invalidate something related to station start
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] == 0xFFFF)
continue;
@ -2221,7 +2221,7 @@ static void ride_inspection_update(rct_ride *ride)
ride->lifecycle_flags |= RIDE_LIFECYCLE_DUE_INSPECTION;
ride->mechanic_status = RIDE_MECHANIC_STATUS_CALLING;
ride->inspection_station = 0;
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->exits[i] != 0xFFFF) {
ride->inspection_station = i;
break;
@ -2395,7 +2395,7 @@ void ride_prepare_breakdown(sint32 rideIndex, sint32 breakdownReason)
case BREAKDOWN_SAFETY_CUT_OUT:
case BREAKDOWN_CONTROL_FAILURE:
// Inspect first station with an exit
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->exits[i] != 0xFFFF) {
ride->inspection_station = i;
break;
@ -2436,7 +2436,7 @@ void ride_prepare_breakdown(sint32 rideIndex, sint32 breakdownReason)
case BREAKDOWN_BRAKES_FAILURE:
// Original code generates a random number but does not use it
// Unsure if this was supposed to choose a random station (or random station with an exit)
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
ride->inspection_station = i;
if (ride->exits[i] != 0xFFFF)
break;
@ -3201,7 +3201,7 @@ static sint32 ride_entrance_exit_is_reachable(uint16 coordinate, rct_ride* ride,
static void ride_entrance_exit_connected(rct_ride* ride, sint32 ride_idx)
{
for (sint32 i = 0; i < 4; ++i) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; ++i) {
uint16 station_start = ride->station_starts[i],
entrance = ride->entrances[i],
exit = ride->exits[i];
@ -3967,7 +3967,7 @@ void game_command_set_ride_setting(sint32 *eax, sint32 *ebx, sint32 *ecx, sint32
static sint32 ride_mode_check_valid_station_numbers(rct_ride *ride)
{
uint8 no_stations = 0;
for (uint8 station_index = 0; station_index < 4; ++station_index){
for (uint8 station_index = 0; station_index < RCT12_MAX_STATIONS_PER_RIDE; ++station_index){
if (ride->station_starts[station_index] != 0xFFFF)no_stations++;
}
@ -4000,7 +4000,7 @@ static sint32 ride_mode_check_valid_station_numbers(rct_ride *ride)
*/
static sint32 ride_mode_check_station_present(rct_ride* ride){
sint32 stationIndex = -1;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] != 0xFFFF) {
stationIndex = i;
break;
@ -4036,7 +4036,7 @@ static sint32 ride_check_for_entrance_exit(sint32 rideIndex)
sint32 i;
uint8 entrance = 0;
uint8 exit = 0;
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] == 0xFFFF)
continue;
@ -4077,7 +4077,7 @@ static void sub_6B5952(sint32 rideIndex)
{
rct_ride *ride = get_ride(rideIndex);
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
uint16 xy = ride->entrances[i];
if (xy == 0xFFFF)
continue;
@ -4342,7 +4342,7 @@ static void ride_set_maze_entrance_exit_points(rct_ride *ride)
// Create a list of all the entrance and exit positions
uint16 *position = positions;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->entrances[i] != 0xFFFF) {
*position++ = ride->entrances[i];
}
@ -4821,7 +4821,7 @@ static bool ride_create_vehicles(rct_ride *ride, sint32 rideIndex, rct_xy_elemen
// Initialise station departs
// 006DDDD0:
ride->lifecycle_flags |= RIDE_LIFECYCLE_ON_TRACK;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
ride->station_depart[i] = (ride->station_depart[i] & 0x80) | 1;
}
@ -4911,7 +4911,7 @@ static bool ride_initialise_cable_lift_track(rct_ride *ride, bool isApplying)
{
uint16 xy;
sint32 stationIndex;
for (stationIndex = 0; stationIndex < 4; stationIndex++) {
for (stationIndex = 0; stationIndex < RCT12_MAX_STATIONS_PER_RIDE; stationIndex++) {
xy = ride->station_starts[stationIndex];
if (xy != 0xFFFF) break;
if (stationIndex == 3) {
@ -5091,7 +5091,7 @@ static void loc_6B51C0(sint32 rideIndex)
sint8 entranceOrExit = -1;
sint32 i;
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] == 0xFFFF)
continue;
@ -5847,7 +5847,7 @@ static void ride_set_colour_preset(rct_ride *ride, uint8 index) {
colourPresets = &RideColourPresets[ride->type];
colours = &colourPresets->list[index];
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
ride->track_colour_main[i] = colours->main;
ride->track_colour_additional[i] = colours->additional;
ride->track_colour_supports[i] = colours->supports;
@ -6015,7 +6015,7 @@ foundRideEntry:
ride_set_name_to_vehicle_default(ride, rideEntry);
}
for (size_t i = 0; i < 4; i++) {
for (size_t i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
ride->station_starts[i] = 0xFFFF;
ride->entrances[i] = 0xFFFF;
ride->exits[i] = 0xFFFF;
@ -7205,7 +7205,7 @@ void ride_get_entrance_or_exit_position_from_screen_position(sint32 screenX, sin
direction = mapX < 0 ? 0 : 2;
}
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
mapX = _unkF44188.x + TileDirectionDelta[direction].x;
mapY = _unkF44188.y + TileDirectionDelta[direction].y;
if (mapX >= 0 && mapY >= 0 && mapX < (256 * 32) && mapY < (256 * 32)) {
@ -7359,7 +7359,7 @@ bool ride_are_all_possible_entrances_and_exits_built(rct_ride *ride)
if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_IS_SHOP))
return true;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] == 0xFFFF) continue;
if (ride->entrances[i] == 0xFFFF) {
gGameCommandErrorText = STR_ENTRANCE_NOT_YET_BUILT;
@ -7539,7 +7539,7 @@ uint64 ride_entry_get_supported_track_pieces(rct_ride_entry* rideEntry)
static sint32 ride_get_smallest_station_length(rct_ride *ride)
{
uint32 result = -1;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] != 0xFFFF) {
result = min(result, (uint32)(ride->station_length[i]));
}
@ -7558,7 +7558,7 @@ static sint32 ride_get_track_length(rct_ride *ride)
track_circuit_iterator it;
sint32 x, y, z, trackType, rideIndex, result;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
uint16 xy = ride->station_starts[i];
if (xy == 0xFFFF)
continue;
@ -7949,7 +7949,7 @@ void sub_6CB945(sint32 rideIndex)
{
rct_ride* ride = get_ride(rideIndex);
if (ride->type != RIDE_TYPE_MAZE) {
for (uint8 stationId = 0; stationId < 4; ++stationId) {
for (uint8 stationId = 0; stationId < RCT12_MAX_STATIONS_PER_RIDE; ++stationId) {
if (ride->station_starts[stationId] == 0xFFFF)
continue;
@ -8029,7 +8029,7 @@ void sub_6CB945(sint32 rideIndex)
uint16 locations[9];
uint16 *locationList = locations;
for (uint8 stationId = 0; stationId < 4; ++stationId) {
for (uint8 stationId = 0; stationId < RCT12_MAX_STATIONS_PER_RIDE; ++stationId) {
if (ride->entrances[stationId] != 0xFFFF) {
*locationList++ = ride->entrances[stationId];
ride->entrances[stationId] = 0xFFFF;

View File

@ -339,7 +339,7 @@ static void ride_ratings_begin_proximity_loop()
return;
}
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->station_starts[i] != 0xFFFF) {
gRideRatingsCalcData.station_flags &= ~RIDE_RATING_STATION_FLAG_NO_ENTRANCE;
if (ride->entrances[i] == 0xFFFF) {
@ -1248,7 +1248,7 @@ static sint32 ride_ratings_get_scenery_score(rct_ride *ride)
{
sint32 i;
uint16 stationXY;
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
stationXY = ride->station_starts[i];
if (stationXY != 0xFFFF)
break;

View File

@ -194,7 +194,7 @@ static rct_track_td6 * track_design_open_from_td4(uint8 *src, size_t srcLength)
// Track colours
if (version == 0) {
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
td6->track_spine_colour[i] = rct1_get_colour(td4->track_spine_colour_v0);
td6->track_rail_colour[i] = rct1_get_colour(td4->track_rail_colour_v0);
td6->track_support_colour[i] = rct1_get_colour(td4->track_support_colour_v0);
@ -211,7 +211,7 @@ static rct_track_td6 * track_design_open_from_td4(uint8 *src, size_t srcLength)
}
}
} else {
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
td6->track_spine_colour[i] = rct1_get_colour(td4->track_spine_colour[i]);
td6->track_rail_colour[i] = rct1_get_colour(td4->track_rail_colour[i]);
td6->track_support_colour[i] = rct1_get_colour(td4->track_support_colour[i]);
@ -1349,7 +1349,7 @@ static bool track_design_place_preview(rct_track_td6 *td6, money32 *cost, uint8
ride->entrance_style = td6->entrance_style;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
ride->track_colour_main[i] = td6->track_spine_colour[i];
ride->track_colour_additional[i] = td6->track_rail_colour[i];
ride->track_colour_supports[i] = td6->track_support_colour[i];
@ -1533,7 +1533,7 @@ static money32 place_track_design(sint16 x, sint16 y, sint16 z, uint8 flags, uin
ride->entrance_style = td6->entrance_style;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
ride->track_colour_main[i] = td6->track_spine_colour[i];
ride->track_colour_additional[i] = td6->track_rail_colour[i];
ride->track_colour_supports[i] = td6->track_support_colour[i];

View File

@ -739,7 +739,7 @@ static rct_track_td6 *track_design_save_to_td6(uint8 rideIndex)
td6->vehicle_additional_colour[i] = ride->vehicle_colours_extended[i];
}
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
td6->track_spine_colour[i] = ride->track_colour_main[i];
td6->track_rail_colour[i] = ride->track_colour_additional[i];
td6->track_support_colour[i] = ride->track_colour_supports[i];
@ -1044,7 +1044,7 @@ static bool track_design_save_to_td6_for_tracked_ride(uint8 rideIndex, rct_track
// First entrances, second exits
for (sint32 i = 0; i < 2; i++) {
for (sint32 station_index = 0; station_index < 4; station_index++) {
for (sint32 station_index = 0; station_index < RCT12_MAX_STATIONS_PER_RIDE; station_index++) {
z = ride->station_heights[station_index];
uint16 location;

View File

@ -8499,7 +8499,7 @@ loc_6DCE68:
regs.al = vehicle->track_x >> 5;
regs.ah = vehicle->track_y >> 5;
regs.dl = vehicle->track_z >> 3;
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
if ((uint16)regs.ax != ride->station_starts[i]) {
continue;
}

View File

@ -4147,7 +4147,7 @@ static void window_ride_colour_mousedown(rct_widgetindex widgetIndex, rct_window
switch (widgetIndex) {
case WIDX_TRACK_COLOUR_SCHEME_DROPDOWN:
for (i = 0; i < 4; i++) {
for (i = 0; i < RCT12_NUM_COLOUR_SCHEMES; i++) {
gDropdownItemsFormat[i] = STR_DROPDOWN_MENU_LABEL;
gDropdownItemsArgs[i] = ColourSchemeNames[i];
}

View File

@ -1483,7 +1483,7 @@ void footpath_update_queue_chains()
continue;
}
for (sint32 i = 0; i < 4; i++) {
for (sint32 i = 0; i < RCT12_MAX_STATIONS_PER_RIDE; i++) {
if (ride->entrances[i] == 0xFFFF) {
continue;
}