1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 12:03:07 +01:00

Added peep_window_state_update

This commit is contained in:
Duncan Frost
2014-09-20 14:35:11 +01:00
parent 2f64d2a6db
commit 388b8ec337
3 changed files with 42 additions and 9 deletions

View File

@@ -106,6 +106,38 @@ void peep_update_all()
}
}
/**
* rct2: 0x0069A42F
* Call after changing a peeps state to insure that
* all relevant windows update. Note also increase ride
* count if on/entering a ride.
*/
void peep_window_state_update(rct_peep* peep){
rct_window* w = window_find_by_id(WC_PEEP, peep->sprite_index);
if (w){
RCT2_CALLPROC_X(w->event_handlers[WE_INVALIDATE], 0, 0, 0, 0, (int)w, 0, 0);
}
if (peep->type == PEEP_TYPE_GUEST){
// Update action label
widget_invalidate(WC_PEEP, peep->sprite_index, 12);
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;
}
window_invalidate_by_id(WC_GUEST_LIST,0);
}
else{
// Update action label
widget_invalidate(WC_PEEP, peep->sprite_index, 9);
window_invalidate_by_id(WC_STAFF_LIST, 0);
}
}
/** New function removes peep from
* park existance. Works with staff.
*/
@@ -194,7 +226,7 @@ void peep_update_falling(rct_peep* peep){
RCT2_CALLPROC_X(0x693B58, 0, 0, 0, 0, (int)peep, 0, 0);
RCT2_CALLPROC_X(0x6EC473, 0, 0, 0, 0, (int)peep, 0, 0);
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
return;
}
}
@@ -234,7 +266,7 @@ void peep_update_falling(rct_peep* peep){
peep->next_z += edx << 8;
RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0);
peep->state = PEEP_STATE_1;
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
}
/**
@@ -251,7 +283,7 @@ void peep_update_queuing(rct_peep* peep){
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->state = 1;
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
return;
}
@@ -261,7 +293,7 @@ void peep_update_queuing(rct_peep* peep){
peep->var_36 = 0;
RCT2_CALLPROC_X(0x69A409, 0, 0, 0, 0, (int)peep, 0, 0);
peep->state = PEEP_STATE_QUEUING_FRONT;
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
peep->var_2C = 0;
return;
}
@@ -271,7 +303,7 @@ void peep_update_queuing(rct_peep* peep){
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->state = 1;
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
}
RCT2_CALLPROC_X(0x693C9E, 0, 0, 0, 0, (int)peep, 0, 0);
@@ -335,7 +367,7 @@ void peep_update_queuing(rct_peep* peep){
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->state = 1;
RCT2_CALLPROC_X(0x69A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
}
}

View File

@@ -494,6 +494,7 @@ int get_peep_face_sprite_large(rct_peep *peep);
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);
/**
* rct2: 0x699F5A

View File

@@ -628,7 +628,7 @@ void window_guest_overview_mouse_up(){
RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0);
peep->state = 9;
peep->var_2C = 0;
RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
break;
case WIDX_RENAME:
window_text_input_open(w, widgetIndex, 0x5AC, 0x5AD, peep->name_string_idx, peep->id);
@@ -1228,7 +1228,7 @@ void window_guest_overview_tool_down(){
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->state = 0;
RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
peep->var_71 = 0xFF;
peep->var_6D = 0;
peep->var_70 = 0;
@@ -1261,7 +1261,7 @@ void window_guest_overview_tool_abort(){
if (peep->x != 0x8000){
RCT2_CALLPROC_X(0x0069A409, 0, 0, 0, 0, (int)peep, 0, 0);
peep->state = 0;
RCT2_CALLPROC_X(0x0069A42F, 0, 0, 0, 0, (int)peep, 0, 0);
peep_window_state_update(peep);
peep->var_71 = 0xFF;
peep->var_6D = 0;
peep->var_70 = 0;