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

implement more sub_6DAB4C

This commit is contained in:
IntelOrca
2015-11-22 17:50:33 +00:00
parent 1252ac6f7f
commit e8a78f0e2a
3 changed files with 87 additions and 1 deletions

View File

@@ -4973,3 +4973,31 @@ bool track_element_is_station(rct_map_element *trackElement)
return false;
}
}
bool track_element_is_covered(int trackElementType)
{
switch (trackElementType) {
case TRACK_ELEM_FLAT_COVERED:
case TRACK_ELEM_25_DEG_UP_COVERED:
case TRACK_ELEM_60_DEG_UP_COVERED:
case TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED:
case TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED:
case TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED:
case TRACK_ELEM_25_DEG_UP_TO_FLAT_COVERED:
case TRACK_ELEM_25_DEG_DOWN_COVERED:
case TRACK_ELEM_60_DEG_DOWN_COVERED:
case TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED:
case TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED:
case TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED:
case TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED:
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED:
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED:
case TRACK_ELEM_S_BEND_LEFT_COVERED:
case TRACK_ELEM_S_BEND_RIGHT_COVERED:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED:
return true;
default:
return false;
}
}

View File

@@ -557,5 +557,6 @@ int track_get_actual_bank(rct_map_element *mapElement, int bank);
int track_get_actual_bank_2(int rideType, int trackColour, int bank);
bool track_element_is_station(rct_map_element *trackElement);
bool track_element_is_covered(int trackElementType);
#endif

View File

@@ -907,6 +907,59 @@ static void sub_6DEDE8(rct_vehicle *vehicle)
RCT2_CALLPROC_X(0x006DEDE8, 0, 0, 0, 0, (int)vehicle, 0, 0);
}
static void vehicle_update_play_water_splash_sound()
{
if (RCT2_GLOBAL(0x00F64E08, sint32) <= 0x20364) {
return;
}
audio_play_sound_at_location(
SOUND_WATER_SPLASH,
RCT2_GLOBAL(0x00F64E20, uint16),
RCT2_GLOBAL(0x00F64E22, uint16),
RCT2_GLOBAL(0x00F64E24, uint16)
);
}
/**
*
* rct2: 0x006DB59E
*/
static void vehicle_update_handle_water_splash(rct_vehicle *vehicle)
{
rct_ride_type *rideEntry = GET_RIDE_ENTRY(vehicle->ride_subtype);
int trackType = vehicle->track_type >> 2;
if (!(rideEntry->flags & RIDE_ENTRY_FLAG_8)) {
if (rideEntry->flags & RIDE_ENTRY_FLAG_9) {
if (!vehicle->is_child) {
if (track_element_is_covered(trackType)) {
rct_vehicle *nextVehicle = GET_VEHICLE(vehicle->next_vehicle_on_ride);
rct_vehicle *nextNextVehicle = GET_VEHICLE(nextVehicle->next_vehicle_on_ride);
if (!track_element_is_covered(nextNextVehicle->track_type >> 2)) {
if (vehicle->var_34 == 4) {
vehicle_update_play_water_splash_sound();
}
}
}
}
}
} else {
if (trackType == TRACK_ELEM_25_DEG_DOWN_TO_FLAT) {
if (vehicle->var_34 == 12) {
vehicle_update_play_water_splash_sound();
}
}
}
if (!vehicle->is_child) {
if (trackType == TRACK_ELEM_WATER_SPLASH) {
if (vehicle->var_34 == 48) {
vehicle_update_play_water_splash_sound();
}
}
}
}
/**
*
* rct2: 0x006DAB4C
@@ -1193,8 +1246,12 @@ loc_6DB500:
regs.ax = 0;
loc_6DB59A:
vehicle->var_34 = regs.ax;
vehicle_update_handle_water_splash(vehicle);
loc_6DB706:
regs.esi = vehicle;
RCT2_CALLFUNC_Y(0x006DB59A, &regs);
RCT2_CALLFUNC_Y(0x006DB706, &regs);
goto end;
loc_6DB94A: