mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-08-19 13:03:37 -04:00
Implement & link ac_hatumode_control, ac_hatumode_npc0
This commit is contained in:
@@ -8,6 +8,38 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct hatumode_event_save_s {
|
||||
u16 state;
|
||||
u16 flags0;
|
||||
u16 flags1;
|
||||
s16 yashiro_pos[3];
|
||||
u8 cur_npc_idx;
|
||||
} aEv_hatumode_save_c;
|
||||
|
||||
typedef void (*aHTMD_TALK_INFO_PROC)(ACTOR*, int);
|
||||
typedef int (*aHTMD_THINK_INIT_PROC)(ACTOR*, GAME_PLAY*);
|
||||
typedef int (*aHTMD_SET_START_PROC)(ACTOR*);
|
||||
typedef int (*aHTMD_PLAYER_MOVE_PROC)(GAME_PLAY*, int);
|
||||
typedef int (*aHTMD_LOOK_PLAYER_PROC)(ACTOR*);
|
||||
|
||||
typedef struct hatumode_ctrl_clip_s {
|
||||
aHTMD_TALK_INFO_PROC talk_info_proc;
|
||||
aHTMD_THINK_INIT_PROC think_init_proc;
|
||||
aHTMD_SET_START_PROC set_start_proc;
|
||||
aHTMD_PLAYER_MOVE_PROC player_move_proc;
|
||||
aHTMD_LOOK_PLAYER_PROC look_player_proc;
|
||||
} aHTMD_clip_c;
|
||||
|
||||
typedef struct hatumode_ctrl_actor_s HATUMODE_CONTROL_ACTOR;
|
||||
|
||||
typedef void (*aHTC_MOVE_PROC)(HATUMODE_CONTROL_ACTOR*, GAME_PLAY*);
|
||||
|
||||
struct hatumode_ctrl_actor_s {
|
||||
ACTOR actor_class;
|
||||
aHTMD_clip_c clip;
|
||||
aHTC_MOVE_PROC move_proc;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Hatumode_Control_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -15,4 +47,3 @@ extern ACTOR_PROFILE Hatumode_Control_Profile;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -3,11 +3,77 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "m_actor.h"
|
||||
#include "ac_npc.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define aHN0_TALK_REQ_NONE 0
|
||||
#define aHN0_TALK_REQ_NORM 1
|
||||
#define aHN0_TALK_REQ_FORCE 2
|
||||
|
||||
enum {
|
||||
aHN0_THINK_INIT_NONE,
|
||||
aHN0_THINK_INIT_NORMAL_WAIT,
|
||||
aHN0_THINK_INIT_MOVE,
|
||||
aHN0_THINK_INIT_TURN_F,
|
||||
aHN0_THINK_INIT_SAISEN,
|
||||
aHN0_THINK_INIT_OMAIRI_AF,
|
||||
aHN0_THINK_INIT_NEXT_POS,
|
||||
aHN0_THINK_INIT_TURN_MOVE,
|
||||
aHN0_THINK_INIT_MOVE_BF,
|
||||
aHN0_THINK_INIT_TURN_AISATU,
|
||||
aHN0_THINK_INIT_AISATU,
|
||||
aHN0_THINK_INIT_AISATU2,
|
||||
aHN0_THINK_INIT_HAIGO,
|
||||
|
||||
aHN0_THINK_INIT_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aHN0_THINK_PROC_NONE,
|
||||
aHN0_THINK_PROC_BIRTH,
|
||||
aHN0_THINK_PROC_READY1,
|
||||
aHN0_THINK_PROC_READY2,
|
||||
aHN0_THINK_PROC_TURN_NEXT,
|
||||
aHN0_THINK_PROC_FLAG2_WAIT,
|
||||
aHN0_THINK_PROC_ANIME_WAIT,
|
||||
aHN0_THINK_PROC_ANIME_WAIT_SAISEN,
|
||||
aHN0_THINK_PROC_TIMER_WAIT,
|
||||
aHN0_THINK_PROC_MOVE_WAIT,
|
||||
aHN0_THINK_PROC_MOVE_BF,
|
||||
aHN0_THINK_PROC_AISATU_WAIT,
|
||||
aHN0_THINK_PROC_AISATU2_WAIT,
|
||||
aHN0_THINK_PROC_TO_OMAIRI,
|
||||
aHN0_THINK_PROC_PLAYER_MOVE,
|
||||
aHN0_THINK_PROC_PLAYER_WAIT,
|
||||
aHN0_THINK_PROC_KASASIMAI,
|
||||
aHN0_THINK_PROC_SANPAI_WAIT,
|
||||
|
||||
aHN0_THINK_PROC_NUM
|
||||
};
|
||||
|
||||
typedef struct hatumode_npc0_actor_s HATUMODE_NPC0_ACTOR;
|
||||
|
||||
typedef void (*aHN0_TALK_PROC)(HATUMODE_NPC0_ACTOR*, GAME_PLAY*);
|
||||
|
||||
struct hatumode_npc0_actor_s {
|
||||
NPC_ACTOR npc_class;
|
||||
aHN0_TALK_PROC talk_proc;
|
||||
int base_msg;
|
||||
s16 timer;
|
||||
s16 pos[2];
|
||||
u8 think_idx;
|
||||
u8 next_think_idx;
|
||||
u8 move_think_idx;
|
||||
u8 talk_idx;
|
||||
u8 think_proc_idx;
|
||||
u8 think_change_flag;
|
||||
u8 root;
|
||||
u8 player;
|
||||
};
|
||||
|
||||
extern ACTOR_PROFILE Hatumode_Npc0_Profile;
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -15,4 +81,3 @@ extern ACTOR_PROFILE Hatumode_Npc0_Profile;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
+16
-1
@@ -123,6 +123,13 @@ enum {
|
||||
aNPC_THINK_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aNPC_THINK_PROC_INIT,
|
||||
aNPC_THINK_PROC_MAIN,
|
||||
|
||||
aNPC_THINK_PROC_NUM
|
||||
};
|
||||
|
||||
typedef void (*aNPC_TALK_REQUEST_PROC)(ACTOR*, GAME*);
|
||||
typedef int (*aNPC_TALK_INIT_PROC)(ACTOR*, GAME*);
|
||||
typedef int (*aNPC_TALK_END_CHECK_PROC)(ACTOR*, GAME*);
|
||||
@@ -152,6 +159,7 @@ typedef void (*aNPC_MOVE_PROC)(ACTOR*, GAME*);
|
||||
typedef void (*aNPC_MOVE_BEFORE_PROC)(ACTOR*, GAME*);
|
||||
typedef void (*aNPC_MOVE_AFTER_PROC)(ACTOR*, GAME*);
|
||||
typedef void (*aNPC_DRAW_PROC)(ACTOR*, GAME*);
|
||||
typedef void (*aNPC_SET_DST_POS_PROC)(NPC_ACTOR*, f32, f32);
|
||||
|
||||
typedef void (*aNPC_REBUILD_DMA_PROC)();
|
||||
typedef void (*aNPC_TALK_DEMO_PROC)(ACTOR*);
|
||||
@@ -186,7 +194,7 @@ struct ac_npc_clip_s {
|
||||
/* 0x110 */ aNPC_TALK_DEMO_PROC talk_demo_proc;
|
||||
/* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc;
|
||||
/* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc;
|
||||
/* 0x11C */ void* _11C;
|
||||
/* 0x11C */ aNPC_SET_DST_POS_PROC set_dst_pos_proc;
|
||||
/* 0x120 */ aNPC_CLIP_THINK_PROC think_proc;
|
||||
/* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc;
|
||||
/* 0x128 */ void* _128;
|
||||
@@ -514,6 +522,13 @@ enum {
|
||||
aNPC_SCHEDULE_TYPE_NUM
|
||||
};
|
||||
|
||||
enum {
|
||||
aNPC_SCHEDULE_PROC_INIT,
|
||||
aNPC_SCHEDULE_PROC_MAIN,
|
||||
|
||||
aNPC_SCHEDULE_PROC_NUM
|
||||
};
|
||||
|
||||
struct npc_actor_s {
|
||||
ACTOR actor_class;
|
||||
s_xyz _174;
|
||||
|
||||
+2
-1
@@ -32,6 +32,7 @@
|
||||
#include "ac_broker_design.h"
|
||||
#include "ac_garagara.h"
|
||||
#include "ac_turi_clip.h"
|
||||
#include "ac_hatumode_control.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -83,7 +84,7 @@ typedef struct clip_s {
|
||||
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
|
||||
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
|
||||
/* 0x0C0 */ aGRGR_clip_c* garagara_clip;
|
||||
/* 0x0C4 */ void* _0C4;
|
||||
/* 0x0C4 */ aHTMD_clip_c* hatumode_clip;
|
||||
/* 0x0C8 */ void* shrine_clip;
|
||||
/* 0x0CC */ void* _0CC;
|
||||
/* 0x0D0 */ void* _0D0;
|
||||
|
||||
Reference in New Issue
Block a user