mirror of
https://github.com/encounter/ac-decomp.git
synced 2026-03-30 10:57:04 -07:00
108 lines
2.7 KiB
C
108 lines
2.7 KiB
C
#ifndef AC_SET_MANAGER_H
|
|
#define AC_SET_MANAGER_H
|
|
|
|
#include "types.h"
|
|
#include "m_actor.h"
|
|
#include "m_play.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct actor_set_manager_s SET_MANAGER;
|
|
|
|
#define aSetMgr_SET_OVERLAY_BUF_SIZE 0x4000
|
|
|
|
#define aSetMgr_INSECT_SPAWN_INFO_COUNT 43
|
|
|
|
/* sizeof(aSOI_insect_spawn_info_f_c) == 0xC */
|
|
typedef struct insect_spawn_info_f_s {
|
|
int type;
|
|
u8 spawn_area;
|
|
float weight;
|
|
} aSOI_insect_spawn_info_f_c;
|
|
|
|
/* sizeof(aSOI_insect_keep_c) == 0x210 */
|
|
typedef struct insect_keep_s {
|
|
aSOI_insect_spawn_info_f_c spawn_info[aSetMgr_INSECT_SPAWN_INFO_COUNT]; // devs forgot to update aSetMgr_INSECT_SPAWN_INFO_SIZE or something lol
|
|
int now_month;
|
|
int now_term;
|
|
u8 info_num;
|
|
u8 spawn_type;
|
|
} aSOI_insect_keep_c;
|
|
|
|
#define aSetMgr_WAIT_TIME 5 // wait time between aSetMgr_move_check_wait -> aSetMgr_move_set
|
|
|
|
#define aSetMgr_GYOEI_NUM 40
|
|
|
|
/* sizeof(aSOG_gyoei_spawn_info_weight_f_c) == 8 */
|
|
typedef struct gyoei_spawn_info_weight_f_s {
|
|
/* 0x00 */ s16 type;
|
|
/* 0x02 */ u8 spawn_area;
|
|
/* 0x04 */ f32 spawn_weight;
|
|
} aSOG_gyoei_spawn_info_weight_f_c;
|
|
|
|
typedef struct gyoei_keep_s {
|
|
/* 0x000 */ aSOG_gyoei_spawn_info_weight_f_c spawn_weights[aSetMgr_GYOEI_NUM];
|
|
/* 0x140 */ int possible_gyoei_num;
|
|
} aSOG_gyoei_keep_c;
|
|
|
|
typedef int (*aSetMgr_ovl_proc)(SET_MANAGER*, GAME_PLAY*);
|
|
|
|
enum set_overlay_type {
|
|
aSetMgr_OVERLAY_BEGIN = 0,
|
|
|
|
aSetMgr_OVERLAY_INSECT = aSetMgr_OVERLAY_BEGIN,
|
|
aSetMgr_OVERLAY_GYOEI,
|
|
|
|
aSetMgr_OVERLAY_NUM
|
|
};
|
|
|
|
enum set_manager_move_proc_type {
|
|
aSetMgr_MOVE_move_check_set,
|
|
aSetMgr_MOVE_move_check_wait,
|
|
aSetMgr_MOVE_move_set,
|
|
|
|
aSetMgr_MOVE_PROC_NUM
|
|
};
|
|
|
|
/* sizeof(aSetMgr_keep_c) == 0x354 */
|
|
typedef struct actor_set_manager_keep_s {
|
|
/* 0x000 */ aSOI_insect_keep_c insect_keep;
|
|
/* 0x210 */ aSOG_gyoei_keep_c gyoei_keep;
|
|
} aSetMgr_keep_c;
|
|
|
|
/* sizeof(aSetMgr_set_ovl_c) == 0x4004 */
|
|
typedef struct actor_set_manager_ovl_s {
|
|
/* 0x0000 */ u8 buf[aSetMgr_SET_OVERLAY_BUF_SIZE];
|
|
/* 0x4000 */ aSetMgr_ovl_proc ovl_proc;
|
|
} aSetMgr_set_ovl_c;
|
|
|
|
/* sizeof(aSetMgr_player_pos) == 0x18 */
|
|
typedef struct actor_set_manager_player_pos_s {
|
|
/* 0x00 */ int next_bx, next_bz; // TODO: there's a good chance these are structs
|
|
/* 0x08 */ int now_bx, now_bz;
|
|
/* 0x10 */ int last_bx, last_bz;
|
|
} aSetMgr_player_pos_c;
|
|
|
|
/* sizeof(SET_MANAGER) == 0x44F0 */
|
|
struct actor_set_manager_s {
|
|
/* 0x0000 */ ACTOR actor_class;
|
|
/* 0x0174 */ u8 move_proc;
|
|
/* 0x0175 */ u8 next_move_proc;
|
|
/* 0x0176 */ u8 set_ovl_type;
|
|
/* 0x0178 */ aSetMgr_set_ovl_c set_overlay;
|
|
/* 0x417C */ int unk_417C;
|
|
/* 0x4180 */ aSetMgr_player_pos_c player_pos;
|
|
/* 0x4198 */ aSetMgr_keep_c keep;
|
|
/* 0x44EC */ s16 wait_timer;
|
|
};
|
|
|
|
extern ACTOR_PROFILE Set_Manager_Profile;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|