From ed905f3c688bef4341c5128c19dc8b3a905c1909 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sat, 17 Jun 2017 14:31:48 +0200 Subject: [PATCH] Add define for number of colour schemes, correct several cases of max stations per ride --- src/openrct2/peep/peep.c | 2 +- src/openrct2/rct1/S4Importer.cpp | 2 +- src/openrct2/rct12.h | 1 + src/openrct2/ride/ride.c | 52 +++++++++++++-------------- src/openrct2/ride/ride_ratings.c | 4 +-- src/openrct2/ride/track_design.c | 8 ++--- src/openrct2/ride/track_design_save.c | 4 +-- src/openrct2/ride/vehicle.c | 2 +- src/openrct2/windows/ride.c | 2 +- src/openrct2/world/footpath.c | 2 +- 10 files changed, 40 insertions(+), 39 deletions(-) diff --git a/src/openrct2/peep/peep.c b/src/openrct2/peep/peep.c index c8605d9ced..9bd3d1012a 100644 --- a/src/openrct2/peep/peep.c +++ b/src/openrct2/peep/peep.c @@ -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; diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 8ef3bbc2ee..cc66ed0234 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -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]); diff --git a/src/openrct2/rct12.h b/src/openrct2/rct12.h index e87b143ff8..1910757669 100644 --- a/src/openrct2/rct12.h +++ b/src/openrct2/rct12.h @@ -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) diff --git a/src/openrct2/ride/ride.c b/src/openrct2/ride/ride.c index 118c3fbc07..5d6b68dfd4 100644 --- a/src/openrct2/ride/ride.c +++ b/src/openrct2/ride/ride.c @@ -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; diff --git a/src/openrct2/ride/ride_ratings.c b/src/openrct2/ride/ride_ratings.c index 4232cb3084..c482186385 100644 --- a/src/openrct2/ride/ride_ratings.c +++ b/src/openrct2/ride/ride_ratings.c @@ -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; diff --git a/src/openrct2/ride/track_design.c b/src/openrct2/ride/track_design.c index b2d39a90d1..f4b957745a 100644 --- a/src/openrct2/ride/track_design.c +++ b/src/openrct2/ride/track_design.c @@ -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]; diff --git a/src/openrct2/ride/track_design_save.c b/src/openrct2/ride/track_design_save.c index 783ca88afe..c3bec6369b 100644 --- a/src/openrct2/ride/track_design_save.c +++ b/src/openrct2/ride/track_design_save.c @@ -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; diff --git a/src/openrct2/ride/vehicle.c b/src/openrct2/ride/vehicle.c index d173d35b85..956746199b 100644 --- a/src/openrct2/ride/vehicle.c +++ b/src/openrct2/ride/vehicle.c @@ -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; } diff --git a/src/openrct2/windows/ride.c b/src/openrct2/windows/ride.c index d175ac419c..21d6c08959 100644 --- a/src/openrct2/windows/ride.c +++ b/src/openrct2/windows/ride.c @@ -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]; } diff --git a/src/openrct2/world/footpath.c b/src/openrct2/world/footpath.c index df22ba5705..d62fc8e98a 100644 --- a/src/openrct2/world/footpath.c +++ b/src/openrct2/world/footpath.c @@ -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; }