1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-04 13:42:55 +01:00

add news item subject locating

This commit is contained in:
IntelOrca
2014-04-12 02:14:31 +01:00
parent 71ea2cc072
commit f2f1f46880
3 changed files with 41 additions and 4 deletions

View File

@@ -164,10 +164,15 @@ static int news_item_get_new_history_slot()
return 60;
}
/**
*
* rct2: 0x0066BA74
*/
void news_item_get_subject_location(int type, int subject, int *x, int *y, int *z)
{
int i;
rct_ride *ride;
rct_sprite *sprite;
rct_sprite *sprite, *sprite_2;
switch (type) {
case NEWS_ITEM_RIDE:
@@ -189,6 +194,30 @@ void news_item_get_subject_location(int type, int subject, int *x, int *y, int *
}
break;
case NEWS_ITEM_PEEP_1:
sprite = &(RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite)[subject]);
*x = sprite->unknown.x;
*y = sprite->unknown.y;
*z = sprite->unknown.z;
if (*x != 0x8000)
break;
if (sprite->peep.state != 3 && sprite->peep.state != 7) {
*x = 0x8000;
break;
}
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[sprite->peep.current_ride]);
if (ride->var_1D0 & 1) {
*x = 0x8000;
break;
}
sprite_2 = &(RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite)[ride->var_086[sprite->peep.var_6A]]);
for (i = 0; i < sprite->peep.var_6B; i++)
sprite_2 = &(RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite)[*((uint16*)&sprite_2->pad_00[0x3E])]);
*x = sprite_2->unknown.x;
*y = sprite_2->unknown.y;
*z = sprite_2->unknown.z;
break;
case NEWS_ITEM_PEEP_2:
sprite = &(RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite)[subject]);

View File

@@ -70,7 +70,11 @@ typedef struct {
uint8 var_31;
uint8 pad_32[0x08];
uint8 happiness; // 0x3A
uint8 pad_3B[0x61];
uint8 pad_03B[0x2D];
uint8 current_ride; // 0x68
uint8 var_6A;
uint8 var_6B;
uint8 pad_6C[0x30];
uint32 id; // 0x9C
uint8 pad_A0[0x10];
rct_peep_thought thoughts[PEEP_MAX_THOUGHTS]; // 0xB0

View File

@@ -31,7 +31,9 @@ typedef struct {
uint8 type; // 0x000
uint8 pad_001[0x4F];
uint16 var_050; // 0x050
uint8 pad_052[0x9E];
uint8 pad_052[0x34];
uint16 var_086[1];
uint8 pad_088[0x68];
sint16 excitement; // 0x0F0
sint16 intensity; // 0x0F2
sint16 nausea; // 0x0F4
@@ -53,7 +55,9 @@ typedef struct {
uint16 reliability; // 0x146
uint8 pad_148[0x51];
uint8 var_199;
uint8 pad_19A[0xC6];
uint8 pad_19A[0x36];
uint32 var_1D0;
uint8 pad_1D4[0x8C];
} rct_ride;
/**