Prepare cur_test_track_location for type change

This commit is contained in:
duncanspumpkin 2019-12-24 09:00:41 +00:00
parent a5ad2f9a87
commit c08958a705
4 changed files with 39 additions and 8 deletions

View File

@ -961,8 +961,17 @@ private:
dst->ChairliftBullwheelLocation[i] = { src->chairlift_bullwheel_location[i].x,
src->chairlift_bullwheel_location[i].y, src->chairlift_bullwheel_z[i] / 2 };
}
dst->cur_test_track_z = src->cur_test_track_z / 2;
dst->cur_test_track_location = src->cur_test_track_location;
if (src->cur_test_track_location.isNull())
{
dst->cur_test_track_location.setNull();
dst->cur_test_track_z = 0xFF;
}
else
{
dst->cur_test_track_location = { src->cur_test_track_location.x, src->cur_test_track_location.y };
dst->cur_test_track_z = src->cur_test_track_z / 2;
}
dst->testing_flags = src->testing_flags;
dst->current_test_segment = src->current_test_segment;
dst->current_test_station = 0xFF;

View File

@ -609,7 +609,19 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src)
dst->previous_lateral_g = src->previous_lateral_g;
// pad_106[0x2];
dst->testing_flags = src->testing_flags;
dst->cur_test_track_location = src->cur_test_track_location;
if (src->cur_test_track_location.isNull())
{
dst->cur_test_track_location.setNull();
dst->cur_test_track_z = 0xFF;
}
else
{
dst->cur_test_track_location = { static_cast<uint8_t>(src->cur_test_track_location.x),
static_cast<uint8_t>(src->cur_test_track_location.y) };
dst->cur_test_track_z = src->cur_test_track_z;
}
dst->turn_count_default = src->turn_count_default;
dst->turn_count_banked = src->turn_count_banked;
dst->turn_count_sloped = src->turn_count_sloped;
@ -624,7 +636,6 @@ void S6Exporter::ExportRide(rct2_ride* dst, const Ride* src)
dst->sheltered_length = src->sheltered_length;
dst->var_11C = src->var_11C;
dst->num_sheltered_sections = src->num_sheltered_sections;
dst->cur_test_track_z = src->cur_test_track_z;
dst->cur_num_customers = src->cur_num_customers;
dst->num_customers_timeout = src->num_customers_timeout;

View File

@ -614,7 +614,18 @@ public:
dst->previous_lateral_g = src->previous_lateral_g;
// pad_106[0x2];
dst->testing_flags = src->testing_flags;
dst->cur_test_track_location = src->cur_test_track_location;
if (src->cur_test_track_location.isNull())
{
dst->cur_test_track_location.setNull();
dst->cur_test_track_z = 0xFF;
}
else
{
dst->cur_test_track_location = { src->cur_test_track_location.x, src->cur_test_track_location.y };
dst->cur_test_track_z = src->cur_test_track_z;
}
dst->turn_count_default = src->turn_count_default;
dst->turn_count_banked = src->turn_count_banked;
dst->turn_count_sloped = src->turn_count_sloped;
@ -629,7 +640,6 @@ public:
dst->sheltered_length = src->sheltered_length;
dst->var_11C = src->var_11C;
dst->num_sheltered_sections = src->num_sheltered_sections;
dst->cur_test_track_z = src->cur_test_track_z;
dst->cur_num_customers = src->cur_num_customers;
dst->num_customers_timeout = src->num_customers_timeout;

View File

@ -1595,9 +1595,10 @@ static void vehicle_update_measurements(rct_vehicle* vehicle)
// If we have already evaluated this track piece skip to next section
uint16_t map_location = (vehicle->track_x / 32) | ((vehicle->track_y / 32) << 8);
if (vehicle->track_z / 8 != ride->cur_test_track_z || map_location != ride->cur_test_track_location.xy)
TileCoordsXYZ curTrackLoc{ CoordsXYZ{ vehicle->track_x, vehicle->track_y, vehicle->track_z } };
if (curTrackLoc.z != ride->cur_test_track_z || map_location != ride->cur_test_track_location.xy)
{
ride->cur_test_track_z = vehicle->track_z / 8;
ride->cur_test_track_z = curTrackLoc.z;
ride->cur_test_track_location.xy = map_location;
if (ride_get_entrance_location(ride, ride->current_test_station).isNull())