1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-20 21:43:06 +01:00

Display flat rides correctly in previews

This commit is contained in:
Richard Jenkins
2018-01-02 17:21:40 +00:00
committed by Aaron van Geffen
parent 066980a9d4
commit 41f0b181bf
4 changed files with 23 additions and 13 deletions

View File

@@ -515,6 +515,9 @@ static void window_track_place_draw_mini_preview_track(rct_track_td6 *td6, sint3
{
uint8 rotation = (_currentTrackPieceDirection + get_current_rotation()) & 3;
rct_td6_track_element *trackElement = td6->track_elements;
const rct_preview_track * * trackBlockArray = (ride_type_has_flag(td6->type, RIDE_TYPE_FLAG_HAS_TRACK)) ? TrackBlocks : FlatRideTrackBlocks;
while (trackElement->type != 255) {
sint32 trackType = trackElement->type;
if (trackType == TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP) {
@@ -522,7 +525,7 @@ static void window_track_place_draw_mini_preview_track(rct_track_td6 *td6, sint3
}
// Follow a single track piece shape
const rct_preview_track *trackBlock = TrackBlocks[trackType];
const rct_preview_track *trackBlock = trackBlockArray[trackType];
while (trackBlock->index != 255) {
sint16 x = origin.x;
sint16 y = origin.y;

View File

@@ -32,6 +32,8 @@
#define RCT12_PATROL_AREA_SIZE 128
#define RCT12_STAFF_TYPE_COUNT 4
#define RCT12_NUM_COLOUR_SCHEMES 4
#define RCT12_MAX_VEHICLES_PER_RIDE 32
#define RCT12_MAX_VEHICLE_COLOURS 32
#define RCT12_SOUND_ID_NULL 0xFF
#define RCT12_EXPENDITURE_TABLE_MONTH_COUNT 16

View File

@@ -1384,15 +1384,7 @@ static sint32 track_design_place_maze(rct_track_td6 * td6, sint16 x, sint16 y, s
static bool track_design_place_ride(rct_track_td6 * td6, sint16 x, sint16 y, sint16 z, uint8 rideIndex)
{
const rct_preview_track ** trackBlockArray;
if (ride_type_has_flag(td6->type, RIDE_TYPE_FLAG_HAS_TRACK))
{
trackBlockArray = TrackBlocks;
}
else
{
trackBlockArray = FlatRideTrackBlocks;
}
const rct_preview_track * * trackBlockArray = (ride_type_has_flag(td6->type, RIDE_TYPE_FLAG_HAS_TRACK)) ? TrackBlocks : FlatRideTrackBlocks;
gTrackPreviewOrigin.x = x;
gTrackPreviewOrigin.y = y;
@@ -1803,6 +1795,17 @@ static bool track_design_place_preview(rct_track_td6 * td6, money32 * cost, uint
ride->track_colour_supports[i] = td6->track_support_colour[i];
}
// Flat rides need their vehicle colours loaded for display
// in the preview window
if (!ride_type_has_flag(td6->type, RIDE_TYPE_FLAG_HAS_TRACK))
{
for (sint32 i = 0; i < RCT12_MAX_VEHICLE_COLOURS; i++)
{
ride->vehicle_colours[i] = td6->vehicle_colours[i];
ride->vehicle_colours_extended[i] = td6->vehicle_additional_colour[i];
}
}
byte_9D8150 = true;
uint8 backup_rotation = _currentTrackPieceDirection;
uint32 backup_park_flags = gParkFlags;
@@ -2018,7 +2021,7 @@ static money32 place_track_design(sint16 x, sint16 y, sint16 z, uint8 flags, uin
ride->track_colour_supports[i] = td6->track_support_colour[i];
}
for (sint32 i = 0; i < 32; i++)
for (sint32 i = 0; i < MAX_VEHICLES_PER_RIDE; i++)
{
ride->vehicle_colours[i].body_colour = td6->vehicle_colours[i].body_colour;
ride->vehicle_colours[i].trim_colour = td6->vehicle_colours[i].trim_colour;

View File

@@ -719,12 +719,14 @@ static rct_track_td6 *track_design_save_to_td6(uint8 rideIndex)
(ride->colour_scheme_type & 3) |
(1 << 3); // Version .TD6
for (sint32 i = 0; i < 32; i++) {
for (sint32 i = 0; i < RCT12_MAX_VEHICLES_PER_RIDE; i++)
{
td6->vehicle_colours[i] = ride->vehicle_colours[i];
td6->vehicle_additional_colour[i] = ride->vehicle_colours_extended[i];
}
for (sint32 i = 0; i < RCT12_NUM_COLOUR_SCHEMES; 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];