Files
ac-decomp/include/ac_set_npc_manager.h
T
2024-11-22 20:48:35 -05:00

95 lines
2.0 KiB
C

#ifndef AC_SET_NPC_MANAGER_H
#define AC_SET_NPC_MANAGER_H
#include "types.h"
#include "m_actor.h"
#include "m_field_info.h"
#include "m_npc.h"
#include "m_npc_schedule.h"
#include "m_npc_walk.h"
#ifdef __cplusplus
extern "C" {
#endif
#define aSNMgr_EVENT_NORMAL_NPC_NUM mNpc_EVENT_NPC_NUM
enum {
aSNMgr_SET_MODE_NONE,
aSNMgr_SET_MODE_REGULAR,
aSNMgr_SET_MODE_GUEST,
aSNMgr_SET_MODE_NUM
};
typedef struct set_npc_manager_actor_s SET_NPC_MANAGER_ACTOR;
typedef struct set_npc_scope_s {
f32 edge[2][2];
} aSNMgr_scope_c;
typedef struct set_npc_event_save_s {
u8 animal_idx[aSNMgr_EVENT_NORMAL_NPC_NUM];
} aSNMgr_event_save_c;
typedef struct set_npc_event_info_s {
aSNMgr_event_save_c* save_p;
int type;
int event_map_idx;
int joint_npc_max;
xyz_t pos[mNpc_EVENT_NPC_NUM];
} aSNMgr_event_info_c;
typedef struct set_npc_make_s {
mActor_name_t name;
mActor_name_t make_name;
int bx;
int bz;
int ux;
int uz;
int idx;
} aSNMgr_make_c;
typedef struct set_npc_npc_info_s {
Animal_c* animal_p;
mNpc_NpcList_c* list_p;
mNPS_schedule_c* schedule_p;
mNpc_walk_c* walk_p;
mNpcW_info_c* winfo_p[ANIMAL_NUM_MAX];
u8 in_block_num[BLOCK_Z_NUM - 2][BLOCK_X_NUM];
u8 to_block[ANIMAL_NUM_MAX][2];
u32* count_p[ANIMAL_NUM_MAX];
u16 exist;
u16 appear;
u16 joint_event;
aSNMgr_make_c make[mNpc_EVENT_NPC_NUM];
aSNMgr_event_info_c event_info;
int timer[ANIMAL_NUM_MAX];
} aSNMgr_npc_info_c;
typedef struct set_npc_player_pos_s {
xyz_t pos;
int next_block[2];
int now_block[2];
} aSNMgr_player_pos_c;
typedef void (*aSNMgr_SET_PROC)(SET_NPC_MANAGER_ACTOR*);
struct set_npc_manager_actor_s {
ACTOR actor_class;
int set_mode;
aSNMgr_SET_PROC set_proc;
aSNMgr_player_pos_c player_pos;
aSNMgr_scope_c scope;
aSNMgr_scope_c guest_scope;
aSNMgr_npc_info_c npc_info;
};
extern ACTOR_PROFILE Set_Npc_Manager_Profile;
#ifdef __cplusplus
}
#endif
#endif