mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implemented vehicle update space rings and haunted house
This commit is contained in:
parent
e06ad99a93
commit
093d49253f
|
@ -49,6 +49,8 @@ static void vehicle_update_moving_to_end_of_station(rct_vehicle *vehicle);
|
|||
static void vehicle_update_waiting_for_passengers(rct_vehicle* vehicle);
|
||||
static void vehicle_update_waiting_to_depart(rct_vehicle* vehicle);
|
||||
static void vehicle_update_ferris_wheel_rotating(rct_vehicle* vehicle);
|
||||
static void vehicle_update_space_rings_operating(rct_vehicle* vehicle);
|
||||
static void vehicle_update_haunted_house_operating(rct_vehicle* vehicle);
|
||||
static void vehicle_update_bumpcar_mode(rct_vehicle* vehicle);
|
||||
static void vehicle_update_swinging(rct_vehicle* vehicle);
|
||||
static void vehicle_update_simulator_operating(rct_vehicle* vehicle);
|
||||
|
@ -1067,14 +1069,18 @@ static void vehicle_update(rct_vehicle *vehicle)
|
|||
case VEHICLE_STATUS_FERRIS_WHEEL_ROTATING:
|
||||
vehicle_update_ferris_wheel_rotating(vehicle);
|
||||
break;
|
||||
case VEHICLE_STATUS_SPACE_RINGS_OPERATING:
|
||||
vehicle_update_space_rings_operating(vehicle);
|
||||
break;
|
||||
case VEHICLE_STATUS_HAUNTED_HOUSE_OPERATING:
|
||||
vehicle_update_haunted_house_operating(vehicle);
|
||||
break;
|
||||
case VEHICLE_STATUS_DEPARTING:
|
||||
case VEHICLE_STATUS_TRAVELLING:
|
||||
case VEHICLE_STATUS_ARRIVING:
|
||||
case VEHICLE_STATUS_UNLOADING_PASSENGERS:
|
||||
case VEHICLE_STATUS_TRAVELLING_07:
|
||||
case VEHICLE_STATUS_ROTATING:
|
||||
case VEHICLE_STATUS_SPACE_RINGS_OPERATING:
|
||||
case VEHICLE_STATUS_HAUNTED_HOUSE_OPERATING:
|
||||
case VEHICLE_STATUS_CROOKED_HOUSE_OPERATING:
|
||||
case VEHICLE_STATUS_TRAVELLING_15:
|
||||
{
|
||||
|
@ -1675,7 +1681,7 @@ static void vehicle_update_waiting_to_depart(rct_vehicle* vehicle) {
|
|||
vehicle_invalidate_window(vehicle);
|
||||
vehicle->var_1F = 0;
|
||||
vehicle->var_4C = 0xFFFF;
|
||||
//6d97cb
|
||||
vehicle_update_space_rings_operating(vehicle);
|
||||
break;
|
||||
case RIDE_MODE_HAUNTED_HOUSE:
|
||||
vehicle->status = VEHICLE_STATUS_HAUNTED_HOUSE_OPERATING;
|
||||
|
@ -1683,7 +1689,7 @@ static void vehicle_update_waiting_to_depart(rct_vehicle* vehicle) {
|
|||
vehicle_invalidate_window(vehicle);
|
||||
vehicle->var_1F = 0;
|
||||
vehicle->var_4C = 0xFFFF;
|
||||
//6d9641
|
||||
vehicle_update_haunted_house_operating(vehicle);
|
||||
break;
|
||||
case RIDE_MODE_CROOKED_HOUSE:
|
||||
vehicle->status = VEHICLE_STATUS_CROOKED_HOUSE_OPERATING;
|
||||
|
@ -1813,7 +1819,7 @@ static void vehicle_update_ferris_wheel_rotating(rct_vehicle* vehicle) {
|
|||
}
|
||||
|
||||
if (shouldStop) {
|
||||
var_4C = vehicle->var_4C;
|
||||
var_4C = (sint8)(vehicle->var_4C & 0xFF);
|
||||
vehicle->var_4C &= 0xFF00;
|
||||
vehicle->var_4C |= 0xFF & (-abs(var_4C));
|
||||
}
|
||||
|
@ -1861,6 +1867,96 @@ static void vehicle_update_simulator_operating(rct_vehicle* vehicle) {
|
|||
vehicle->var_C0 = 0;
|
||||
}
|
||||
|
||||
/* rct2: 0x006D97CB */
|
||||
static void vehicle_update_space_rings_operating(rct_vehicle* vehicle) {
|
||||
if (RCT2_GLOBAL(0x00F64E34, uint8) == 0)
|
||||
return;
|
||||
|
||||
uint8* edi = RCT2_ADDRESS(0x009A0ACC, uint8*)[vehicle->sub_state];
|
||||
|
||||
uint8 al = edi[(uint16)(vehicle->var_4C + 1)];
|
||||
if (al != 0xFF) {
|
||||
vehicle->var_4C++;
|
||||
if (al == vehicle->var_1F)
|
||||
return;
|
||||
vehicle->var_1F = al;
|
||||
invalidate_sprite_2((rct_sprite*)vehicle);
|
||||
return;
|
||||
}
|
||||
|
||||
vehicle->status = VEHICLE_STATUS_ARRIVING;
|
||||
vehicle_invalidate_window(vehicle);
|
||||
vehicle->sub_state = 0;
|
||||
vehicle->var_C0 = 0;
|
||||
}
|
||||
|
||||
/* rct2: 0x006D9641*/
|
||||
static void vehicle_update_haunted_house_operating(rct_vehicle* vehicle) {
|
||||
if (RCT2_GLOBAL(0x00F64E34, uint8) == 0)
|
||||
return;
|
||||
|
||||
if (vehicle->var_1F != 0) {
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_TICKS, uint32) & 1) {
|
||||
vehicle->var_1F++;
|
||||
invalidate_sprite_2((rct_sprite*)vehicle);
|
||||
|
||||
if (vehicle->var_1F == 19)
|
||||
vehicle->var_1F = 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint16* edi = RCT2_ADDRESS(0x009A0ABC, uint16*)[vehicle->sub_state];
|
||||
|
||||
uint16 ax = *edi;
|
||||
if ((uint16)(vehicle->var_4C + 1) > ax) {
|
||||
vehicle->status = VEHICLE_STATUS_ARRIVING;
|
||||
vehicle_invalidate_window(vehicle);
|
||||
vehicle->sub_state = 0;
|
||||
vehicle->var_C0 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
vehicle->var_4C++;
|
||||
switch (vehicle->var_4C) {
|
||||
case 45:
|
||||
audio_play_sound_at_location(
|
||||
SOUND_HAUNTED_HOUSE_SCARE,
|
||||
vehicle->x,
|
||||
vehicle->y,
|
||||
vehicle->z);
|
||||
break;
|
||||
case 75:
|
||||
vehicle->var_1F = 1;
|
||||
invalidate_sprite_2((rct_sprite*)vehicle);
|
||||
break;
|
||||
case 400:
|
||||
audio_play_sound_at_location(
|
||||
SOUND_HAUNTED_HOUSE_SCREAM_1,
|
||||
vehicle->x,
|
||||
vehicle->y,
|
||||
vehicle->z);
|
||||
break;
|
||||
case 745:
|
||||
audio_play_sound_at_location(
|
||||
SOUND_HAUNTED_HOUSE_SCARE,
|
||||
vehicle->x,
|
||||
vehicle->y,
|
||||
vehicle->z);
|
||||
break;
|
||||
case 775:
|
||||
vehicle->var_1F = 1;
|
||||
invalidate_sprite_2((rct_sprite*)vehicle);
|
||||
break;
|
||||
case 1100:
|
||||
audio_play_sound_at_location(
|
||||
SOUND_HAUNTED_HOUSE_SCREAM_2,
|
||||
vehicle->x,
|
||||
vehicle->y,
|
||||
vehicle->z);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* rct2: 0x006D9547 */
|
||||
static void vehicle_update_top_spin_operating(rct_vehicle* vehicle) {
|
||||
if (RCT2_GLOBAL(0x00F64E34, uint8) == 0)
|
||||
|
|
Loading…
Reference in New Issue