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

Fix #5489: Sprite index crash for car view on car ride

This commit is contained in:
Ted John
2017-06-25 17:52:21 +01:00
parent a749d0dcc0
commit 9c269ae94b
2 changed files with 9 additions and 4 deletions

View File

@@ -18,6 +18,7 @@
- Fix: [#4055] Sort rides by track type: Sorting rule is not really clear (inconsistent?)
- Fix: [#5400] New Ride window does not focus properly on newly invented ride.
- Fix: [#5009] Ride rating calculations can overflow
- Fix: [#5489] Sprite index crash for car view on car ride.
- Fix: Non-invented vehicles can be used via track designs in select-by-track-type mode.
- Fix: Track components added by OpenRCT2 are now usable in older scenarios.
- Technical: [#5047] Add ride ratings tests

View File

@@ -1789,9 +1789,13 @@ static void window_ride_init_viewport(rct_window *w)
rct_ride_entry* ride_entry = get_ride_entry_by_ride(ride);
if (ride_entry && ride_entry->tab_vehicle != 0){
rct_vehicle* vehicle = GET_VEHICLE(focus.sprite.sprite_id);
focus.sprite.sprite_id = vehicle->next_vehicle_on_train;
if (vehicle->next_vehicle_on_train != SPRITE_INDEX_NULL) {
focus.sprite.sprite_id = vehicle->next_vehicle_on_train;
}
}
if (focus.sprite.sprite_id != SPRITE_INDEX_NULL) {
focus.sprite.type |= VIEWPORT_FOCUS_TYPE_SPRITE;
}
focus.sprite.type |= 0xC0;
}
else if (eax >= ride->num_vehicles && eax < (ride->num_vehicles + ride->num_stations)){
sint32 stationIndex = -1;
@@ -1807,7 +1811,7 @@ static void window_ride_init_viewport(rct_window *w)
focus.coordinate.x = (eax & 0xFF) << 5;
focus.coordinate.y = (eax & 0xFF00) >> 3;
focus.coordinate.z = ride->station_heights[stationIndex] << 3;
focus.sprite.type |= 0x40;
focus.sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
}
else{
if (eax > 0){
@@ -1821,7 +1825,7 @@ static void window_ride_init_viewport(rct_window *w)
focus.coordinate.z = view->z;
focus.coordinate.zoom = view->zoom;
focus.sprite.type |= 0x40;
focus.sprite.type |= VIEWPORT_FOCUS_TYPE_COORDINATE;
}
focus.coordinate.var_480 = w->viewport_focus_coordinates.var_480;