Label flags

This commit is contained in:
duncanspumpkin 2018-01-09 19:42:50 +00:00 committed by Duncan
parent b97fb5feef
commit 4551f9c04e
3 changed files with 31 additions and 36 deletions

View File

@ -4701,7 +4701,7 @@ static void vehicle_create_trains(sint32 rideIndex, sint32 x, sint32 y, sint32 z
lastTrain.tail->next_vehicle_on_ride = firstTrain.head->sprite_index;
}
static void vehicle_unset_var_48_b1(rct_vehicle *head)
static void vehicle_unset_update_flag_b1(rct_vehicle *head)
{
rct_vehicle *vehicle = head;
while (true) {
@ -4852,7 +4852,7 @@ static bool ride_create_vehicles(Ride *ride, sint32 rideIndex, rct_xy_element *e
vehicle_update_track_motion(vehicle, nullptr);
}
vehicle_unset_var_48_b1(vehicle);
vehicle_unset_update_flag_b1(vehicle);
}
}
}
@ -4872,7 +4872,7 @@ void loc_6DDF9C(Ride *ride, rct_tile_element *tileElement)
train = GET_VEHICLE(ride->vehicles[i]);
if (i == 0) {
vehicle_update_track_motion(train, nullptr);
vehicle_unset_var_48_b1(train);
vehicle_unset_update_flag_b1(train);
continue;
}

View File

@ -1607,7 +1607,7 @@ static void vehicle_update_measurements(rct_vehicle * vehicle)
return;
uint16 track_elem_type = vehicle->track_type / 4;
if (track_elem_type == TRACK_ELEM_POWERED_LIFT || (vehicle->update_flags & VEHICLE_UPDATE_FLAG_0))
if (track_elem_type == TRACK_ELEM_POWERED_LIFT || (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL))
{
if (!(ride->testing_flags & RIDE_TESTING_POWERED_LIFT))
{
@ -3339,7 +3339,7 @@ static void vehicle_update_departing(rct_vehicle * vehicle)
}
else if (ride->mode == RIDE_MODE_SHUTTLE)
{
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_3;
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE;
vehicle->velocity = 0;
}
}
@ -3736,7 +3736,7 @@ static void vehicle_update_travelling(rct_vehicle * vehicle)
}
else if (ride->mode == RIDE_MODE_SHUTTLE)
{
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_3;
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE;
vehicle->velocity = 0;
}
else
@ -4577,7 +4577,7 @@ static void vehicle_update_motion_boat_hire(rct_vehicle * vehicle)
{
eax = vehicle->speed << 14;
sint32 ebx = (vehicle->speed * mass) >> 2;
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_3)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE)
{
eax = -eax;
}
@ -6432,7 +6432,7 @@ static sint32 vehicle_update_motion_dodgems(rct_vehicle * vehicle)
sint32 ebx = (vehicle->speed * vehicle->mass) >> 2;
sint32 _eax = vehicle->speed << 14;
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_3)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE)
{
_eax = -_eax;
}
@ -6997,7 +6997,7 @@ static void vehicle_update_swinging_car(rct_vehicle * vehicle)
break;
}
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_0)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)
{
dx = 0;
cx = 0;
@ -7131,7 +7131,7 @@ static const uint8 TrackTypeToSpinFunction[256] = {
*/
static void vehicle_update_spinning_car(rct_vehicle * vehicle)
{
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_13)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ROTATION_OFF_WILD_MOUSE)
{
vehicle->spin_speed = 0;
return;
@ -7910,7 +7910,7 @@ static void sub_6DBF3E(rct_vehicle * vehicle)
if (trackType == TRACK_ELEM_TOWER_BASE && vehicle == gCurrentVehicle)
{
if (vehicle->track_progress > 3 && !(vehicle->update_flags & VEHICLE_UPDATE_FLAG_3))
if (vehicle->track_progress > 3 && !(vehicle->update_flags & VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE))
{
rct_xy_element input, output;
sint32 outputZ, outputDirection;
@ -8127,11 +8127,11 @@ loc_6DB41D:
}
// loc_6DB500
// Update VEHICLE_UPDATE_FLAG_0
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_0;
// Update VEHICLE_UPDATE_FLAG_ON_LIFT_HILL
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
if (track_element_is_lift_hill(tileElement))
{
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_0;
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
}
trackType = track_element_get_type(tileElement);
@ -8150,7 +8150,7 @@ loc_6DB41D:
uint16 rideType = get_ride(track_element_get_ride_index(tileElement))->type;
if (trackType == TRACK_ELEM_ROTATION_CONTROL_TOGGLE && rideType == RIDE_TYPE_STEEL_WILD_MOUSE)
{
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_13;
vehicle->update_flags ^= VEHICLE_UPDATE_FLAG_ROTATION_OFF_WILD_MOUSE;
}
}
// Change from original: this used to check if the vehicle allowed doors.
@ -8531,14 +8531,14 @@ static bool vehicle_update_track_motion_backwards_get_new_track(rct_vehicle * ve
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_9;
}
}
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_0;
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
}
}
else
{
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_0)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)
{
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_0;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL)
{
if (_vehicleVelocityF64E08 < 0)
@ -8922,7 +8922,7 @@ loc_6DC476:
vehicle->var_CD = regs.al;
}
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_0;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
vehicle->track_type = (track_element_get_type(tileElement) << 2) | (direction & 3);
vehicle->var_CF = tile_element_get_brake_booster_speed(tileElement);
regs.ax = 0;
@ -9162,9 +9162,9 @@ loc_6DCA9A:
vehicle->track_y = y;
vehicle->track_z = z;
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_0)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)
{
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_0;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_ON_LIFT_HILL;
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL)
{
if (_vehicleVelocityF64E08 < 0)
@ -9339,7 +9339,7 @@ loc_6DCE68:
}
loc_6DCEB2:
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_0)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)
{
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_ON_LIFT_HILL;
}
@ -9416,7 +9416,7 @@ loc_6DCEFF:
regs.eax <<= 14;
regs.ebx *= regs.ebp;
regs.ebx >>= 2;
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_3)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE)
{
regs.eax = -regs.eax;
}
@ -9599,7 +9599,7 @@ sint32 vehicle_update_track_motion(rct_vehicle * vehicle, sint32 * outStation)
sub_6DBF3E(car);
// loc_6DC0F7
if (car->update_flags & VEHICLE_UPDATE_FLAG_0)
if (car->update_flags & VEHICLE_UPDATE_FLAG_ON_LIFT_HILL)
{
_vehicleMotionTrackFlags |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_VEHICLE_ON_LIFT_HILL;
}
@ -9689,8 +9689,7 @@ sint32 vehicle_update_track_motion(rct_vehicle * vehicle, sint32 * outStation)
}
if (vehicleEntry->flags & VEHICLE_ENTRY_FLAG_0)
{
regs.eax = vehicle->speed * 0x4000;
if (regs.eax < vehicle->velocity)
if (vehicle->velocity > (vehicle->speed * 0x4000))
{
goto loc_6DC2FA;
}
@ -9731,14 +9730,12 @@ loc_6DC23A:
regs.eax <<= 14;
regs.ebx *= totalMass;
regs.ebx >>= 2;
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_3)
if (vehicle->update_flags & VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE)
{
regs.eax = -regs.eax;
}
regs.eax -= vehicle->velocity;
regs.edx = vehicle->powered_acceleration;
regs.edx <<= 1;
regs.eax *= regs.edx;
regs.eax *= vehicle->powered_acceleration << 1;
if (regs.ebx != 0)
{
regs.eax /= regs.ebx;

View File

@ -219,7 +219,7 @@ typedef struct rct_vehicle_info {
} rct_vehicle_info;
enum {
VEHICLE_ENTRY_FLAG_0 = 1 << 0,
VEHICLE_ENTRY_FLAG_0 = 1 << 0, // Set on powered vehicles that do not slow down when going down a hill
VEHICLE_ENTRY_FLAG_NO_UPSTOP_WHEELS = 1 << 1,
VEHICLE_ENTRY_FLAG_NO_UPSTOP_BOBSLEIGH = 1 << 2,
VEHICLE_ENTRY_FLAG_MINI_GOLF = 1 << 3,
@ -288,10 +288,10 @@ enum {
};
enum{
VEHICLE_UPDATE_FLAG_0 = (1 << 0),
VEHICLE_UPDATE_FLAG_ON_LIFT_HILL = (1 << 0),
VEHICLE_UPDATE_FLAG_1 = (1 << 1),
VEHICLE_UPDATE_FLAG_WAIT_ON_ADJACENT = (1 << 2),
VEHICLE_UPDATE_FLAG_3 = (1 << 3),
VEHICLE_UPDATE_FLAG_REVERSING_SHUTTLE = (1 << 3), // Shuttle is in reverse
VEHICLE_UPDATE_FLAG_TRAIN_READY_DEPART = (1 << 4),
VEHICLE_UPDATE_FLAG_TESTING = (1 << 5),
VEHICLE_UPDATE_FLAG_6 = (1 << 6),
@ -301,9 +301,7 @@ enum{
VEHICLE_UPDATE_FLAG_ON_BREAK_FOR_DROP = (1 << 10),
VEHICLE_UPDATE_FLAG_USE_INVERTED_SPRITES = (1 << 11), // Used on rides where trains can run for extended periods of time, i.e. the Flying, Lay-down and Multi-dimension RCs.
VEHICLE_UPDATE_FLAG_12 = (1 << 12),
VEHICLE_UPDATE_FLAG_13 = (1 << 13),
VEHICLE_UPDATE_FLAG_14 = (1 << 14),
VEHICLE_UPDATE_FLAG_15 = (1 << 15)
VEHICLE_UPDATE_FLAG_ROTATION_OFF_WILD_MOUSE = (1 << 13) // After passing a rotation toggle track piece this will enable
};
enum {