From 573fe0c6f7ca98d50c48012c543797cd46a2c33e Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Sat, 20 Sep 2014 14:46:50 +0100 Subject: [PATCH] Added peep_decrement_num_riders --- src/peep/peep.c | 24 +++++++++++++++++++----- src/peep/peep.h | 2 +- src/windows/guest.c | 6 +++--- src/windows/staff.c | 4 ++-- 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 552fbd1d14..5adf0ec92f 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -106,6 +106,20 @@ void peep_update_all() } } +/** +* rct2: 0x0069A409 +* Decreases rider count if on/entering a ride. +*/ +void peep_decrement_num_riders(rct_peep* peep){ + if (peep->state == PEEP_STATE_ON_RIDE + || peep->state == PEEP_STATE_ENTERING_RIDE){ + + rct_ride* ride = GET_RIDE(peep->current_ride); + ride->num_riders--; + ride->var_14D |= 0xC; + } +} + /** * rct2: 0x0069A42F * Call after changing a peeps state to insure that @@ -264,7 +278,7 @@ void peep_update_falling(rct_peep* peep){ edx = 8; } peep->next_z += edx << 8; - RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = PEEP_STATE_1; peep_window_state_update(peep); } @@ -281,7 +295,7 @@ void peep_update_queuing(rct_peep* peep){ rct_ride* ride = GET_RIDE(peep->current_ride); if (ride->status == RIDE_STATUS_CLOSED || ride->status == RIDE_STATUS_TESTING){ RCT2_CALLPROC_X(0x6966A9, 0, 0, 0, 0, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 1; peep_window_state_update(peep); return; @@ -291,7 +305,7 @@ void peep_update_queuing(rct_peep* peep){ if (peep->var_74 == 0xFFFF){ //Happens every time peep goes onto ride. peep->var_36 = 0; - RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = PEEP_STATE_QUEUING_FRONT; peep_window_state_update(peep); peep->var_2C = 0; @@ -301,7 +315,7 @@ void peep_update_queuing(rct_peep* peep){ peep->sprite_direction ^= (1 << 4); RCT2_CALLPROC_X(0x6EC473, 0, 0, 0, 0, (int)peep, 0, 0); RCT2_CALLPROC_X(0x6966A9, 0, 0, 0, 0, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 1; peep_window_state_update(peep); } @@ -365,7 +379,7 @@ void peep_update_queuing(rct_peep* peep){ peep->sprite_direction ^= (1 << 4); RCT2_CALLPROC_X(0x6EC473, 0, 0, 0, 0, (int)peep, 0, 0); RCT2_CALLPROC_X(0x6966A9, 0, 0, 0, 0, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 1; peep_window_state_update(peep); } diff --git a/src/peep/peep.h b/src/peep/peep.h index 1c48209aea..c19313a32b 100644 --- a/src/peep/peep.h +++ b/src/peep/peep.h @@ -495,7 +495,7 @@ int peep_check_easteregg_name(int index, rct_peep *peep); int peep_get_easteregg_name_id(rct_peep *peep); int peep_is_mechanic(rct_peep *peep); void peep_window_state_update(rct_peep* peep); - +void peep_decrement_num_riders(rct_peep* peep); /** * rct2: 0x699F5A * al:thought_type diff --git a/src/windows/guest.c b/src/windows/guest.c index 6c91d108d9..ee38271759 100644 --- a/src/windows/guest.c +++ b/src/windows/guest.c @@ -625,7 +625,7 @@ void window_guest_overview_mouse_up(){ RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); RCT2_CALLPROC_X(0x0069E9D3, 0x8000, 0, peep->y, peep->z, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 9; peep->var_2C = 0; peep_window_state_update(peep); @@ -1226,7 +1226,7 @@ void window_guest_overview_tool_down(){ rct_peep* peep = GET_PEEP(w->number); RCT2_CALLPROC_X(0x0069E9D3, dest_x, 0, dest_y, dest_z, (int)peep, 0, 0); RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 0; peep_window_state_update(peep); peep->var_71 = 0xFF; @@ -1259,7 +1259,7 @@ void window_guest_overview_tool_abort(){ RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); if (peep->x != 0x8000){ - RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 0; peep_window_state_update(peep); peep->var_71 = 0xFF; diff --git a/src/windows/staff.c b/src/windows/staff.c index c6a8e2141f..8caeb0483c 100644 --- a/src/windows/staff.c +++ b/src/windows/staff.c @@ -461,9 +461,9 @@ void window_staff_overview_mouseup() RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0); RCT2_CALLPROC_X(0x0069E9D3, 0x8000, 0, peep->y, peep->z, (int)peep, 0, 0); - RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0); + peep_decrement_num_riders(peep); peep->state = 9; - RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0); + peep_window_state_update(peep); break; case WIDX_FIRE: window_staff_fire_prompt_open(peep);