mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-25 07:02:50 -04:00
86 lines
2.4 KiB
C
86 lines
2.4 KiB
C
#include "bg_post_item.h"
|
|
|
|
#include "m_name_table.h"
|
|
#include "m_post_office.h"
|
|
#include "m_rcp.h"
|
|
#include "sys_matrix.h"
|
|
#include "m_common_data.h"
|
|
|
|
typedef struct bg_post_item_s {
|
|
ACTOR actor_class;
|
|
u8 keep_mail_sum;
|
|
u8 update_mail_flag;
|
|
} BG_POST_ITEM_ACTOR;
|
|
|
|
static void bPTI_actor_ct(ACTOR* actorx, GAME* game);
|
|
static void bPTI_actor_draw(ACTOR* actorx, GAME* game);
|
|
|
|
ACTOR_PROFILE BgPostItem_Profile = {
|
|
mAc_PROFILE_BGPOSTITEM,
|
|
ACTOR_PART_ITEM,
|
|
ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED,
|
|
EMPTY_NO,
|
|
ACTOR_OBJ_BANK_KEEP,
|
|
sizeof(BG_POST_ITEM_ACTOR),
|
|
&bPTI_actor_ct,
|
|
mActor_NONE_PROC1,
|
|
mActor_NONE_PROC1,
|
|
&bPTI_actor_draw,
|
|
NULL,
|
|
};
|
|
|
|
static void bPTI_actor_ct(ACTOR* actorx, GAME* game) {
|
|
BG_POST_ITEM_ACTOR* bg_post_item = (BG_POST_ITEM_ACTOR*)actorx;
|
|
int post_girl_type;
|
|
|
|
if (Common_Get(time.now_sec) >= (19 * mTM_SECONDS_IN_HOUR) ||
|
|
Common_Get(time.now_sec) < (7 * mTM_SECONDS_IN_HOUR)) {
|
|
post_girl_type = 1;
|
|
} else {
|
|
post_girl_type = 0;
|
|
}
|
|
|
|
Common_Set(post_girl_npc_type, post_girl_type);
|
|
bg_post_item->update_mail_flag = TRUE;
|
|
}
|
|
|
|
extern Gfx obj_letterT_mat_model[];
|
|
extern Gfx obj_letterT_gfx_model[];
|
|
|
|
static void bPTI_actor_draw(ACTOR* actorx, GAME* game) {
|
|
static float setX[mPO_MAIL_STORAGE_SIZE] = { 80.0f, 120.0f, 160.0f, 200.0f, 240.0f };
|
|
BG_POST_ITEM_ACTOR* bg_post_item = (BG_POST_ITEM_ACTOR*)actorx;
|
|
int keep_mail_sum;
|
|
|
|
if (bg_post_item->update_mail_flag == TRUE) {
|
|
bg_post_item->keep_mail_sum = mPO_get_keep_mail_sum();
|
|
bg_post_item->update_mail_flag = FALSE;
|
|
}
|
|
|
|
keep_mail_sum = bg_post_item->keep_mail_sum;
|
|
if (keep_mail_sum > 0) {
|
|
GRAPH* graph = game->graph;
|
|
f32* setX_p = setX;
|
|
Gfx* gfx;
|
|
|
|
_texture_z_light_fog_prim(graph);
|
|
|
|
OPEN_DISP(graph);
|
|
gfx = NOW_POLY_OPA_DISP;
|
|
|
|
gSPDisplayList(gfx++, obj_letterT_mat_model);
|
|
for (keep_mail_sum; keep_mail_sum != 0; keep_mail_sum--) {
|
|
Matrix_translate(*setX_p, 60.0f, 60.0f, 0);
|
|
Matrix_scale(0.01f, 0.01f, 0.01f, 1);
|
|
|
|
gDPPipeSync(gfx++);
|
|
gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
|
gSPDisplayList(gfx++, obj_letterT_gfx_model);
|
|
setX_p++;
|
|
}
|
|
|
|
SET_POLY_OPA_DISP(gfx);
|
|
CLOSE_DISP(graph);
|
|
}
|
|
}
|