diff --git a/src/rct1.h b/src/rct1.h index 5ba997b401..8eeedca9b2 100644 --- a/src/rct1.h +++ b/src/rct1.h @@ -977,6 +977,8 @@ enum { RCT1_PARK_FLAGS_LOCK_REAL_NAMES_OPTION = (1 << 15), }; +#define RCT1_MAX_STATIONS 4 + extern const uint8 gRideCategories[0x60]; bool rct1_read_sc4(const char *path, rct1_s4 *s4); diff --git a/src/rct1/S4Importer.cpp b/src/rct1/S4Importer.cpp index dce725b108..47ba360057 100644 --- a/src/rct1/S4Importer.cpp +++ b/src/rct1/S4Importer.cpp @@ -583,7 +583,7 @@ private: // Station dst->overall_view = src->overall_view; - for (int i = 0; i < 4; i++) + for (int i = 0; i < RCT1_MAX_STATIONS; i++) { dst->station_starts[i] = src->station_starts[i]; dst->station_heights[i] = src->station_height[i] / 2; @@ -702,7 +702,7 @@ private: dst->max_speed = src->max_speed; dst->average_speed = src->average_speed; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < RCT1_MAX_STATIONS; i++) { dst->time[i] = src->time[i]; dst->length[i] = src->length[i]; } @@ -740,7 +740,7 @@ private: rct_ride *ride; FOR_ALL_RIDES(i, ride) { - for (int stationIndex = 0; stationIndex < 4; stationIndex++) + for (int stationIndex = 0; stationIndex < RCT1_MAX_STATIONS; stationIndex++) { ride->queue_length[stationIndex] = 0; } diff --git a/src/rct2.h b/src/rct2.h index 71435ff079..e05e67a355 100644 --- a/src/rct2.h +++ b/src/rct2.h @@ -111,6 +111,8 @@ enum { extern "C" { #endif +#define RCT2_MAX_STATIONS 4 + extern const char * const RCT2FilePaths[PATH_ID_END]; extern uint32 gCurrentDrawCount; diff --git a/src/ride/station.h b/src/ride/station.h index 0f29036bdd..a27beb8377 100644 --- a/src/ride/station.h +++ b/src/ride/station.h @@ -21,6 +21,8 @@ #include "../world/map.h" #include "ride.h" +#define MAX_STATIONS 4 + void ride_update_station(rct_ride *ride, int stationIndex); rct_map_element *ride_get_station_start_track_element(rct_ride *ride, int stationIndex); rct_map_element *ride_get_station_exit_element(rct_ride *ride, int x, int y, int z); diff --git a/src/ride/track.c b/src/ride/track.c index 7ee8640276..f2020783d2 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -34,6 +34,7 @@ #include "ride.h" #include "ride_data.h" #include "ride_ratings.h" +#include "station.h" #include "track.h" #include "track_data.h" @@ -616,7 +617,7 @@ static rct_map_element *find_station_element(int x, int y, int z, int direction, static void ride_remove_station(rct_ride *ride, int x, int y, int z) { uint16 xy = (x >> 5) | ((y >> 5) << 8); - for (int i = 0; i < 4; i++) { + for (int i = 0; i < MAX_STATIONS; i++) { if (ride->station_starts[i] == xy && ride->station_heights[i] == z) { ride->station_starts[i] = 0xFFFF; ride->num_stations--; @@ -639,13 +640,13 @@ static bool track_add_station_element(int x, int y, int z, int direction, int ri rct_ride *ride = get_ride(rideIndex); if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_3)) { - if (ride->num_stations >= 4) { + if (ride->num_stations >= MAX_STATIONS) { gGameCommandErrorText = STR_NO_MORE_STATIONS_ALLOWED_ON_THIS_RIDE; return false; } if (flags & GAME_COMMAND_FLAG_APPLY) { int stationIndex = -1; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < MAX_STATIONS; i++) { if (ride->station_starts[i] == 0xFFFF) { stationIndex = i; break; @@ -707,7 +708,7 @@ static bool track_add_station_element(int x, int y, int z, int direction, int ri } } while (stationElement != NULL); - if (stationX0 == stationX1 && stationY0 == stationY1 && ride->num_stations >= 4) { + if (stationX0 == stationX1 && stationY0 == stationY1 && ride->num_stations >= MAX_STATIONS) { gGameCommandErrorText = STR_NO_MORE_STATIONS_ALLOWED_ON_THIS_RIDE; return false; } @@ -730,7 +731,7 @@ static bool track_add_station_element(int x, int y, int z, int direction, int ri int targetTrackType; if (x == stationX1 && y == stationY1) { int stationIndex = -1; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < MAX_STATIONS; i++) { if (ride->station_starts[i] == 0xFFFF) { stationIndex = i; break; @@ -837,7 +838,7 @@ static bool track_remove_station_element(int x, int y, int z, int direction, int if (!(flags & GAME_COMMAND_FLAG_APPLY)) { if ((removeX != stationX0 || removeY != stationY0) && (removeX != stationX1 || removeY != stationY1) && - ride->num_stations >= 4 + ride->num_stations >= MAX_STATIONS ) { gGameCommandErrorText = STR_NO_MORE_STATIONS_ALLOWED_ON_THIS_RIDE; return false; @@ -859,7 +860,7 @@ static bool track_remove_station_element(int x, int y, int z, int direction, int if (x == stationX1 && y == stationY1) { loc_6C4BF5:; int stationIndex = -1; - for (int i = 0; i < 4; i++) { + for (int i = 0; i < MAX_STATIONS; i++) { if (ride->station_starts[i] == 0xFFFF) { stationIndex = i; break;