mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #563 from duncanspumpkin/fix_sitting
Fix peeps sitting. Renamed a function to sprite_move
This commit is contained in:
commit
e9c3e8f1c1
|
@ -719,7 +719,7 @@ void sub_0x0069E9A7(){
|
|||
//return;
|
||||
for (rct_sprite* spr = g_sprite_list; spr < (rct_sprite*)RCT2_ADDRESS_SPRITES_NEXT_INDEX; ++spr){
|
||||
if (spr->unknown.sprite_identifier != 0xFF){
|
||||
sub_69E9D3(spr->unknown.x, spr->unknown.y, spr->unknown.z, spr);
|
||||
sprite_move(spr->unknown.x, spr->unknown.y, spr->unknown.z, spr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ int sub_6939EB(sint16* x, sint16* y, rct_peep* peep){
|
|||
return 1;
|
||||
}
|
||||
peep->var_70 = ebx;
|
||||
if (peep->var_71 != 8 || peep->var_72 != 15){
|
||||
if (peep->var_71 != PEEP_ACTION_THROW_UP || peep->var_72 != 15){
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
*x = peep->x;
|
||||
*y = peep->y;
|
||||
|
@ -264,12 +264,12 @@ void peep_remove(rct_peep* peep){
|
|||
* Falling and its subset drowning
|
||||
*/
|
||||
void peep_update_falling(rct_peep* peep){
|
||||
if (peep->var_71 == 11){
|
||||
if (peep->var_71 == PEEP_ACTION_DROWNING){
|
||||
// Check to see if we are ready to drown.
|
||||
sint16 x, y;
|
||||
sub_6939EB(&x, &y, peep);
|
||||
//RCT2_CALLPROC_X(0x6939EB, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
if (peep->var_71 == 11) return;
|
||||
if (peep->var_71 == PEEP_ACTION_DROWNING) return;
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & 0x80000)){
|
||||
RCT2_GLOBAL(0x13CE952, uint16) = peep->name_string_idx;
|
||||
RCT2_GLOBAL(0x13CE954, uint32) = peep->id;
|
||||
|
@ -311,7 +311,7 @@ void peep_update_falling(rct_peep* peep){
|
|||
if (height - 4 >= peep->z && height < peep->z + 20){
|
||||
// Looks like we are drowning!
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
sub_69E9D3(peep->x, peep->y, height, (rct_sprite*)peep);
|
||||
sprite_move(peep->x, peep->y, height, (rct_sprite*)peep);
|
||||
// Drop balloon if held
|
||||
if (peep->item_standard_flags & PEEP_ITEM_BALLOON){
|
||||
peep->item_standard_flags &= ~PEEP_ITEM_BALLOON;
|
||||
|
@ -325,7 +325,7 @@ void peep_update_falling(rct_peep* peep){
|
|||
|
||||
peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_DROWNING, -1);
|
||||
|
||||
peep->var_71 = 11;
|
||||
peep->var_71 = PEEP_ACTION_DROWNING;
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
|
||||
|
@ -351,13 +351,13 @@ void peep_update_falling(rct_peep* peep){
|
|||
peep_remove(peep);
|
||||
return;
|
||||
}
|
||||
sub_69E9D3(peep->x, peep->y, peep->z - 2, (rct_sprite*)peep);
|
||||
sprite_move(peep->x, peep->y, peep->z - 2, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
return;
|
||||
}
|
||||
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
sub_69E9D3(peep->x, peep->y, saved_height, (rct_sprite*)peep);
|
||||
sprite_move(peep->x, peep->y, saved_height, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
peep->next_x = peep->x & 0xFFE0;
|
||||
|
@ -408,12 +408,12 @@ void peep_update_sitting(rct_peep* peep){
|
|||
if (!(RCT2_GLOBAL(0xF1EE18, uint16) & 1))return;
|
||||
|
||||
int ebx = peep->var_37 & 0x7;
|
||||
int x = peep->x & 0xFFE0 + RCT2_ADDRESS(0x981F2C, uint16)[ebx * 2];
|
||||
int y = peep->y & 0xFFE0 + RCT2_ADDRESS(0x981F2E, uint16)[ebx * 2];
|
||||
int x = (peep->x & 0xFFE0) + RCT2_ADDRESS(0x981F2C, uint16)[ebx * 2];
|
||||
int y = (peep->y & 0xFFE0) + RCT2_ADDRESS(0x981F2E, uint16)[ebx * 2];
|
||||
int z = peep->z;
|
||||
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
sub_69E9D3(x, y, z, (rct_sprite*)peep);
|
||||
sprite_move(x, y, z, (rct_sprite*)peep);
|
||||
|
||||
peep->sprite_direction = ((peep->var_37 + 2) & 3) * 8;
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
@ -462,7 +462,7 @@ void peep_update_sitting(rct_peep* peep){
|
|||
peep_try_get_up_from_sitting(peep);
|
||||
return;
|
||||
}
|
||||
peep->var_71 = 4;
|
||||
peep->var_71 = PEEP_ACTION_SITTING_EAT_FOOD;
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
RCT2_CALLPROC_X(0x693B58, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
@ -480,13 +480,13 @@ void peep_update_sitting(rct_peep* peep){
|
|||
return;
|
||||
}
|
||||
|
||||
peep->var_71 = 5;
|
||||
peep->var_71 = PEEP_ACTION_SITTING_LOOK_AROUND_LEFT;
|
||||
if (rand & 0x80000000){
|
||||
peep->var_71 = 6;
|
||||
peep->var_71 = PEEP_ACTION_SITTING_LOOK_AROUND_RIGHT;
|
||||
}
|
||||
|
||||
if (rand & 0x40000000){
|
||||
peep->var_71 = 4;
|
||||
peep->var_71 = PEEP_ACTION_SITTING_CHECK_WATCH;
|
||||
}
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
|
@ -537,7 +537,7 @@ void peep_update_queuing(rct_peep* peep){
|
|||
if (peep->sprite_type == 0){
|
||||
if (peep->var_7A >= 2000 && (0xFFFF & scenario_rand()) <= 119){
|
||||
// Look at watch
|
||||
peep->var_71 = 1;
|
||||
peep->var_71 = PEEP_ACTION_CHECK_WATCH;
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
RCT2_CALLPROC_X(0x693B58, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
@ -575,7 +575,7 @@ void peep_update_queuing(rct_peep* peep){
|
|||
case 0x2E:
|
||||
case 0x2F:
|
||||
// Look at watch
|
||||
peep->var_71 = 1;
|
||||
peep->var_71 = PEEP_ACTION_CHECK_WATCH;
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
RCT2_CALLPROC_X(0x693B58, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
@ -623,7 +623,7 @@ static void peep_update_entering_park(rct_peep* peep){
|
|||
sint16 x = 0, y = 0;
|
||||
if (sub_6939EB(&x, &y, peep)){
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
sub_69E9D3(x, y, peep->z, (rct_sprite*)peep);
|
||||
sprite_move(x, y, peep->z, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
return;
|
||||
}
|
||||
|
@ -1044,7 +1044,7 @@ void peep_applause()
|
|||
|
||||
// Clap
|
||||
if ((peep->state == PEEP_STATE_WALKING || peep->state == PEEP_STATE_QUEUING) && peep->var_71 >= 254) {
|
||||
peep->var_71 = 26;
|
||||
peep->var_71 = PEEP_ACTION_CLAP;
|
||||
peep->var_72 = 0;
|
||||
peep->var_70 = 0;
|
||||
RCT2_CALLPROC_X(0x00693B58, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
@ -1082,7 +1082,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
|
|||
|
||||
switch (peep->state){
|
||||
case PEEP_STATE_FALLING:
|
||||
*argument_1 = peep->var_71 == 0xB ? STR_DROWNING : STR_WALKING;
|
||||
*argument_1 = peep->var_71 == PEEP_ACTION_DROWNING ? STR_DROWNING : STR_WALKING;
|
||||
*argument_2 = 0;
|
||||
break;
|
||||
case PEEP_STATE_1:
|
||||
|
|
|
@ -208,6 +208,29 @@ enum PEEP_STATE {
|
|||
PEEP_STATE_INSPECTING = 23
|
||||
};
|
||||
|
||||
enum PEEP_ACTION_EVENTS {
|
||||
PEEP_ACTION_CHECK_WATCH = 1,
|
||||
PEEP_ACTION_SHAKE_HEAD = 2,
|
||||
PEEP_ACTION_EMPTY_POCKETS = 3,
|
||||
PEEP_ACTION_SITTING_EAT_FOOD = 4,
|
||||
PEEP_ACTION_SITTING_CHECK_WATCH = 4,
|
||||
PEEP_ACTION_SITTING_LOOK_AROUND_LEFT = 5,
|
||||
PEEP_ACTION_SITTING_LOOK_AROUND_RIGHT = 6,
|
||||
PEEP_ACTION_WOW = 7,
|
||||
PEEP_ACTION_THROW_UP = 8,
|
||||
PEEP_ACTION_JUMP = 9,
|
||||
PEEP_ACTION_STAFF_SWEEP = 10,
|
||||
PEEP_ACTION_DROWNING = 11,
|
||||
PEEP_ACTION_STAFF_ANSWER_CALL = 12,
|
||||
PEEP_ACTION_STAFF_ANSWER_CALL_2 = 13,
|
||||
PEEP_ACTION_STAFF_CHECKBOARD = 14,
|
||||
PEEP_ACTION_STAFF_FIX = 15,
|
||||
PEEP_ACTION_STAFF_FIX_2 = 16,
|
||||
PEEP_ACTION_STAFF_FIX_GROUND = 17,
|
||||
|
||||
PEEP_ACTION_CLAP = 26,
|
||||
};
|
||||
|
||||
enum PEEP_FLAGS {
|
||||
PEEP_FLAGS_LEAVING_PARK = (1 << 0),
|
||||
PEEP_FLAGS_SLOW_WALK = (1 << 1),
|
||||
|
|
|
@ -134,7 +134,7 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
|
|||
newPeep->var_14 = 8;
|
||||
newPeep->sprite_direction = 0;
|
||||
|
||||
sub_69E9D3(_ax, *ecx, _dx, (rct_sprite*)newPeep);
|
||||
sprite_move(_ax, *ecx, _dx, (rct_sprite*)newPeep);
|
||||
|
||||
newPeep->state = PEEP_STATE_PICKED;
|
||||
if (newPeep->x != -32768) {
|
||||
|
@ -202,8 +202,8 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
|
|||
newPeep->var_09 = *((uint8*)(_edx + 1));
|
||||
newPeep->var_15 = *((uint8*)(_edx + 2));
|
||||
|
||||
sub_69E9D3( newPeep->x, newPeep->y, newPeep->z, (rct_sprite*)newPeep);
|
||||
RCT2_CALLPROC_X(0x006EC473, *eax, 0, 0, 0, (int)newPeep, 0, 0);
|
||||
sprite_move( newPeep->x, newPeep->y, newPeep->z, (rct_sprite*)newPeep);
|
||||
invalidate_sprite((rct_sprite*)newPeep);
|
||||
|
||||
newPeep->var_AD = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONTH_YEAR, uint8);
|
||||
newPeep->var_CC = 0xFFFFFFFF;
|
||||
|
|
|
@ -549,7 +549,7 @@ static void ride_remove_cable_lift(rct_ride *ride)
|
|||
spriteIndex = ride->cable_lift;
|
||||
do {
|
||||
vehicle = &(g_sprite_list[spriteIndex].vehicle);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)vehicle, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)vehicle);
|
||||
RCT2_CALLPROC_X(0x0069EDB6, 0, 0, 0, 0, (int)vehicle, 0, 0);
|
||||
spriteIndex = vehicle->next_vehicle_on_train;
|
||||
} while (spriteIndex != SPRITE_INDEX_NULL);
|
||||
|
@ -574,7 +574,7 @@ static void ride_remove_vehicles(rct_ride *ride)
|
|||
spriteIndex = ride->vehicles[i];
|
||||
while (spriteIndex != SPRITE_INDEX_NULL) {
|
||||
vehicle = &(g_sprite_list[spriteIndex].vehicle);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)vehicle, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)vehicle);
|
||||
RCT2_CALLPROC_X(0x0069EDB6, 0, 0, 0, 0, (int)vehicle, 0, 0);
|
||||
spriteIndex = vehicle->next_vehicle_on_train;
|
||||
}
|
||||
|
@ -671,7 +671,7 @@ static void ride_remove_peeps(int rideIndex)
|
|||
if (peep->state == PEEP_STATE_QUEUING_FRONT && peep->var_2C == 0)
|
||||
RCT2_CALLPROC_X(0x006966A9, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
if (exitDirection == 255) {
|
||||
x = peep->next_x + 16;
|
||||
|
@ -680,13 +680,13 @@ static void ride_remove_peeps(int rideIndex)
|
|||
if ((peep->next_z >> 8) & 4)
|
||||
z += 8;
|
||||
z++;
|
||||
RCT2_CALLPROC_X(0x0069E9D3, exitX, 0, exitY, exitZ, (int)peep, 0, 0);
|
||||
sprite_move(exitX, exitY, exitZ, (rct_sprite*)peep);
|
||||
} else {
|
||||
RCT2_CALLPROC_X(0x0069E9D3, exitX, 0, exitY, exitZ, (int)peep, 0, 0);
|
||||
sprite_move(exitX, exitY, exitZ, (rct_sprite*)peep);
|
||||
peep->sprite_direction = exitDirection;
|
||||
}
|
||||
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
peep->state = PEEP_STATE_FALLING;
|
||||
RCT2_CALLPROC_X(0x00693BE5, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
|
||||
|
|
|
@ -622,9 +622,9 @@ void window_guest_overview_mouse_up(){
|
|||
w->var_48C = peep->x;
|
||||
|
||||
RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
sub_69E9D3(0x8000, peep->y, peep->z, (rct_sprite*)peep);
|
||||
sprite_move(0x8000, peep->y, peep->z, (rct_sprite*)peep);
|
||||
peep_decrement_num_riders(peep);
|
||||
peep->state = PEEP_STATE_PICKED;
|
||||
peep->var_2C = 0;
|
||||
|
@ -1224,8 +1224,8 @@ void window_guest_overview_tool_down(){
|
|||
}
|
||||
|
||||
rct_peep* peep = GET_PEEP(w->number);
|
||||
sub_69E9D3(dest_x, dest_y, dest_z, (rct_sprite*)peep);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
sprite_move(dest_x, dest_y, dest_z, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
peep_decrement_num_riders(peep);
|
||||
peep->state = 0;
|
||||
peep_window_state_update(peep);
|
||||
|
@ -1255,8 +1255,8 @@ void window_guest_overview_tool_abort(){
|
|||
rct_peep* peep = GET_PEEP(w->number);
|
||||
if (peep->state != PEEP_STATE_PICKED) return;
|
||||
|
||||
sub_69E9D3( w->var_48C, peep->y, peep->z + 8, (rct_sprite*)peep);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
sprite_move( w->var_48C, peep->y, peep->z + 8, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
if (peep->x != 0x8000){
|
||||
peep_decrement_num_riders(peep);
|
||||
|
|
|
@ -458,9 +458,9 @@ void window_staff_overview_mouseup()
|
|||
w->var_48C = peep->x;
|
||||
|
||||
RCT2_CALLPROC_X(0x0069A512, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
sub_69E9D3( 0x8000, peep->y, peep->z, (rct_sprite*)peep);
|
||||
sprite_move( 0x8000, peep->y, peep->z, (rct_sprite*)peep);
|
||||
peep_decrement_num_riders(peep);
|
||||
peep->state = PEEP_STATE_PICKED;
|
||||
peep_window_state_update(peep);
|
||||
|
@ -1149,8 +1149,8 @@ void window_staff_overview_tool_down(){
|
|||
}
|
||||
|
||||
rct_peep* peep = GET_PEEP(w->number);
|
||||
sub_69E9D3(dest_x, dest_y, dest_z, (rct_sprite*)peep);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
sprite_move(dest_x, dest_y, dest_z, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
peep_decrement_num_riders(peep);
|
||||
peep->state = PEEP_STATE_FALLING;
|
||||
peep_window_state_update(peep);
|
||||
|
@ -1185,8 +1185,8 @@ void window_staff_overview_tool_abort(){
|
|||
rct_peep* peep = GET_PEEP(w->number);
|
||||
if (peep->state != PEEP_STATE_PICKED) return;
|
||||
|
||||
RCT2_CALLPROC_X(0x0069E9D3, w->var_48C, 0, peep->y, peep->z + 8, (int)peep, 0, 0);
|
||||
RCT2_CALLPROC_X(0x006EC473, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
sprite_move(w->var_48C, peep->y, peep->z + 8, (rct_sprite*)peep);
|
||||
invalidate_sprite((rct_sprite*)peep);
|
||||
|
||||
if (peep->x != 0x8000){
|
||||
peep_decrement_num_riders(peep);
|
||||
|
|
|
@ -182,7 +182,7 @@ rct_sprite *create_sprite(uint8 bl)
|
|||
sprite->z = 0;
|
||||
sprite->name_string_idx = 0;
|
||||
sprite->var_14 = 0x10;
|
||||
sprite->pad_09 = 0x14;
|
||||
sprite->var_09 = 0x14;
|
||||
sprite->var_15 = 0x8;
|
||||
sprite->pad_0C[0] = 0x0;
|
||||
sprite->sprite_left = SPRITE_LOCATION_NULL;
|
||||
|
@ -256,11 +256,12 @@ void texteffect_update_all()
|
|||
|
||||
/**
|
||||
* rct2: 0x0069E9D3
|
||||
* Moves a sprite to a new location.
|
||||
* ax: x
|
||||
* cx: y
|
||||
* dx: z
|
||||
*/
|
||||
void sub_69E9D3(int x, int y, int z, rct_sprite* sprite){
|
||||
void sprite_move(int x, int y, int z, rct_sprite* sprite){
|
||||
int new_position = x;
|
||||
if ((uint16)x == 0x8000)new_position = 0x10000;
|
||||
else{
|
||||
|
@ -318,7 +319,7 @@ void sub_69E9D3(int x, int y, int z, rct_sprite* sprite){
|
|||
|
||||
sprite->unknown.sprite_left = new_x - sprite->unknown.var_14;
|
||||
sprite->unknown.sprite_right = new_x + sprite->unknown.var_14;
|
||||
sprite->unknown.sprite_top = new_y - sprite->unknown.pad_09;
|
||||
sprite->unknown.sprite_top = new_y - sprite->unknown.var_09;
|
||||
sprite->unknown.sprite_bottom = new_y + sprite->unknown.var_15;
|
||||
sprite->unknown.x = x;
|
||||
sprite->unknown.y = y;
|
||||
|
|
|
@ -51,7 +51,7 @@ typedef struct {
|
|||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
uint8 pad_09;
|
||||
uint8 var_09;
|
||||
uint16 sprite_index; // 0x0A
|
||||
uint8 pad_0C[2];
|
||||
sint16 x; // 0x0E
|
||||
|
@ -102,7 +102,7 @@ void reset_sprite_list();
|
|||
void reset_0x69EBE4();
|
||||
void move_sprite_to_list(rct_sprite *sprite, uint8 cl);
|
||||
void texteffect_update_all();
|
||||
void sub_69E9D3(int x, int y, int z, rct_sprite* sprite);
|
||||
void sprite_move(int x, int y, int z, rct_sprite* sprite);
|
||||
void balloon_pop(rct_sprite *sprite);
|
||||
void invalidate_sprite(rct_sprite* sprite);
|
||||
|
||||
|
|
Loading…
Reference in New Issue