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:
@@ -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]);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user