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:
committed by
Aaron van Geffen
parent
066980a9d4
commit
41f0b181bf
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user