mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #3313 from IntelOrca/integrate-ride-session-vars
Integrate ride construction session variables
This commit is contained in:
commit
e5666f214b
|
@ -137,6 +137,37 @@ int gRideRemoveTrackPieceCallbackZ;
|
||||||
int gRideRemoveTrackPieceCallbackDirection;
|
int gRideRemoveTrackPieceCallbackDirection;
|
||||||
int gRideRemoveTrackPieceCallbackType;
|
int gRideRemoveTrackPieceCallbackType;
|
||||||
|
|
||||||
|
money32 _currentTrackPrice;
|
||||||
|
|
||||||
|
uint16 _numCurrentPossibleRideConfigurations;
|
||||||
|
uint16 _numCurrentPossibleSpecialTrackPieces;
|
||||||
|
|
||||||
|
uint16 _currentTrackCurve;
|
||||||
|
uint16 _currentTrackEndX;
|
||||||
|
uint16 _currentTrackEndY;
|
||||||
|
uint8 _rideConstructionState;
|
||||||
|
uint8 _currentRideIndex;
|
||||||
|
uint16 _currentTrackBeginX;
|
||||||
|
uint16 _currentTrackBeginY;
|
||||||
|
uint16 _currentTrackBeginZ;
|
||||||
|
uint8 _currentTrackPieceDirection;
|
||||||
|
uint8 _currentTrackPieceType;
|
||||||
|
uint8 _currentTrackSelectionFlags;
|
||||||
|
sint8 _rideConstructionArrowPulseTime;
|
||||||
|
uint8 _currentTrackSlopeEnd;
|
||||||
|
uint8 _currentTrackBankEnd;
|
||||||
|
uint8 _currentTrackLiftHill;
|
||||||
|
uint8 _currentTrackCovered;
|
||||||
|
|
||||||
|
uint8 _previousTrackBankEnd;
|
||||||
|
uint8 _previousTrackSlopeEnd;
|
||||||
|
|
||||||
|
uint16 _previousTrackPieceX;
|
||||||
|
uint16 _previousTrackPieceY;
|
||||||
|
uint16 _previousTrackPieceZ;
|
||||||
|
|
||||||
|
uint8 _currentSeatRotationAngle;
|
||||||
|
|
||||||
// Static function declarations
|
// Static function declarations
|
||||||
rct_peep *find_closest_mechanic(int x, int y, int forInspection);
|
rct_peep *find_closest_mechanic(int x, int y, int forInspection);
|
||||||
static void ride_breakdown_status_update(int rideIndex);
|
static void ride_breakdown_status_update(int rideIndex);
|
||||||
|
@ -1810,7 +1841,7 @@ int sub_6CC3FB(int rideIndex)
|
||||||
|
|
||||||
_currentTrackCurve = RCT2_ADDRESS(0x0097CC68, uint8)[ride->type * 2] | 0x100;
|
_currentTrackCurve = RCT2_ADDRESS(0x0097CC68, uint8)[ride->type * 2] | 0x100;
|
||||||
_currentTrackSlopeEnd = 0;
|
_currentTrackSlopeEnd = 0;
|
||||||
RCT2_GLOBAL(0x00F440B3, uint8) = 0;
|
_currentTrackBankEnd = 0;
|
||||||
_currentTrackLiftHill = 0;
|
_currentTrackLiftHill = 0;
|
||||||
_currentTrackCovered = 0;
|
_currentTrackCovered = 0;
|
||||||
|
|
||||||
|
|
|
@ -886,42 +886,36 @@ rct_ride_measurement *get_ride_measurement(int index);
|
||||||
|
|
||||||
extern const uint8 gRideClassifications[255];
|
extern const uint8 gRideClassifications[255];
|
||||||
|
|
||||||
|
extern money32 _currentTrackPrice;
|
||||||
|
|
||||||
// Macros for very commonly used varaibles, eventually will be changed to locals or globals
|
extern uint16 _numCurrentPossibleRideConfigurations;
|
||||||
#define _enabledRidePieces RCT2_GLOBAL(0x00F44048, uint64)
|
extern uint16 _numCurrentPossibleSpecialTrackPieces;
|
||||||
#define _enabledRidePiecesA RCT2_GLOBAL(0x00F44048, uint32)
|
|
||||||
#define _enabledRidePiecesB RCT2_GLOBAL(0x00F4404C, uint32)
|
|
||||||
|
|
||||||
#define _currentTrackPrice RCT2_GLOBAL(0x00F44070, money32)
|
extern uint16 _currentTrackCurve;
|
||||||
|
extern uint16 _currentTrackEndX;
|
||||||
|
extern uint16 _currentTrackEndY;
|
||||||
|
extern uint8 _rideConstructionState;
|
||||||
|
extern uint8 _currentRideIndex;
|
||||||
|
extern uint16 _currentTrackBeginX;
|
||||||
|
extern uint16 _currentTrackBeginY;
|
||||||
|
extern uint16 _currentTrackBeginZ;
|
||||||
|
extern uint8 _currentTrackPieceDirection;
|
||||||
|
extern uint8 _currentTrackPieceType;
|
||||||
|
extern uint8 _currentTrackSelectionFlags;
|
||||||
|
extern sint8 _rideConstructionArrowPulseTime;
|
||||||
|
extern uint8 _currentTrackSlopeEnd;
|
||||||
|
extern uint8 _currentTrackBankEnd;
|
||||||
|
extern uint8 _currentTrackLiftHill;
|
||||||
|
extern uint8 _currentTrackCovered;
|
||||||
|
|
||||||
#define _numCurrentPossibleRideConfigurations RCT2_GLOBAL(0x00F44078, uint16)
|
extern uint8 _previousTrackBankEnd;
|
||||||
#define _numCurrentPossibleSpecialTrackPieces RCT2_GLOBAL(0x00F4407A, uint16)
|
extern uint8 _previousTrackSlopeEnd;
|
||||||
|
|
||||||
#define _currentTrackCurve RCT2_GLOBAL(0x00F440A0, uint16)
|
extern uint16 _previousTrackPieceX;
|
||||||
#define _currentTrackEndX RCT2_GLOBAL(0x00F440A2, uint16)
|
extern uint16 _previousTrackPieceY;
|
||||||
#define _currentTrackEndY RCT2_GLOBAL(0x00F440A4, uint16)
|
extern uint16 _previousTrackPieceZ;
|
||||||
#define _rideConstructionState RCT2_GLOBAL(0x00F440A6, uint8)
|
|
||||||
#define _currentRideIndex RCT2_GLOBAL(0x00F440A7, uint8)
|
|
||||||
#define _currentTrackBeginX RCT2_GLOBAL(0x00F440A8, uint16)
|
|
||||||
#define _currentTrackBeginY RCT2_GLOBAL(0x00F440AA, uint16)
|
|
||||||
#define _currentTrackBeginZ RCT2_GLOBAL(0x00F440AC, uint16)
|
|
||||||
#define _currentTrackPieceDirection RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)
|
|
||||||
#define _currentTrackPieceType RCT2_GLOBAL(0x00F440AF, uint8)
|
|
||||||
#define _currentTrackSelectionFlags RCT2_GLOBAL(0x00F440B0, uint8)
|
|
||||||
#define _rideConstructionArrowPulseTime RCT2_GLOBAL(0x00F440B1, sint8)
|
|
||||||
#define _currentTrackSlopeEnd RCT2_GLOBAL(0x00F440B2, uint8)
|
|
||||||
#define _currentTrackBankEnd RCT2_GLOBAL(0x00F440B3, uint8)
|
|
||||||
#define _currentTrackLiftHill RCT2_GLOBAL(0x00F440B4, uint8)
|
|
||||||
#define _currentTrackCovered RCT2_GLOBAL(0x00F440B5, uint8)
|
|
||||||
|
|
||||||
#define _previousTrackBankEnd RCT2_GLOBAL(0x00F440B6, uint8)
|
extern uint8 _currentSeatRotationAngle;
|
||||||
#define _previousTrackSlopeEnd RCT2_GLOBAL(0x00F440B7, uint8)
|
|
||||||
|
|
||||||
#define _previousTrackPieceX RCT2_GLOBAL(0x00F440B9, uint16)
|
|
||||||
#define _previousTrackPieceY RCT2_GLOBAL(0x00F440BB, uint16)
|
|
||||||
#define _previousTrackPieceZ RCT2_GLOBAL(0x00F440BD, uint16)
|
|
||||||
|
|
||||||
#define _currentSeatRotationAngle RCT2_GLOBAL(0x00F440CF, uint8)
|
|
||||||
|
|
||||||
extern bool gGotoStartPlacementMode;
|
extern bool gGotoStartPlacementMode;
|
||||||
extern int gRideRemoveTrackPieceCallbackX;
|
extern int gRideRemoveTrackPieceCallbackX;
|
||||||
|
|
|
@ -1033,7 +1033,7 @@ int track_place_scenery(rct_track_scenery* scenery_start, uint8 rideIndex, int o
|
||||||
|
|
||||||
for (rct_track_scenery* scenery = scenery_start; (scenery->scenery_object.flags & 0xFF) != 0xFF; scenery++){
|
for (rct_track_scenery* scenery = scenery_start; (scenery->scenery_object.flags & 0xFF) != 0xFF; scenery++){
|
||||||
|
|
||||||
uint8 rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
uint8 rotation = _currentTrackPieceDirection;
|
||||||
|
|
||||||
rct_xy8 tile = { .x = originX / 32, .y = originY / 32 };
|
rct_xy8 tile = { .x = originX / 32, .y = originY / 32 };
|
||||||
switch (rotation & 3){
|
switch (rotation & 3){
|
||||||
|
@ -1113,7 +1113,7 @@ int track_place_scenery(rct_track_scenery* scenery_start, uint8 rideIndex, int o
|
||||||
rotation &= 3;
|
rotation &= 3;
|
||||||
|
|
||||||
//bh
|
//bh
|
||||||
uint8 quadrant = (scenery->flags >> 2) + RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
uint8 quadrant = (scenery->flags >> 2) + _currentTrackPieceDirection;
|
||||||
quadrant &= 3;
|
quadrant &= 3;
|
||||||
|
|
||||||
uint8 bh = rotation | (quadrant << 6) | MAP_ELEMENT_TYPE_SCENERY;
|
uint8 bh = rotation | (quadrant << 6) | MAP_ELEMENT_TYPE_SCENERY;
|
||||||
|
@ -1223,7 +1223,7 @@ int track_place_scenery(rct_track_scenery* scenery_start, uint8 rideIndex, int o
|
||||||
rotation += scenery->flags;
|
rotation += scenery->flags;
|
||||||
rotation &= 3;
|
rotation &= 3;
|
||||||
z = scenery->z * 8 + originZ;
|
z = scenery->z * 8 + originZ;
|
||||||
uint8 quadrant = ((scenery->flags >> 2) + RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)) & 3;
|
uint8 quadrant = ((scenery->flags >> 2) + _currentTrackPieceDirection) & 3;
|
||||||
|
|
||||||
bl = 0x81;
|
bl = 0x81;
|
||||||
if (RCT2_GLOBAL(0x00F440D4, uint8) == 5)bl = 0xA9;
|
if (RCT2_GLOBAL(0x00F440D4, uint8) == 5)bl = 0xA9;
|
||||||
|
@ -1386,14 +1386,14 @@ int track_place_maze(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint8** trac
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, sint16) = y;
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, sint16) = y;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Z, sint16) = map_element_height(x, y) & 0xFFFF;
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Z, sint16) = map_element_height(x, y) & 0xFFFF;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) = _currentTrackPieceDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_GLOBAL(0x00F440D5, uint32) = 0;
|
RCT2_GLOBAL(0x00F440D5, uint32) = 0;
|
||||||
|
|
||||||
rct_maze_element* maze = (rct_maze_element*)(*track_elements);
|
rct_maze_element* maze = (rct_maze_element*)(*track_elements);
|
||||||
for (; maze->all != 0; maze++){
|
for (; maze->all != 0; maze++){
|
||||||
uint8 rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
uint8 rotation = _currentTrackPieceDirection;
|
||||||
rct_xy16 mapCoord = { .x = maze->x * 32, .y = maze->y * 32 };
|
rct_xy16 mapCoord = { .x = maze->x * 32, .y = maze->y * 32 };
|
||||||
|
|
||||||
switch (rotation & 3){
|
switch (rotation & 3){
|
||||||
|
@ -1571,11 +1571,11 @@ int track_place_ride(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint8** trac
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, sint16) = y;
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Y, sint16) = y;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Z, sint16) = map_element_height(x, y) & 0xFFFF;
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_Z, sint16) = map_element_height(x, y) & 0xFFFF;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_DIRECTION, uint8) = _currentTrackPieceDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_GLOBAL(0x00F440D5, uint32) = 0;
|
RCT2_GLOBAL(0x00F440D5, uint32) = 0;
|
||||||
uint8 rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
uint8 rotation = _currentTrackPieceDirection;
|
||||||
|
|
||||||
rct_track_element* track = (rct_track_element*)(*track_elements);
|
rct_track_element* track = (rct_track_element*)(*track_elements);
|
||||||
for (; track->type != 0xFF; track++){
|
for (; track->type != 0xFF; track++){
|
||||||
|
@ -1664,7 +1664,7 @@ int track_place_ride(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint8** trac
|
||||||
(((track->flags >> 4) & 0x3) << 24) |
|
(((track->flags >> 4) & 0x3) << 24) |
|
||||||
(temp_z & 0xFFFF);
|
(temp_z & 0xFFFF);
|
||||||
|
|
||||||
int edx = RCT2_GLOBAL(0x00F440A7, uint8) | (track_type << 8);
|
int edx = _currentRideIndex | (track_type << 8);
|
||||||
|
|
||||||
if (track->flags & 0x80)edx |= 0x10000;
|
if (track->flags & 0x80)edx |= 0x10000;
|
||||||
if (track->flags & 0x40)edx |= 0x20000;
|
if (track->flags & 0x40)edx |= 0x20000;
|
||||||
|
@ -1791,7 +1791,7 @@ int track_place_ride(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint8** trac
|
||||||
*track_elements = (uint8*)track + 1;
|
*track_elements = (uint8*)track + 1;
|
||||||
rct_track_entrance* entrance = (rct_track_entrance*)(*track_elements);
|
rct_track_entrance* entrance = (rct_track_entrance*)(*track_elements);
|
||||||
for (; entrance->z != -1; entrance++){
|
for (; entrance->z != -1; entrance++){
|
||||||
rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
rotation = _currentTrackPieceDirection;
|
||||||
x = entrance->x;
|
x = entrance->x;
|
||||||
y = entrance->y;
|
y = entrance->y;
|
||||||
|
|
||||||
|
@ -1913,8 +1913,8 @@ int track_place_ride(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint8** trac
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RCT2_GLOBAL(0x00F440D4, uint8) == 6){
|
if (RCT2_GLOBAL(0x00F440D4, uint8) == 6){
|
||||||
sub_6CB945(RCT2_GLOBAL(0x00F440A7, uint8));
|
sub_6CB945(_currentRideIndex);
|
||||||
rct_ride* ride = get_ride(RCT2_GLOBAL(0x00F440A7, uint8));
|
rct_ride* ride = get_ride(_currentRideIndex);
|
||||||
user_string_free(ride->name);
|
user_string_free(ride->name);
|
||||||
ride->type = RIDE_TYPE_NULL;
|
ride->type = RIDE_TYPE_NULL;
|
||||||
}
|
}
|
||||||
|
@ -1944,7 +1944,7 @@ int sub_6D01B3(uint8 bl, uint8 rideIndex, int x, int y, int z)
|
||||||
if (RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) != 0){
|
if (RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) != 0){
|
||||||
RCT2_GLOBAL(0x00F4414E, uint8) |= 0x80;
|
RCT2_GLOBAL(0x00F4414E, uint8) |= 0x80;
|
||||||
}
|
}
|
||||||
RCT2_GLOBAL(0x00F440A7, uint8) = rideIndex;
|
_currentRideIndex = rideIndex;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_X_MIN, sint16) = x;
|
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_X_MIN, sint16) = x;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_X_MAX, sint16) = x;
|
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_X_MAX, sint16) = x;
|
||||||
|
@ -2044,12 +2044,12 @@ int sub_6D2189(int* cost, uint8* ride_id){
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_GLOBAL(0x009D8150, uint8) |= 1;
|
RCT2_GLOBAL(0x009D8150, uint8) |= 1;
|
||||||
uint8 backup_rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
uint8 backup_rotation = _currentTrackPieceDirection;
|
||||||
uint32 backup_park_flags = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32);
|
uint32 backup_park_flags = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32);
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) &= ~PARK_FLAGS_FORBID_HIGH_CONSTRUCTION;
|
RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) &= ~PARK_FLAGS_FORBID_HIGH_CONSTRUCTION;
|
||||||
int map_size = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16) << 4;
|
int map_size = RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE, uint16) << 4;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = 0;
|
_currentTrackPieceDirection = 0;
|
||||||
int z = sub_6D01B3(3, 0, map_size, map_size, 16);
|
int z = sub_6D01B3(3, 0, map_size, map_size, 16);
|
||||||
|
|
||||||
if (RCT2_GLOBAL(0xF4414E, uint8) & 4){
|
if (RCT2_GLOBAL(0xF4414E, uint8) & 4){
|
||||||
|
@ -2072,14 +2072,14 @@ int sub_6D2189(int* cost, uint8* ride_id){
|
||||||
RCT2_GLOBAL(0xF44151, uint8) |= 4;
|
RCT2_GLOBAL(0xF44151, uint8) |= 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = backup_rotation;
|
_currentTrackPieceDirection = backup_rotation;
|
||||||
RCT2_GLOBAL(0x009D8150, uint8) &= ~1;
|
RCT2_GLOBAL(0x009D8150, uint8) &= ~1;
|
||||||
*cost = edi;
|
*cost = edi;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = backup_rotation;
|
_currentTrackPieceDirection = backup_rotation;
|
||||||
user_string_free(ride->name);
|
user_string_free(ride->name);
|
||||||
ride->type = RIDE_TYPE_NULL;
|
ride->type = RIDE_TYPE_NULL;
|
||||||
RCT2_GLOBAL(0x009D8150, uint8) &= ~1;
|
RCT2_GLOBAL(0x009D8150, uint8) &= ~1;
|
||||||
|
@ -2284,7 +2284,7 @@ rct_track_design *track_get_info(int index, uint8** preview)
|
||||||
|
|
||||||
// Set preview to correct preview image based on rotation
|
// Set preview to correct preview image based on rotation
|
||||||
if (preview != NULL)
|
if (preview != NULL)
|
||||||
*preview = trackDesign->preview[RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)];
|
*preview = trackDesign->preview[_currentTrackPieceDirection];
|
||||||
|
|
||||||
return trackDesign;
|
return trackDesign;
|
||||||
}
|
}
|
||||||
|
@ -3176,7 +3176,7 @@ rct_track_design *temp_track_get_info(char* path, uint8** preview)
|
||||||
|
|
||||||
// Set preview to correct preview image based on rotation
|
// Set preview to correct preview image based on rotation
|
||||||
if (preview != NULL)
|
if (preview != NULL)
|
||||||
*preview = trackDesign->preview[RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)];
|
*preview = trackDesign->preview[_currentTrackPieceDirection];
|
||||||
|
|
||||||
return trackDesign;
|
return trackDesign;
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,7 +120,7 @@ void window_install_track_open(const char* path)
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*) = mem;
|
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_CACHE, void*) = mem;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 0;
|
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 0;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = 2;
|
_currentTrackPieceDirection = 2;
|
||||||
reset_track_list_cache();
|
reset_track_list_cache();
|
||||||
|
|
||||||
x = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) / 2 - 201;
|
x = RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_WIDTH, uint16) / 2 - 201;
|
||||||
|
@ -227,8 +227,8 @@ static void window_install_track_mouseup(rct_window *w, int widgetIndex)
|
||||||
window_close(w);
|
window_close(w);
|
||||||
break;
|
break;
|
||||||
case WIDX_ROTATE:
|
case WIDX_ROTATE:
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)++;
|
_currentTrackPieceDirection++;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) %= 4;
|
_currentTrackPieceDirection %= 4;
|
||||||
window_invalidate(w);
|
window_invalidate(w);
|
||||||
break;
|
break;
|
||||||
case WIDX_TOGGLE_SCENERY:
|
case WIDX_TOGGLE_SCENERY:
|
||||||
|
|
|
@ -447,13 +447,21 @@ rct_string_id RideConfigurationStringIds[] = {
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
||||||
#define _trackPlaceCtrlState RCT2_GLOBAL(0x00F44159, uint8)
|
union {
|
||||||
|
uint64 ab;
|
||||||
|
struct {
|
||||||
|
uint32 a;
|
||||||
|
uint32 b;
|
||||||
|
};
|
||||||
|
} _enabledRidePieces;
|
||||||
|
|
||||||
|
static bool _trackPlaceCtrlState;
|
||||||
static int _trackPlaceCtrlZ;
|
static int _trackPlaceCtrlZ;
|
||||||
#define _trackPlaceShiftState RCT2_GLOBAL(0x00F4415C, uint8)
|
static bool _trackPlaceShiftState;
|
||||||
static int _trackPlaceShiftStartScreenX;
|
static int _trackPlaceShiftStartScreenX;
|
||||||
static int _trackPlaceShiftStartScreenY;
|
static int _trackPlaceShiftStartScreenY;
|
||||||
static int _trackPlaceShiftZ;
|
static int _trackPlaceShiftZ;
|
||||||
#define _trackPlaceZ RCT2_GLOBAL(0x00F44163, sint16)
|
static int _trackPlaceZ;
|
||||||
static bool _autoOpeningShop;
|
static bool _autoOpeningShop;
|
||||||
|
|
||||||
// This variable is updated separately from ride->num_stations because the latter
|
// This variable is updated separately from ride->num_stations because the latter
|
||||||
|
@ -493,7 +501,7 @@ uint8 *_currentPossibleRideConfigurations = (uint8*)0x00F4407C;
|
||||||
|
|
||||||
static bool is_track_enabled(int trackFlagIndex)
|
static bool is_track_enabled(int trackFlagIndex)
|
||||||
{
|
{
|
||||||
return _enabledRidePieces & (1ULL << trackFlagIndex);
|
return _enabledRidePieces.ab & (1ULL << trackFlagIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ride_get_alternative_type(rct_ride *ride)
|
static int ride_get_alternative_type(rct_ride *ride)
|
||||||
|
@ -540,7 +548,7 @@ rct_window *window_ride_construction_open()
|
||||||
_currentTrackPrice = MONEY32_UNDEFINED;
|
_currentTrackPrice = MONEY32_UNDEFINED;
|
||||||
RCT2_GLOBAL(0x00F440CD, uint8) = 8;
|
RCT2_GLOBAL(0x00F440CD, uint8) = 8;
|
||||||
RCT2_GLOBAL(0x00F440CE, uint8) = 18;
|
RCT2_GLOBAL(0x00F440CE, uint8) = 18;
|
||||||
RCT2_GLOBAL(0x00F440CF, uint8) = 4;
|
_currentSeatRotationAngle = 4;
|
||||||
|
|
||||||
if (ride->type == RIDE_TYPE_REVERSE_FREEFALL_COASTER)
|
if (ride->type == RIDE_TYPE_REVERSE_FREEFALL_COASTER)
|
||||||
RCT2_GLOBAL(0x00F440CE, uint8) = 30;
|
RCT2_GLOBAL(0x00F440CE, uint8) = 30;
|
||||||
|
@ -550,23 +558,23 @@ rct_window *window_ride_construction_open()
|
||||||
|
|
||||||
_currentTrackCurve = RCT2_ADDRESS(0x0097CC68, uint8)[ride->type * 2] | 0x100;
|
_currentTrackCurve = RCT2_ADDRESS(0x0097CC68, uint8)[ride->type * 2] | 0x100;
|
||||||
_currentTrackSlopeEnd = 0;
|
_currentTrackSlopeEnd = 0;
|
||||||
RCT2_GLOBAL(0x00F440B3, uint8) = 0;
|
_currentTrackBankEnd = 0;
|
||||||
_currentTrackLiftHill = 0;
|
_currentTrackLiftHill = 0;
|
||||||
_currentTrackCovered = 0;
|
_currentTrackCovered = 0;
|
||||||
|
|
||||||
if (RideData4[ride->type].flags & RIDE_TYPE_FLAG4_15)
|
if (RideData4[ride->type].flags & RIDE_TYPE_FLAG4_15)
|
||||||
_currentTrackCovered |= 2;
|
_currentTrackCovered |= 2;
|
||||||
|
|
||||||
RCT2_GLOBAL(0x00F440B6, uint8) = 0;
|
_previousTrackBankEnd = 0;
|
||||||
RCT2_GLOBAL(0x00F440B7, uint8) = 0;
|
_previousTrackSlopeEnd = 0;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = 0;
|
_currentTrackPieceDirection = 0;
|
||||||
_rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE;
|
_rideConstructionState = RIDE_CONSTRUCTION_STATE_PLACE;
|
||||||
_currentTrackSelectionFlags = 0;
|
_currentTrackSelectionFlags = 0;
|
||||||
_rideConstructionArrowPulseTime = 0;
|
_rideConstructionArrowPulseTime = 0;
|
||||||
_autoOpeningShop = false;
|
_autoOpeningShop = false;
|
||||||
RCT2_GLOBAL(0x00F44159, uint8) = 0;
|
_trackPlaceCtrlState = false;
|
||||||
RCT2_GLOBAL(0x00F4415C, uint8) = 0;
|
_trackPlaceShiftState = false;
|
||||||
colour_scheme_update(w);
|
colour_scheme_update(w);
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
@ -2115,7 +2123,7 @@ static void window_ride_construction_invalidate(rct_window *w)
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 2, uint16) = ((RCT2_GLOBAL(0x00F440CD, uint8) * 9) >> 2) & 0xFFFF;
|
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 2, uint16) = ((RCT2_GLOBAL(0x00F440CD, uint8) * 9) >> 2) & 0xFFFF;
|
||||||
|
|
||||||
window_ride_construction_widgets[WIDX_SEAT_ROTATION_ANGLE_SPINNER].image =
|
window_ride_construction_widgets[WIDX_SEAT_ROTATION_ANGLE_SPINNER].image =
|
||||||
STR_RIDE_CONSTRUCTION_SEAT_ROTATION_ANGLE_NEG_180 + RCT2_GLOBAL(0x00F440CF, uint8);
|
STR_RIDE_CONSTRUCTION_SEAT_ROTATION_ANGLE_NEG_180 + _currentSeatRotationAngle;
|
||||||
|
|
||||||
if (RCT2_GLOBAL(0x00F440D3, uint8) == 2)
|
if (RCT2_GLOBAL(0x00F440D3, uint8) == 2)
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 2, uint16) = ((RCT2_GLOBAL(0x00F440CE, uint8) * 9) >> 2) & 0xFFFF;
|
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 2, uint16) = ((RCT2_GLOBAL(0x00F440CE, uint8) * 9) >> 2) & 0xFFFF;
|
||||||
|
@ -2430,7 +2438,7 @@ static bool sub_6CA2DF_get_track_element(uint8 *trackElement) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool startsDiagonal = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) & (1 << 2);
|
bool startsDiagonal = _currentTrackPieceDirection & (1 << 2);
|
||||||
if (curve == TRACK_CURVE_LEFT_LARGE || curve == TRACK_CURVE_RIGHT_LARGE) {
|
if (curve == TRACK_CURVE_LEFT_LARGE || curve == TRACK_CURVE_RIGHT_LARGE) {
|
||||||
if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_BACK) {
|
if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_BACK) {
|
||||||
startsDiagonal = !startsDiagonal;
|
startsDiagonal = !startsDiagonal;
|
||||||
|
@ -2525,7 +2533,7 @@ static bool sub_6CA2DF(int *_trackType, int *_trackDirection, int *_rideIndex, i
|
||||||
|
|
||||||
rct_ride *ride = get_ride(rideIndex);
|
rct_ride *ride = get_ride(rideIndex);
|
||||||
|
|
||||||
if (_enabledRidePiecesB & (1 << 8)) {
|
if (_enabledRidePieces.b & (1 << 8)) {
|
||||||
switch (trackType) {
|
switch (trackType) {
|
||||||
case TRACK_ELEM_FLAT_TO_60_DEG_UP:
|
case TRACK_ELEM_FLAT_TO_60_DEG_UP:
|
||||||
trackType = TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE;
|
trackType = TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE;
|
||||||
|
@ -2565,7 +2573,7 @@ static bool sub_6CA2DF(int *_trackType, int *_trackDirection, int *_rideIndex, i
|
||||||
z = _currentTrackBeginZ;
|
z = _currentTrackBeginZ;
|
||||||
if (_rideConstructionState == 2) {
|
if (_rideConstructionState == 2) {
|
||||||
z -= trackCoordinates->z_end;
|
z -= trackCoordinates->z_end;
|
||||||
trackDirection = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) ^ 0x02;
|
trackDirection = _currentTrackPieceDirection ^ 0x02;
|
||||||
trackDirection -= trackCoordinates->rotation_end;
|
trackDirection -= trackCoordinates->rotation_end;
|
||||||
trackDirection += trackCoordinates->rotation_begin;
|
trackDirection += trackCoordinates->rotation_begin;
|
||||||
trackDirection &= 0x03;
|
trackDirection &= 0x03;
|
||||||
|
@ -2597,12 +2605,12 @@ static bool sub_6CA2DF(int *_trackType, int *_trackDirection, int *_rideIndex, i
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
z -= trackCoordinates->z_begin;
|
z -= trackCoordinates->z_begin;
|
||||||
trackDirection = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8);
|
trackDirection = _currentTrackPieceDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool do_loc_6CAF26 = false;
|
bool do_loc_6CAF26 = false;
|
||||||
if (!(_enabledRidePiecesA & (1 << 5))) {
|
if (!(_enabledRidePieces.a & (1 << 5))) {
|
||||||
if (RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x2000) {
|
if (RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x2000) {
|
||||||
do_loc_6CAF26 = true;
|
do_loc_6CAF26 = true;
|
||||||
}
|
}
|
||||||
|
@ -2654,8 +2662,8 @@ static void window_ride_construction_update_enabled_track_pieces()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
int rideType = _currentTrackCovered & 2 ? RCT2_ADDRESS(0x0097D4F5, uint8)[ride->type * 8] : ride->type;
|
int rideType = _currentTrackCovered & 2 ? RCT2_ADDRESS(0x0097D4F5, uint8)[ride->type * 8] : ride->type;
|
||||||
_enabledRidePiecesA = rideEntry->enabledTrackPiecesA & RCT2_ADDRESS(0x01357444, uint32)[rideType];
|
_enabledRidePieces.a = rideEntry->enabledTrackPiecesA & RCT2_ADDRESS(0x01357444, uint32)[rideType];
|
||||||
_enabledRidePiecesB = rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[rideType];
|
_enabledRidePieces.b = rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[rideType];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3817,8 +3825,8 @@ void ride_construction_tooldown_construct(int screenX, int screenY)
|
||||||
if (w != NULL){
|
if (w != NULL){
|
||||||
tool_set(w, 23, 12);
|
tool_set(w, 23, 12);
|
||||||
gInputFlags |= INPUT_FLAG_6;
|
gInputFlags |= INPUT_FLAG_6;
|
||||||
RCT2_GLOBAL(0x00F44159, uint8) = 0;
|
_trackPlaceCtrlState = false;
|
||||||
RCT2_GLOBAL(0x00F4415C, uint8) = 0;
|
_trackPlaceShiftState = false;
|
||||||
}
|
}
|
||||||
window_maze_construction_update_pressed_widgets();
|
window_maze_construction_update_pressed_widgets();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -144,7 +144,7 @@ void window_track_list_open(ride_list_item item)
|
||||||
w->track_list.var_484 = 0;
|
w->track_list.var_484 = 0;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 0;
|
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE, uint8) = 0;
|
||||||
window_push_others_right(w);
|
window_push_others_right(w);
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = 2;
|
_currentTrackPieceDirection = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -253,8 +253,8 @@ static void window_track_list_mouseup(rct_window *w, int widgetIndex)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WIDX_ROTATE:
|
case WIDX_ROTATE:
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8)++;
|
_currentTrackPieceDirection++;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) %= 4;
|
_currentTrackPieceDirection %= 4;
|
||||||
window_invalidate(w);
|
window_invalidate(w);
|
||||||
break;
|
break;
|
||||||
case WIDX_TOGGLE_SCENERY:
|
case WIDX_TOGGLE_SCENERY:
|
||||||
|
|
|
@ -151,7 +151,7 @@ static void window_track_place_draw_mini_preview()
|
||||||
if (track->type != RIDE_TYPE_MAZE) {
|
if (track->type != RIDE_TYPE_MAZE) {
|
||||||
#pragma region Track
|
#pragma region Track
|
||||||
|
|
||||||
rotation = RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) + get_current_rotation();
|
rotation = _currentTrackPieceDirection + get_current_rotation();
|
||||||
trackElement = RCT2_ADDRESS(0x009D821B, rct_track_element);
|
trackElement = RCT2_ADDRESS(0x009D821B, rct_track_element);
|
||||||
|
|
||||||
while (trackElement->type != 255) {
|
while (trackElement->type != 255) {
|
||||||
|
@ -250,7 +250,7 @@ static void window_track_place_draw_mini_preview()
|
||||||
} else {
|
} else {
|
||||||
#pragma region Maze
|
#pragma region Maze
|
||||||
|
|
||||||
rotation = (RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) + get_current_rotation()) & 3;
|
rotation = (_currentTrackPieceDirection + get_current_rotation()) & 3;
|
||||||
mazeElement = RCT2_ADDRESS(0x009D821B, rct_maze_element);
|
mazeElement = RCT2_ADDRESS(0x009D821B, rct_maze_element);
|
||||||
while (mazeElement->all != 0) {
|
while (mazeElement->all != 0) {
|
||||||
x = mazeElement->x * 32;
|
x = mazeElement->x * 32;
|
||||||
|
@ -395,7 +395,7 @@ void window_track_place_open()
|
||||||
show_gridlines();
|
show_gridlines();
|
||||||
_window_track_place_last_cost = MONEY32_UNDEFINED;
|
_window_track_place_last_cost = MONEY32_UNDEFINED;
|
||||||
_window_track_place_last_x = 0xFFFF;
|
_window_track_place_last_x = 0xFFFF;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_TRACK_PREVIEW_ROTATION, uint8) = (2 - get_current_rotation()) & 3;
|
_currentTrackPieceDirection = (2 - get_current_rotation()) & 3;
|
||||||
window_track_place_draw_mini_preview();
|
window_track_place_draw_mini_preview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -544,7 +544,7 @@ static void window_track_place_tooldown(rct_window* w, int widgetIndex, int x, i
|
||||||
window_close_by_class(WC_ERROR);
|
window_close_by_class(WC_ERROR);
|
||||||
audio_play_sound_at_location(SOUND_PLACE_ITEM, mapX, mapY, mapZ);
|
audio_play_sound_at_location(SOUND_PLACE_ITEM, mapX, mapY, mapZ);
|
||||||
|
|
||||||
RCT2_GLOBAL(0x00F440A7, uint8) = rideIndex;
|
_currentRideIndex = rideIndex;
|
||||||
if (RCT2_GLOBAL(0x00F4414E, uint8) & 1) {
|
if (RCT2_GLOBAL(0x00F4414E, uint8) & 1) {
|
||||||
window_ride_main_open(rideIndex);
|
window_ride_main_open(rideIndex);
|
||||||
window_close(w);
|
window_close(w);
|
||||||
|
|
|
@ -353,7 +353,7 @@ static money32 footpath_place_real(int type, int x, int y, int z, int slope, int
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
if (RCT2_GLOBAL(0x009A8C28, uint8) == 1 && !(flags & GAME_COMMAND_FLAG_GHOST)) {
|
if (RCT2_GLOBAL(0x009A8C28, uint8) == 1 && !(flags & GAME_COMMAND_FLAG_GHOST)) {
|
||||||
rct_xyz16 coord;
|
rct_xyz16 coord;
|
||||||
|
|
|
@ -1908,7 +1908,7 @@ money32 raise_land(int flags, int x, int y, int z, int ax, int ay, int bx, int b
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
|
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
|
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
|
||||||
|
@ -1981,7 +1981,7 @@ money32 lower_land(int flags, int x, int y, int z, int ax, int ay, int bx, int b
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
|
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_LANDSCAPING * 4;
|
||||||
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
|
RCT2_GLOBAL(RCT2_ADDRESS_COMMAND_MAP_X, uint16) = x;
|
||||||
|
@ -2066,7 +2066,7 @@ money32 raise_water(sint16 x0, sint16 y0, sint16 x1, sint16 y1, uint8 flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
@ -2142,7 +2142,7 @@ money32 lower_water(sint16 x0, sint16 y0, sint16 x1, sint16 y1, uint8 flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
return cost;
|
return cost;
|
||||||
}
|
}
|
||||||
|
@ -3749,7 +3749,7 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in
|
||||||
}
|
}
|
||||||
|
|
||||||
// Force ride construction to recheck area
|
// Force ride construction to recheck area
|
||||||
RCT2_GLOBAL(0x00F440B0, uint8) |= 8;
|
_currentTrackSelectionFlags |= 8;
|
||||||
|
|
||||||
*ebx = (scenery_entry->large_scenery.price * 10) + RCT2_GLOBAL(0x00F4389A, money32);
|
*ebx = (scenery_entry->large_scenery.price * 10) + RCT2_GLOBAL(0x00F4389A, money32);
|
||||||
if(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_NO_MONEY){
|
if(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_NO_MONEY){
|
||||||
|
|
Loading…
Reference in New Issue