mirror of https://github.com/OpenRCT2/OpenRCT2.git
Added vehicle update move to end of station
This commit is contained in:
parent
691914e4e4
commit
d52a5a1850
|
@ -600,7 +600,7 @@ enum {
|
|||
RIDE_MODE_ROTATING_LIFT,
|
||||
RIDE_MODE_STATION_TO_STATION,
|
||||
RIDE_MODE_SINGLE_RIDE_PER_ADMISSION,
|
||||
RIDE_MODE_UNLIMITED_RIDES_PER_ADMISSION,
|
||||
RIDE_MODE_UNLIMITED_RIDES_PER_ADMISSION = 10,
|
||||
RIDE_MODE_MAZE,
|
||||
RIDE_MODE_RACE,
|
||||
RIDE_MODE_BUMPERCAR,
|
||||
|
@ -610,7 +610,7 @@ enum {
|
|||
RIDE_MODE_FORWARD_ROTATION,
|
||||
RIDE_MODE_BACKWARD_ROTATION,
|
||||
RIDE_MODE_FILM_AVENGING_AVIATORS,
|
||||
RIDE_MODE_3D_FILM_MOUSE_TAILS,
|
||||
RIDE_MODE_3D_FILM_MOUSE_TAILS = 20,
|
||||
RIDE_MODE_SPACE_RINGS,
|
||||
RIDE_MODE_BEGINNERS,
|
||||
RIDE_MODE_LIM_POWERED_LAUNCH,
|
||||
|
@ -620,7 +620,7 @@ enum {
|
|||
RIDE_MODE_INTENSE,
|
||||
RIDE_MODE_BERSERK,
|
||||
RIDE_MODE_HAUNTED_HOUSE,
|
||||
RIDE_MODE_CIRCUS_SHOW,
|
||||
RIDE_MODE_CIRCUS_SHOW = 30,
|
||||
RIDE_MODE_DOWNWARD_LAUNCH,
|
||||
RIDE_MODE_CROOKED_HOUSE,
|
||||
RIDE_MODE_FREEFALL_DROP,
|
||||
|
|
|
@ -43,6 +43,7 @@ static void vehicle_ride_null_update_travelling(rct_vehicle *vehicle);
|
|||
static void vehicle_ride_null_update_arriving(rct_vehicle *vehicle);
|
||||
|
||||
static void vehicle_update_doing_circus_show(rct_vehicle *vehicle);
|
||||
static void vehicle_update_moving_to_end_of_station(rct_vehicle *vehicle);
|
||||
|
||||
static void vehicle_update_sound(rct_vehicle *vehicle);
|
||||
static int vehicle_update_scream_sound(rct_vehicle *vehicle);
|
||||
|
@ -871,6 +872,8 @@ static void vehicle_update(rct_vehicle *vehicle)
|
|||
|
||||
switch (vehicle->status) {
|
||||
case VEHICLE_STATUS_MOVING_TO_END_OF_STATION:
|
||||
vehicle_update_moving_to_end_of_station(vehicle);
|
||||
break;
|
||||
case VEHICLE_STATUS_WAITING_FOR_PASSENGERS:
|
||||
case VEHICLE_STATUS_WAITING_TO_DEPART:
|
||||
case VEHICLE_STATUS_DEPARTING:
|
||||
|
@ -932,6 +935,115 @@ static void vehicle_ride_null_update_arriving(rct_vehicle *vehicle)
|
|||
vehicle->status = VEHICLE_STATUS_MOVING_TO_END_OF_STATION;
|
||||
}
|
||||
|
||||
static void sub_6DAB4C(rct_vehicle* vehicle, int* eax, int* ebx){
|
||||
int eax_, ebx_, ecx, edx, esi, ebp, edi;
|
||||
esi = (int)vehicle;
|
||||
RCT2_CALLFUNC_X(0x006DAB4C, &eax_, &ebx_, &ecx, &edx, &esi, &edi, &ebp);
|
||||
|
||||
*eax = eax_;
|
||||
*ebx = ebx_;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006D7BCC
|
||||
*/
|
||||
static void vehicle_update_moving_to_end_of_station(rct_vehicle *vehicle){
|
||||
rct_ride* ride = GET_RIDE(vehicle->ride);
|
||||
int eax, ebx;
|
||||
|
||||
switch (ride->mode){
|
||||
case RIDE_MODE_UPWARD_LAUNCH:
|
||||
case RIDE_MODE_ROTATING_LIFT:
|
||||
case RIDE_MODE_DOWNWARD_LAUNCH:
|
||||
case RIDE_MODE_FREEFALL_DROP:
|
||||
if (vehicle->velocity >= -131940){
|
||||
vehicle->var_2C = -3298;
|
||||
}
|
||||
if (vehicle->velocity < -131940){
|
||||
vehicle->velocity = vehicle->velocity / 16;
|
||||
vehicle->var_2C = 0;
|
||||
}
|
||||
|
||||
sub_6DAB4C(vehicle, &eax, &ebx);
|
||||
if (!(eax&(1 << 5)))
|
||||
break;
|
||||
//Fall through to next case
|
||||
case RIDE_MODE_BUMPERCAR:
|
||||
case RIDE_MODE_SWING:
|
||||
case RIDE_MODE_ROTATION:
|
||||
case RIDE_MODE_FORWARD_ROTATION:
|
||||
case RIDE_MODE_BACKWARD_ROTATION:
|
||||
case RIDE_MODE_FILM_AVENGING_AVIATORS:
|
||||
case RIDE_MODE_FILM_THRILL_RIDERS:
|
||||
case RIDE_MODE_BEGINNERS:
|
||||
case RIDE_MODE_INTENSE:
|
||||
case RIDE_MODE_BERSERK:
|
||||
case RIDE_MODE_3D_FILM_MOUSE_TAILS:
|
||||
case RIDE_MODE_3D_FILM_STORM_CHASERS:
|
||||
case RIDE_MODE_3D_FILM_SPACE_RAIDERS:
|
||||
case RIDE_MODE_SPACE_RINGS:
|
||||
case RIDE_MODE_HAUNTED_HOUSE:
|
||||
case RIDE_MODE_CROOKED_HOUSE:
|
||||
case RIDE_MODE_CIRCUS_SHOW:
|
||||
vehicle->current_station = 0;
|
||||
vehicle->velocity = 0;
|
||||
vehicle->var_2C = 0;
|
||||
vehicle->status = VEHICLE_STATUS_WAITING_FOR_PASSENGERS;
|
||||
vehicle->var_51 = 0;
|
||||
vehicle_invalidate_window(vehicle);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
rct_ride_type* rideEntry = GET_RIDE_ENTRY(vehicle->ride_subtype);
|
||||
rct_ride_type_vehicle* vehicleEntry = &rideEntry->vehicles[vehicle->vehicle_type];
|
||||
|
||||
if (!(vehicleEntry->var_14 & (1 << 3))){
|
||||
if (vehicle->velocity <= 131940){
|
||||
vehicle->var_2C = 3298;
|
||||
}
|
||||
}
|
||||
if (vehicle->velocity > 131940){
|
||||
vehicle->velocity = vehicle->velocity / 16;
|
||||
vehicle->var_2C = 0;
|
||||
}
|
||||
|
||||
int station;
|
||||
sub_6DAB4C(vehicle, &eax, &station);
|
||||
|
||||
if (eax & (1 << 1)){
|
||||
vehicle->velocity = 0;
|
||||
vehicle->var_2C = 0;
|
||||
vehicle->var_51++;
|
||||
|
||||
if (ride->mode == RIDE_MODE_RACE &&
|
||||
vehicle->var_51 >= 40){
|
||||
vehicle->status = VEHICLE_STATUS_WAITING_FOR_PASSENGERS;
|
||||
vehicle->var_51 = 0;
|
||||
vehicle_invalidate_window(vehicle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (vehicle->velocity > 98955){
|
||||
vehicle->var_51 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(eax & (1 << 0)))
|
||||
break;
|
||||
|
||||
vehicle->current_station = station;
|
||||
vehicle->velocity = 0;
|
||||
vehicle->var_2C = 0;
|
||||
vehicle->status = VEHICLE_STATUS_WAITING_FOR_PASSENGERS;
|
||||
vehicle->var_51 = 0;
|
||||
vehicle_invalidate_window(vehicle);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006D95F7
|
||||
|
|
Loading…
Reference in New Issue