#ifndef AC_NPC_MASK_CAT2_H #define AC_NPC_MASK_CAT2_H #include "types.h" #include "m_actor.h" #include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif typedef struct npc_mask_cat2_s NPC_MASK_CAT2_ACTOR; typedef void (*aNM2_TALK_PROC)(NPC_MASK_CAT2_ACTOR*, GAME_PLAY*); typedef void (*aNM2_INIT_PROC)(NPC_MASK_CAT2_ACTOR*, GAME_PLAY*); typedef void (*aNM2_MOVE_PROC)(ACTOR*, GAME*); /* sizeof(np_mask_cat2) == 0x9d0 */ struct npc_mask_cat2_s { /* 0x000 */ NPC_ACTOR npc_class; /* 0x994 */ int action; /* 0x998 */ aNM2_MOVE_PROC move_proc; /* 0x99C */ BOOL lock_camera_flag; /* 0x9A0 */ int camera_morph_counter; /* 0x9A4 */ s16 camera_move; /* 0x9A6 */ s8 camera_move_cnt; /* 0x9A7 */ s8 camera_move_set_counter; /* 0x9A8 */ float camera_move_y; /* 0x9AC */ float camera_move_range; /* 0x9B0 */ ACTOR* train_door_actor; /* 0x9B4 */ int obj_look_type; /* 0x9B8 */ float obj_dist_ground; /* 0x9BC */ BOOL camera_eyes_flag; /* 0x9C0 */ float wait_timer; /* 0x9C4 */ int unkRotation; // related to head rotation (see aNM2_sitdown_init) /* 0x9C8 */ u32 arg; /* 0x9CC */ ACTOR* sasho_actor; }; extern ACTOR_PROFILE Npc_Mask_Cat2_Profile; // clang-format off enum { aNM2_INIT_ANNOUNCE_START_WAIT, // 0 aNM2_INIT_NONE_1, // 1 aNM2_INIT_NONE_2, // 2 aNM2_INIT_NONE_3, // 3 aNM2_INIT_ANNOUNCE_START_WAIT2, // 4 aNM2_INIT_NONE_4, // 5 aNM2_INIT_NONE_5, // 6 aNM2_INIT_NONE_6, // 7 aNM2_INIT_WALK_DECK, // 8 aNM2_INIT_TURN_DECK, // 9 aNM2_INIT_KEITAI_OFF_START_WAIT, // 10 aNM2_INIT_KEITAI_OFF_END_WAIT, // 11 aNM2_INIT_NONE_7, // 12 aNM2_INIT_NONE_8, // 13 aNM2_INIT_APPROACH, // 14 aNM2_INIT_TALK_START_WAIT, // 15 aNM2_INIT_TALK_START_WAIT2, // 16 aNM2_INIT_SITDOWN_START_WAIT, // 17 aNM2_INIT_SITDOWN, // 18 aNM2_INIT_NONE_9, // 19 aNM2_INIT_DRAW_MENU_OPEN_WAIT, // 20 aNM2_INIT_DRAW_MENU_CLOSE_WAIT, // 21 aNM2_INIT_MSG_WIN_OPEN_WAIT, // 22 aNM2_INIT_TALK_END_WAIT, // 23 aNM2_INIT_SCENE_CHANGE_WAIT, // 24 aNM2_INIT_PROC_NUM }; enum { aNM2_MOVE_ANNOUNCE_START_WAIT, // 0 aNM2_MOVE_SAVE_START_WAIT, // 1 aNM2_MOVE_SAVE_END_WAIT, // 2 aNM2_MOVE_ANNOUNCE_END_WAIT, // 3 aNM2_MOVE_ANNOUNCE_START_WAIT_DUPE_1,// 4 aNM2_MOVE_SAVE_START_WAIT_DUPE_1, // 5 aNM2_MOVE_SAVE_END_WAIT_DUPE_1, // 6 aNM2_MOVE_ANNOUNCE_END_WAIT_DUPE_1, // 7 aNM2_MOVE_WALK_DECK, // 8 aNM2_MOVE_TURN_DECK, // 9 aNM2_MOVE_KEITAI_OFF_START_WAIT, // 10 aNM2_MOVE_KEITAI_OFF_END_WAIT, // 11 aNM2_MOVE_ENTER, // 12 aNM2_MOVE_ENTER_DUPE_1, // 13 aNM2_MOVE_APPROACH, // 14 aNM2_MOVE_TALK_START_WAIT, // 15 aNM2_MOVE_TALK_START_WAIT2, // 16 aNM2_MOVE_SITDOWN_START_WAIT, // 17 aNM2_MOVE_SITDOWN, // 18 aNM2_MOVE_SDON_AND_PB_WAIT, // 19 aNM2_MOVE_DRAW_MENU_OPEN_WAIT, // 20 aNM2_MOVE_DRAW_MENU_CLOSE_WAIT, // 21 aNM2_MOVE_MSG_WIN_OPEN_WAIT, // 22 aNM2_MOVE_TALK_END_WAIT, // 23 aNM2_MOVE_NONE, // 24 aNM2_MOVE_PROC_NUM }; // clang-format on #ifdef __cplusplus } #endif #endif