mirror of https://github.com/OpenRCT2/OpenRCT2.git
integrate variable: gTrackPreviewOrigin
This commit is contained in:
parent
a8a8a7b1b2
commit
c844275cea
|
@ -35,6 +35,7 @@ uint8 gTrackDesignPlaceFlags;
|
|||
bool gTrackDesignSceneryToggle;
|
||||
rct_xyz16 gTrackPreviewMin;
|
||||
rct_xyz16 gTrackPreviewMax;
|
||||
rct_xyz16 gTrackPreviewOrigin;
|
||||
|
||||
uint8 byte_F4414E;
|
||||
static uint8 byte_F440D4;
|
||||
|
@ -999,18 +1000,13 @@ int track_place_maze(rct_track_td6 *td6, sint16 x, sint16 y, sint16 z, uint8 rid
|
|||
game_do_command(0, 0x69, 0, rideIndex, GAME_COMMAND_DEMOLISH_RIDE, 0, 0);
|
||||
}
|
||||
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = x;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = y;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = z;
|
||||
gTrackPreviewOrigin = (rct_xyz16) { x, y, z };
|
||||
return 1;
|
||||
}
|
||||
|
||||
int track_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint16 z, uint8 rideIndex)
|
||||
{
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = x;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = y;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = z;
|
||||
|
||||
gTrackPreviewOrigin = (rct_xyz16) { x, y, z };
|
||||
if (byte_F440D4== 0) {
|
||||
gMapSelectionTiles->x = -1;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_ARROW_X, sint16) = x;
|
||||
|
@ -1143,8 +1139,8 @@ int track_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint16 z, uint8 rid
|
|||
x = entrance->x;
|
||||
y = entrance->y;
|
||||
rotate_map_coordinates(&x, &y, rotation);
|
||||
x += RCT2_GLOBAL(0x00F44142, sint16);
|
||||
y += RCT2_GLOBAL(0x00F44144, sint16);
|
||||
x += gTrackPreviewOrigin.x;
|
||||
y += gTrackPreviewOrigin.y;
|
||||
|
||||
track_design_update_max_min_coordinates(x, y, z);
|
||||
|
||||
|
@ -1169,7 +1165,7 @@ int track_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint16 z, uint8 rid
|
|||
y + TileDirectionDelta[rotation].y
|
||||
};
|
||||
rct_map_element* map_element = map_get_first_element_at(tile.x >> 5, tile.y >> 5);
|
||||
z = RCT2_GLOBAL(0x00F44146, sint16) / 8;
|
||||
z = gTrackPreviewOrigin.z / 8;
|
||||
z += (entrance->z == (sint8)0x80) ? -1 : entrance->z;
|
||||
|
||||
do {
|
||||
|
@ -1197,7 +1193,7 @@ int track_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint16 z, uint8 rid
|
|||
//dl
|
||||
z = (entrance->z == (sint8)0x80) ? -1 : entrance->z;
|
||||
z *= 8;
|
||||
z += RCT2_GLOBAL(0x00F44146, sint16);
|
||||
z += gTrackPreviewOrigin.z;
|
||||
z >>= 4;
|
||||
|
||||
gGameCommandErrorTitle = STR_RIDE_CONSTRUCTION_CANT_CONSTRUCT_THIS_HERE;
|
||||
|
@ -1271,9 +1267,10 @@ int sub_6D01B3(rct_track_td6 *td6, uint8 bl, uint8 rideIndex, int x, int y, int
|
|||
if (!track_place_scenery(
|
||||
scenery,
|
||||
rideIndex,
|
||||
RCT2_GLOBAL(0x00F44142, sint16),
|
||||
RCT2_GLOBAL(0x00F44144, sint16),
|
||||
RCT2_GLOBAL(0x00F44146, sint16))){
|
||||
gTrackPreviewOrigin.x,
|
||||
gTrackPreviewOrigin.y,
|
||||
gTrackPreviewOrigin.z
|
||||
)) {
|
||||
return RCT2_GLOBAL(0x00F440D5, money32);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,6 +160,7 @@ extern uint8 gTrackDesignPlaceFlags;
|
|||
extern bool gTrackDesignSceneryToggle;
|
||||
extern rct_xyz16 gTrackPreviewMin;
|
||||
extern rct_xyz16 gTrackPreviewMax;
|
||||
extern rct_xyz16 gTrackPreviewOrigin;
|
||||
|
||||
extern uint8 byte_F4414E;
|
||||
|
||||
|
|
|
@ -687,8 +687,8 @@ static bool track_design_save_copy_scenery_to_td6(rct_track_td6 *td6)
|
|||
}
|
||||
}
|
||||
|
||||
sint16 x = ((uint8)scenery->x) * 32 - RCT2_GLOBAL(0x00F44142, sint16);
|
||||
sint16 y = ((uint8)scenery->y) * 32 - RCT2_GLOBAL(0x00F44144, sint16);
|
||||
sint16 x = ((uint8)scenery->x) * 32 - gTrackPreviewOrigin.x;
|
||||
sint16 y = ((uint8)scenery->y) * 32 - gTrackPreviewOrigin.y;
|
||||
rotate_map_coordinates(&x, &y, RCT2_GLOBAL(0x00F4414D, uint8) ^ 2);
|
||||
x /= 32;
|
||||
y /= 32;
|
||||
|
@ -702,7 +702,7 @@ static bool track_design_save_copy_scenery_to_td6(rct_track_td6 *td6)
|
|||
scenery->x = (sint8)x;
|
||||
scenery->y = (sint8)y;
|
||||
|
||||
int z = scenery->z * 8 - RCT2_GLOBAL(0xF44146, sint16);
|
||||
int z = scenery->z * 8 - gTrackPreviewOrigin.z;
|
||||
z /= 8;
|
||||
if (z > 127 || z < -126) {
|
||||
window_error_open(3346, STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY);
|
||||
|
@ -830,9 +830,7 @@ static bool track_design_save_to_td6_for_maze(uint8 rideIndex, rct_track_td6 *td
|
|||
return false;
|
||||
}
|
||||
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = startX;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = startY;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = mapElement->base_height * 8;
|
||||
gTrackPreviewOrigin = (rct_xyz16) { startX, startY, mapElement->base_height * 8 };
|
||||
|
||||
size_t numMazeElements = 0;
|
||||
td6->maze_elements = calloc(8192, sizeof(rct_td6_maze_element));
|
||||
|
@ -924,11 +922,9 @@ static bool track_design_save_to_td6_for_maze(uint8 rideIndex, rct_track_td6 *td
|
|||
*((uint8*)&td6->maze_elements[numMazeElements]) = 0xFF;
|
||||
|
||||
// Save global vars as they are still used by scenery
|
||||
sint16 start_z = RCT2_GLOBAL(0x00F44146, sint16);
|
||||
sint16 startZ = gTrackPreviewOrigin.z;
|
||||
sub_6D01B3(td6, PTD_OPERATION_DRAW_OUTLINES, 0, 4096, 4096, 0);
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = startX;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = startY;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = start_z;
|
||||
gTrackPreviewOrigin = (rct_xyz16) { startX, startY, startZ };
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, sint16) &= 0xFFF9;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, sint16) &= 0xFFF7;
|
||||
|
@ -991,9 +987,7 @@ static bool track_design_save_to_td6_for_tracked_ride(uint8 rideIndex, rct_track
|
|||
sint16 start_x = trackElement.x;
|
||||
sint16 start_y = trackElement.y;
|
||||
sint16 start_z = z + trackCoordinates->z_begin;
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = start_x;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = start_y;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = start_z;
|
||||
gTrackPreviewOrigin = (rct_xyz16) { start_x, start_y, start_z };
|
||||
|
||||
size_t numTrackElements = 0;
|
||||
td6->track_elements = calloc(8192, sizeof(rct_td6_track_element));
|
||||
|
@ -1130,15 +1124,15 @@ static bool track_design_save_to_td6_for_tracked_ride(uint8 rideIndex, rct_track
|
|||
entrance_direction &= MAP_ELEMENT_DIRECTION_MASK;
|
||||
entrance->direction = entrance_direction;
|
||||
|
||||
x -= RCT2_GLOBAL(0x00F44142, sint16);
|
||||
y -= RCT2_GLOBAL(0x00F44144, sint16);
|
||||
x -= gTrackPreviewOrigin.x;
|
||||
y -= gTrackPreviewOrigin.y;
|
||||
|
||||
rotate_map_coordinates(&x, &y, RCT2_GLOBAL(0x00F4414D, uint8) ^ 2);
|
||||
entrance->x = x;
|
||||
entrance->y = y;
|
||||
|
||||
z *= 8;
|
||||
z -= RCT2_GLOBAL(0x00F44146, sint16);
|
||||
z -= gTrackPreviewOrigin.z;
|
||||
z /= 8;
|
||||
|
||||
if (z > 127 || z < -126) {
|
||||
|
@ -1166,9 +1160,7 @@ static bool track_design_save_to_td6_for_tracked_ride(uint8 rideIndex, rct_track
|
|||
sub_6D01B3(td6, PTD_OPERATION_DRAW_OUTLINES, 0, 4096, 4096, 0);
|
||||
|
||||
// Resave global vars for scenery reasons.
|
||||
RCT2_GLOBAL(0x00F44142, sint16) = start_x;
|
||||
RCT2_GLOBAL(0x00F44144, sint16) = start_y;
|
||||
RCT2_GLOBAL(0x00F44146, sint16) = start_z;
|
||||
gTrackPreviewOrigin = (rct_xyz16) { start_x, start_y, start_z };
|
||||
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, sint16) &= 0xFFF9;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_SELECTION_FLAGS, sint16) &= 0xFFF7;
|
||||
|
|
Loading…
Reference in New Issue