mirror of https://github.com/OpenRCT2/OpenRCT2.git
refactor ride_get_measurement
This commit is contained in:
parent
19d3852f9c
commit
3ecfee72a2
|
@ -1350,6 +1350,34 @@ void ride_measurements_update()
|
|||
}
|
||||
}
|
||||
|
||||
rct_ride_measurement *ride_get_existing_measurement(int rideIndex)
|
||||
{
|
||||
int i;
|
||||
rct_ride_measurement *measurement;
|
||||
|
||||
for (i = 0; i < MAX_RIDE_MEASUREMENTS; i++) {
|
||||
measurement = GET_RIDE_MEASUREMENT(i);
|
||||
if (measurement->ride_index == rideIndex)
|
||||
return measurement;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rct_ride_measurement *ride_get_free_measurement()
|
||||
{
|
||||
int i;
|
||||
rct_ride_measurement *measurement;
|
||||
|
||||
for (i = 0; i < MAX_RIDE_MEASUREMENTS; i++) {
|
||||
measurement = GET_RIDE_MEASUREMENT(i);
|
||||
if (measurement->ride_index == 255)
|
||||
return measurement;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006B66D9
|
||||
|
@ -1370,19 +1398,11 @@ rct_ride_measurement *ride_get_measurement(int rideIndex, rct_string_id *message
|
|||
}
|
||||
|
||||
// Check if a measurement already exists for this ride
|
||||
for (i = 0; i < MAX_RIDE_MEASUREMENTS; i++) {
|
||||
measurement = GET_RIDE_MEASUREMENT(i);
|
||||
if (measurement->ride_index == i)
|
||||
goto use_measurement;
|
||||
}
|
||||
|
||||
measurement = ride_get_existing_measurement(rideIndex);
|
||||
if (measurement == NULL) {
|
||||
// Find a free measurement
|
||||
for (i = 0; i < MAX_RIDE_MEASUREMENTS; i++) {
|
||||
measurement = GET_RIDE_MEASUREMENT(i);
|
||||
if (measurement->ride_index == 255)
|
||||
goto new_measurement;
|
||||
}
|
||||
|
||||
measurement = ride_get_free_measurement();
|
||||
if (measurement == NULL) {
|
||||
// Use last recently used measurement for some other ride
|
||||
lruIndex = 0;
|
||||
lruTicks = 0xFFFFFFFF;
|
||||
|
@ -1398,8 +1418,8 @@ rct_ride_measurement *ride_get_measurement(int rideIndex, rct_string_id *message
|
|||
i = lruIndex;
|
||||
measurement = GET_RIDE_MEASUREMENT(i);
|
||||
ride->measurement_index = 255;
|
||||
}
|
||||
|
||||
new_measurement:
|
||||
measurement->ride_index = rideIndex;
|
||||
ride->measurement_index = i;
|
||||
measurement->flags = 0;
|
||||
|
@ -1407,8 +1427,8 @@ new_measurement:
|
|||
measurement->flags |= RIDE_MEASUREMENT_FLAG_G_FORCES;
|
||||
measurement->num_items = 0;
|
||||
measurement->current_item = 0;
|
||||
}
|
||||
|
||||
use_measurement:
|
||||
measurement->last_use_tick = RCT2_GLOBAL(RCT2_ADDRESS_SCENARIO_TICKS, uint32);
|
||||
if (measurement->flags & 1) {
|
||||
if (message != NULL) *message = 0;
|
||||
|
|
Loading…
Reference in New Issue