Fix peeps sitting. Renamed a function to sprite_move

This commit is contained in:
Duncan Frost 2014-11-12 17:45:39 +00:00
parent 34df31b2d3
commit bd06488450
8 changed files with 35 additions and 34 deletions

View File

@ -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);
}
}
}

View File

@ -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;
@ -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);
@ -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;
}

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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);