1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-20 13:33:02 +01:00

Label track_progress offset. Name cable lift motion update

This commit is contained in:
duncanspumpkin
2015-12-08 23:19:40 +00:00
parent 80f034251e
commit e09e00c931
3 changed files with 21 additions and 23 deletions

View File

@@ -4486,7 +4486,7 @@ bool ride_create_cable_lift(int rideIndex, bool isApplying)
tail->next_vehicle_on_ride = head->sprite_index;
ride->lifecycle_flags |= RIDE_LIFECYCLE_CABLE_LIFT;
sub_6DEF56(head);
vehicle_update_track_motion_cable_lift(head);
return true;
}

View File

@@ -1143,7 +1143,7 @@ static void vehicle_update_cable_lift_moving_to_end_of_station(rct_vehicle *vehi
vehicle->var_2C = 0;
}
if (!(sub_6DEF56(vehicle) & (1 << 0)))
if (!(vehicle_update_track_motion_cable_lift(vehicle) & (1 << 0)))
return;
vehicle->velocity = 0;
@@ -1162,7 +1162,7 @@ static void vehicle_update_cable_lift_waiting_to_depart(rct_vehicle *vehicle)
vehicle->var_2C = 0;
}
sub_6DEF56(vehicle);
vehicle_update_track_motion_cable_lift(vehicle);
// Next check to see if the second part of the cable lift
// is at the front of the passenger vehicle to simulate the
@@ -1204,7 +1204,7 @@ static void vehicle_update_cable_lift_travelling(rct_vehicle *vehicle)
if (passengerVehicle->update_flags & VEHICLE_UPDATE_FLAG_BROKEN_TRAIN)
return;
if (!(sub_6DEF56(vehicle) & (1 << 1)))
if (!(vehicle_update_track_motion_cable_lift(vehicle) & (1 << 1)))
return;
vehicle->velocity = 0;
@@ -3362,15 +3362,15 @@ bool sub_6DF01A_loop(rct_vehicle* vehicle) {
for (; vehicle->var_24 >= 13962; RCT2_GLOBAL(0x00F64E10, uint32)++) {
uint8 trackType = vehicle->track_type >> 2;
if (trackType == TRACK_ELEM_CABLE_LIFT_HILL &&
vehicle->var_34 == 160) {
vehicle->track_progress == 160) {
RCT2_GLOBAL(0x00F64E18, uint32) |= (1 << 1);
}
uint16 var_34 = vehicle->var_34 + 1;
uint16 trackProgress = vehicle->track_progress + 1;
const rct_vehicle_info *moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, 0);
uint16 unk16 = *((uint16*)((int)moveInfo - 2));
if (var_34 >= unk16) {
uint16 trackTotalProgress = *((uint16*)((int)moveInfo - 2));
if (trackProgress >= trackTotalProgress) {
RCT2_GLOBAL(0x00F64E36, uint8) = gTrackDefinitions[trackType].vangle_end;
RCT2_GLOBAL(0x00F64E37, uint8) = gTrackDefinitions[trackType].bank_end;
rct_map_element* trackElement =
@@ -3402,11 +3402,11 @@ bool sub_6DF01A_loop(rct_vehicle* vehicle) {
vehicle->track_z = outputZ;
vehicle->track_direction = outputDirection;
vehicle->track_type |= output.element->properties.track.type << 2;
var_34 = 0;
trackProgress = 0;
}
vehicle->var_34 = var_34;
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, var_34);
vehicle->track_progress = trackProgress;
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, trackProgress);
rct_xyz16 unk = {
.x = moveInfo->x,
.y = moveInfo->y,
@@ -3447,10 +3447,10 @@ bool sub_6DF21B_loop(rct_vehicle* vehicle) {
rct_xyz16 *unk_F64E20 = RCT2_ADDRESS(0x00F64E20, rct_xyz16);
for (; (sint32)vehicle->var_24 < 0; RCT2_GLOBAL(0x00F64E10, uint32)++) {
uint16 var_34 = vehicle->var_34 - 1;
uint16 trackProgress = vehicle->track_progress - 1;
const rct_vehicle_info *moveInfo;
if ((sint16)var_34 == -1) {
if ((sint16)trackProgress == -1) {
uint8 trackType = vehicle->track_type >> 2;
RCT2_GLOBAL(0x00F64E36, uint8) = gTrackDefinitions[trackType].vangle_start;
RCT2_GLOBAL(0x00F64E37, uint8) = gTrackDefinitions[trackType].bank_start;
@@ -3487,14 +3487,12 @@ bool sub_6DF21B_loop(rct_vehicle* vehicle) {
}
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, 0);
uint16 unk16 = *((uint16*)((int)moveInfo - 2));
var_34 = unk16 - 1;
uint16 trackTotalProgress = *((uint16*)((int)moveInfo - 2));
trackProgress = trackTotalProgress - 1;
}
vehicle->var_34 = var_34;
vehicle->track_progress = trackProgress;
vehicle->var_34 = var_34;
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, var_34);
moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, trackProgress);
rct_xyz16 unk = {
.x = moveInfo->x,
.y = moveInfo->y,
@@ -3534,7 +3532,7 @@ bool sub_6DF21B_loop(rct_vehicle* vehicle) {
*
* rct2: 0x006DEF56
*/
int sub_6DEF56(rct_vehicle *cableLift)
int vehicle_update_track_motion_cable_lift(rct_vehicle *cableLift)
{
rct_ride_type* rideEntry = GET_RIDE_ENTRY(cableLift->ride_subtype);
rct_ride_type_vehicle* vehicleEntry = &rideEntry->vehicles[cableLift->vehicle_type];
@@ -3700,7 +3698,7 @@ rct_vehicle *cable_lift_segment_create(int rideIndex, int x, int y, int z, int d
sprite_move(16, 16, z, (rct_sprite*)current);
current->track_type = (TRACK_ELEM_CABLE_LIFT_HILL << 2) | (current->sprite_direction >> 3);
current->var_34 = 164;
current->track_progress = 164;
current->update_flags = VEHICLE_UPDATE_FLAG_1;
current->status = VEHICLE_STATUS_MOVING_TO_END_OF_STATION;
current->sub_state = 0;

View File

@@ -112,7 +112,7 @@ typedef struct {
uint8 ride; // 0x30
uint8 vehicle_type; // 0x31
rct_vehicle_colour colours; // 0x32
uint16 var_34;
uint16 track_progress; // 0x34
union {
sint16 track_direction; // 0x36 (0000 0000 0000 0011)
sint16 track_type; // 0x36 (0000 0011 1111 1100)
@@ -280,7 +280,7 @@ void vehicle_get_g_forces(rct_vehicle *vehicle, int *verticalG, int *lateralG);
void vehicle_set_map_toolbar(rct_vehicle *vehicle);
int vehicle_is_used_in_pairs(rct_vehicle *vehicle);
rct_vehicle *vehicle_get_head(rct_vehicle *vehicle);
int sub_6DEF56(rct_vehicle *cableLift);
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, uint32 var_24, bool head);
bool sub_6DD365(rct_vehicle *vehicle);
int sub_6DAB4C(rct_vehicle *vehicle, int *outStation);