1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-23 23:04:36 +01:00

Refactor chunk_1 label functions

This commit is contained in:
duncanspumpkin
2015-12-15 18:56:19 +00:00
parent a406a4b344
commit 37efbfd0a5
3 changed files with 24 additions and 22 deletions

View File

@@ -4280,7 +4280,7 @@ void loc_6DDF9C(rct_ride *ride, rct_map_element *mapElement)
for (int i = 0; i < ride->num_vehicles; i++) {
train = GET_VEHICLE(ride->vehicles[i]);
if (i == 0) {
sub_6DAB4C(train, NULL);
vehicle_update_track_motion(train, NULL);
vehicle_unset_var_48_b1(train);
continue;
}
@@ -4300,7 +4300,7 @@ void loc_6DDF9C(rct_ride *ride, rct_map_element *mapElement)
}
car = GET_VEHICLE(spriteIndex);
}
} while (sub_6DAB4C(train, NULL) & 0x400);
} while (vehicle_update_track_motion(train, NULL) & 0x400);
mapElement->flags |= (1 << 5);
car = train;

View File

@@ -1264,7 +1264,7 @@ static void vehicle_update_moving_to_end_of_station(rct_vehicle *vehicle){
vehicle->var_2C = 0;
}
eax = sub_6DAB4C(vehicle, &ebx);
eax = vehicle_update_track_motion(vehicle, &ebx);
if (!(eax&(1 << 5)))
break;
//Fall through to next case
@@ -1308,7 +1308,7 @@ static void vehicle_update_moving_to_end_of_station(rct_vehicle *vehicle){
}
int station;
eax = sub_6DAB4C(vehicle, &station);
eax = vehicle_update_track_motion(vehicle, &station);
if (eax & (1 << 1)){
vehicle->velocity = 0;
@@ -2077,7 +2077,7 @@ static void vehicle_update_departing(rct_vehicle* vehicle) {
break;
}
uint32 flags = sub_6DAB4C(vehicle, NULL);
uint32 flags = vehicle_update_track_motion(vehicle, NULL);
if (flags & (1 << 8)) {
if (ride->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE) {
@@ -2435,7 +2435,7 @@ static void vehicle_update_travelling(rct_vehicle* vehicle) {
return;
}
uint32 flags = sub_6DAB4C(vehicle, NULL);
uint32 flags = vehicle_update_track_motion(vehicle, NULL);
bool skipCheck = false;
if (flags & ((1 << 8) | (1 << 9)) &&
@@ -2689,7 +2689,7 @@ static void vehicle_update_arriving(rct_vehicle* vehicle) {
uint32 flags;
loc_6D8E36:
flags = sub_6DAB4C(vehicle, NULL);
flags = vehicle_update_track_motion(vehicle, NULL);
if (flags & (1 << 7) &&
RCT2_GLOBAL(0x00F64E35, uint8) == 0) {
vehicle_update_collision_setup(vehicle);
@@ -3559,7 +3559,7 @@ static void vehicle_update_travelling_cable_lift(rct_vehicle* vehicle) {
if (vehicle->velocity <= 439800) {
vehicle->var_2C = 4398;
}
int flags = sub_6DAB4C(vehicle, NULL);
int flags = vehicle_update_track_motion(vehicle, NULL);
if (flags & (1 << 11)) {
vehicle->status = VEHICLE_STATUS_TRAVELLING;
@@ -5029,21 +5029,17 @@ const sint32 *dword_9A2970 = (sint32*)0x009A2970;
/**
*
* rct2: 0x006DAB6F
* rct2: 0x006DAB90
*/
static void sub_6DAB4C_chunk_1(rct_vehicle *vehicle)
static void vehicle_update_track_motion_up_stop_check(rct_vehicle *vehicle)
{
rct_ride_type_vehicle *vehicleEntry = vehicle_get_vehicle_entry(vehicle);
int verticalG, lateralG;
RCT2_GLOBAL(0x00F64E2C, uint8) = 0;
RCT2_GLOBAL(0x00F64E04, rct_vehicle*) = vehicle;
RCT2_GLOBAL(0x00F64E18, uint32) = 0;
RCT2_GLOBAL(0x00F64E1C, uint32) = 0xFFFFFFFF;
// No up stops (coaster types)
if (vehicleEntry->var_12 & (1 << 1)) {
int trackType = vehicle->track_type >> 2;
if (trackType < 68 || trackType >= 87) {
if (!track_element_is_covered(trackType)) {
vehicle_get_g_forces(vehicle, &verticalG, &lateralG);
lateralG = abs(lateralG);
if (lateralG <= 150) {
@@ -5061,8 +5057,9 @@ static void sub_6DAB4C_chunk_1(rct_vehicle *vehicle)
}
}
} else if (vehicleEntry->var_12 & (1 << 2)) {
// No up stops bobsleigh type
int trackType = vehicle->track_type >> 2;
if (trackType < 68 || trackType >= 87) {
if (!track_element_is_covered(trackType)) {
vehicle_get_g_forces(vehicle, &verticalG, &lateralG);
if (dword_9A2970[vehicle->var_1F] < 0) {
@@ -5926,7 +5923,7 @@ void sub_6DBF3E(rct_vehicle *vehicle)
*
* rct2: 0x006DAB4C
*/
int sub_6DAB4C(rct_vehicle *vehicle, int *outStation)
int vehicle_update_track_motion(rct_vehicle *vehicle, int *outStation)
{
registers regs = { 0 };
@@ -5951,7 +5948,12 @@ int sub_6DAB4C(rct_vehicle *vehicle, int *outStation)
goto loc_6DC3A7;
}
sub_6DAB4C_chunk_1(vehicle);
RCT2_GLOBAL(0x00F64E2C, uint8) = 0;
RCT2_GLOBAL(0x00F64E04, rct_vehicle*) = vehicle;
RCT2_GLOBAL(0x00F64E18, uint32) = 0;
RCT2_GLOBAL(0x00F64E1C, uint32) = 0xFFFFFFFF;
vehicle_update_track_motion_up_stop_check(vehicle);
sub_6DAB4C_chunk_2(vehicle);
sub_6DAB4C_chunk_3(vehicle);
@@ -6811,8 +6813,8 @@ loc_6DC316:
regs.eax = RCT2_GLOBAL(0x00F64E18, uint32);
regs.ebx = RCT2_GLOBAL(0x00F64E1C, uint32);
if (ride->lifecycle_flags & RIDE_LIFECYCLE_SIX_FLAGS_DEPRECATED) {
regs.eax &= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_DERAILED;
regs.eax &= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION;
regs.eax &= ~VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_DERAILED;
regs.eax &= ~VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_COLLISION;
}
goto end;

View File

@@ -305,7 +305,7 @@ int vehicle_is_used_in_pairs(rct_vehicle *vehicle);
rct_vehicle *vehicle_get_head(rct_vehicle *vehicle);
int vehicle_update_track_motion_cable_lift(rct_vehicle *cableLift);
rct_vehicle *cable_lift_segment_create(int rideIndex, int x, int y, int z, int direction, uint16 var_44, sint32 var_24, bool head);
int sub_6DAB4C(rct_vehicle *vehicle, int *outStation);
int vehicle_update_track_motion(rct_vehicle *vehicle, int *outStation);
rct_ride_type_vehicle *vehicle_get_vehicle_entry(rct_vehicle *vehicle);
int vehicle_get_total_num_peeps(rct_vehicle *vehicle);
void vehicle_invalidate_window(rct_vehicle *vehicle);