Files
ac-decomp/src/ac_lotus_draw.c_inc
T
2024-01-30 16:09:34 -08:00

123 lines
2.8 KiB
Plaintext

u16 aLOT_obj_01_lotus_pal[] = {
#include "assets/aLOT_obj_01_lotus_pal.inc"
};
u16 obj_02_lotus_pal[] = {
#include "assets/obj_02_lotus_pal.inc"
};
u16 obj_03_lotus_pal[] = {
#include "assets/obj_03_lotus_pal.inc"
};
u16 obj_04_lotus_pal[] = {
#include "assets/obj_04_lotus_pal.inc"
};
u16 obj_05_lotus_pal[] = {
#include "assets/obj_05_lotus_pal.inc"
};
u16 obj_06_lotus_pal[] = {
#include "assets/obj_06_lotus_pal.inc"
};
u16 obj_07_lotus_pal[] = {
#include "assets/obj_07_lotus_pal.inc"
};
u16 obj_08_lotus_pal[] = {
#include "assets/obj_08_lotus_pal.inc"
};
u16 obj_09_lotus_pal[] = {
#include "assets/obj_09_lotus_pal.inc"
};
static int aLOT_actor_draw_before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) {
static int on_off_tbl[12] = {
0, 0, 0, 0,
1, 1, 1, 0,
0, 0, 0, 0
};
BOOL draw;
int month;
int day;
Gfx* gfx;
GRAPH* graph;
lbRTC_time_c* rtc_time;
graph = game->graph;
rtc_time = Common_GetPointer(time.rtc_time);
month = rtc_time->month;
day = rtc_time->day;
draw = on_off_tbl[month - 1];
OPEN_DISP(graph);
gfx = NOW_POLY_OPA_DISP;
if (joint_idx == 0x12) {
switch(month) {
case lbRTC_MAY:
{
if (day < 26) {
draw = FALSE;
}
}
break;
case lbRTC_AUGUST:
{
if (day < 26) {
draw = TRUE;
}
}
break;
}
if (draw == FALSE) {
*joint_shape = NULL;
}
}
SET_POLY_OPA_DISP(gfx);
CLOSE_DISP(graph);
return TRUE;
}
static void aLOT_actor_draw(ACTOR* actor, GAME* game) {
static u16* paltbl[9] = {
aLOT_obj_01_lotus_pal, obj_02_lotus_pal, obj_03_lotus_pal,
obj_04_lotus_pal, obj_05_lotus_pal, obj_06_lotus_pal,
obj_07_lotus_pal, obj_08_lotus_pal, obj_09_lotus_pal
};
LOTUS_ACTOR* lotus;
GRAPH* graph;
cKF_SkeletonInfo_R_c* keyframe;
Mtx* mtx;
Gfx* gfx;
lotus = (LOTUS_ACTOR*)actor;
graph = game->graph;
keyframe = &lotus->structure_class.keyframe;
if (lotus->structure_class.arg0 >= 0) {
mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyframe->skeleton->num_shown_joints);
if (mtx != NULL) {
_texture_z_light_fog_prim_npc(graph);
OPEN_DISP(graph);
gfx = NOW_POLY_OPA_DISP;
gSPSegment(gfx++, G_MWO_SEGMENT_8, paltbl[lotus->structure_class.arg0]);
SET_POLY_OPA_DISP(gfx);
cKF_Si3_draw_R_SV(game, keyframe, mtx, aLOT_actor_draw_before, NULL, actor);
CLOSE_DISP(graph);
}
}
}