Implement even more player states

This commit is contained in:
Cuyler36
2024-09-10 05:09:42 -04:00
parent 62e0b7cd7d
commit 2a0acb195f
28 changed files with 1945 additions and 213 deletions
+26 -1
View File
@@ -8,6 +8,32 @@
extern "C" {
#endif
#define Ac_Balloon_JOINT_NUM 8
typedef struct balloon_actor_s BALLOON_ACTOR;
struct balloon_actor_s {
ACTOR actor_class;
cKF_SkeletonInfo_R_c keyframe;
s_xyz work[Ac_Balloon_JOINT_NUM];
s_xyz morph[Ac_Balloon_JOINT_NUM];
int _244;
Mtx mtx[2][4];
int main_mode;
int saved_type;
int setup_mode;
int balloon_type;
s_xyz angle;
s16 lean;
f32 start_frame;
f32 speed;
xyz_t pos;
int _474;
};
extern void Ac_Balloon_request_fly(ACTOR* actorx, GAME* game, int balloon_type, s_xyz* angle_p, s16 lean, xyz_t* pos_p,
f32 start_frame, f32 speed);
extern ACTOR_PROFILE Balloon_Profile;
#ifdef __cplusplus
@@ -15,4 +41,3 @@ extern ACTOR_PROFILE Balloon_Profile;
#endif
#endif
+23 -1
View File
@@ -8,6 +8,29 @@
extern "C" {
#endif
typedef struct gyo_release_actor_s GYO_RELEASE_ACTOR;
/* sizeof(GYO_RELEASE_ACTOR) == 0x1BC */
struct gyo_release_actor_s {
/* 0x000 */ ACTOR actor_class;
/* 0x174 */ ACTOR* gyoei_actor_p;
/* 0x178 */ int gyo_type;
/* 0x17C */ int size_type;
/* 0x180 */ int anime_frame;
/* 0x184 */ int segment;
/* 0x188 */ int _188;
/* 0x18C */ ClObjPipe_c col_pipe;
/* 0x1A8 */ s16 angle_xz;
/* 0x1AA */ s16 angle_y;
/* 0x1AC */ s16 angle_y_add;
/* 0x1AE */ s16 exist_timer;
/* 0x1B0 */ f32 shadow_scale;
/* 0x1B4 */ u8 exist_flag;
/* 0x1B5 */ u8 _1B5;
/* 0x1B6 */ s16 revert_position_flag;
/* 0x1B8 */ int revert_position_timer;
};
extern ACTOR_PROFILE Gyo_Release_Profile;
#ifdef __cplusplus
@@ -15,4 +38,3 @@ extern ACTOR_PROFILE Gyo_Release_Profile;
#endif
#endif
+77 -2
View File
@@ -2,12 +2,88 @@
#define AC_GYOEI_H
#include "types.h"
#include "m_actor.h"
#include "ac_tools.h"
#ifdef __cplusplus
extern "C" {
#endif
#define aGYO_MAX_GYOEI 2
enum {
aGYO_TYPE_TEST,
aGYO_TYPE_KASEKI,
aGYO_TYPE_NUM
};
enum {
aGYO_ROD_NORMAL,
aGYO_ROD_GOLDEN,
aGYO_ROD_NUM
};
enum {
aGYO_DRAW_TYPE_GYOEI,
aGYO_DRAW_TYPE_FISH,
aGYO_DRAW_TYPE_NUM
};
typedef struct gyo_ctrl_actor_s aGYO_CTRL_ACTOR;
typedef void (*aGYO_ACT_PROC)(ACTOR*, GAME*);
/* sizeof(aGYO_CTRL_ACTOR) == 0x250 */
struct gyo_ctrl_actor_s {
/* 0x000 */ TOOLS_ACTOR tools_class;
/* 0x1CC */ ACTOR* linked_actor; /* Generally UKI_ACTOR */
/* 0x1D0 */ int exist;
/* 0x1D4 */ int draw_type;
/* 0x1D8 */ int gyo_type;
/* 0x1DC */ s16 size_type;
/* 0x1E0 */ int action;
/* 0x1E4 */ aGYO_ACT_PROC act_proc;
/* 0x1E8 */ int anim_frame;
/* 0x1EC */ f32 speed_step;
/* 0x1F0 */ f32 speed;
/* 0x1F4 */ f32 range;
/* 0x1F8 */ int _1F8;
/* 0x1FC */ ClObjPipe_c col_pipe;
/* 0x218 */ int work0;
/* 0x21C */ f32 fwork0;
/* 0x220 */ f32 fwork1;
/* 0x224 */ f32 fwork2;
/* 0x228 */ f32 fwork3;
/* 0x22C */ s16 swork0;
/* 0x22E */ s16 swork1;
/* 0x230 */ s16 swork2;
/* 0x232 */ s16 swork3;
/* 0x234 */ s16 swork4;
/* 0x236 */ s16 move_counter;
/* 0x238 */ s16 move_angle;
/* 0x23A */ s16 pattern_subcounter;
/* 0x23C */ s16 pattern_counter;
/* 0x23E */ s16 touch_counter;
/* 0x240 */ u16 gyo_flags;
/* 0x242 */ u8 swim_flag;
/* 0x243 */ u8 escape_flag;
/* 0x244 */ int alpha;
/* 0x248 */ int col_flags;
/* 0x24C */ u8* overlay_p;
};
typedef struct gyoei_actor_s GYOEI_ACTOR;
/* sizeof(GYOEI_ACTOR) == 0x628 */
struct gyoei_actor_s {
/* 0x000 */ ACTOR actor_class;
/* 0x174 */ aGYO_CTRL_ACTOR ctrl[aGYO_MAX_GYOEI];
/* 0x614 */ u8 exist[4];
/* 0x618 */ int segment_type[4];
};
extern ACTOR_PROFILE Gyoei_Profile;
#ifdef __cplusplus
@@ -15,4 +91,3 @@ extern ACTOR_PROFILE Gyoei_Profile;
#endif
#endif
+41 -11
View File
@@ -8,23 +8,53 @@
extern "C" {
#endif
extern ACTOR_PROFILE Uki_Profile;
typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int param_4, int command);
typedef mActor_name_t (*aUKI_GET_FISH_TYPE)(ACTOR* actorx);
/* sizeof(UKI_ACTOR) == 0x2B8 */
typedef struct actor_uki_s {
ACTOR actor_class;
u8 pad[0xA4];
xyz_t right_hand_pos;
xyz_t position_speed;
int angle_speed_y;
int command;
u8 pad2[0x10];
xyz_t rod_top_position;
xyz_t left_hand_pos;
/* 0x000 */ ACTOR actor_class;
/* 0x174 */ ACTOR* child_actor;
/* 0x178 */ ClObjPipe_c col_pipe;
/* 0x194 */ f32 _194;
/* 0x198 */ MtxF mtxf;
/* 0x1D8 */ s16 proc;
/* 0x1DC */ xyz_t parabola_vec[2];
/* 0x1F4 */ xyz_t parabola_acc[2];
/* 0x20C */ f32 range;
/* 0x210 */ aUKI_SET_VALUE_PROC set_value_proc;
/* 0x214 */ aUKI_GET_FISH_TYPE get_fish_type_proc;
/* 0x218 */ xyz_t right_hand_pos;
/* 0x224 */ xyz_t position_speed;
/* 0x230 */ int angle_speed_y;
/* 0x234 */ int command;
/* 0x238 */ int status;
/* 0x23C */ xyz_t cast_goal_point;
/* 0x248 */ xyz_t rod_top_position;
/* 0x254 */ xyz_t left_hand_pos;
/* 0x260 */ u8 touched_flag;
/* 0x261 */ u8 hit_water_flag;
/* 0x262 */ s16 frame_timer;
/* 0x264 */ s16 cast_timer;
/* 0x266 */ s16 touch_timer;
/* 0x268 */ xyz_t uki_pos;
/* 0x274 */ xyz_t gyo_pos;
/* 0x280 */ s_xyz uki_angle;
/* 0x286 */ s16 uki_rot_speed;
/* 0x288 */ int gyo_command;
/* 0x28C */ int gyo_status;
/* 0x290 */ int gyo_type;
/* 0x294 */ f32 gyo_scale;
/* 0x298 */ int color[3]; /* rgb */
/* 0x2A4 */ u8 _2A4[0x10];
/* 0x2B4 */ u8 coast_flag;
/* 0x2B5 */ u8 _2B5;
} UKI_ACTOR;
extern ACTOR_PROFILE Uki_Profile;
#ifdef __cplusplus
}
#endif
#endif
+26 -29
View File
@@ -867,14 +867,14 @@ typedef struct player_request_outdoor_s {
typedef struct player_request_demo_wait_s {
int umbrella_flag;
int _04;
u32 label;
} mPlayer_request_demo_wait_c;
typedef struct player_request_demo_walk_s {
f32 goal_pos_x;
f32 goal_pos_z;
f32 speed;
int _0C;
int wait_flag;
} mPlayer_request_demo_walk_c;
typedef struct player_request_demo_geton_train_s {
@@ -1187,7 +1187,7 @@ typedef struct player_request_release_creature_insect_s {
} mPlayer_request_release_creature_insect_c;
typedef struct player_request_release_creature_balloon_s {
int _00;
int balloon_type;
} mPlayer_request_release_creature_balloon_c;
typedef union {
@@ -1198,6 +1198,7 @@ typedef union {
typedef struct player_request_release_creature_s {
int type;
int gold_scoop_flag;
mPlayer_request_release_creature_u data;
ACTOR* actor;
} mPlayer_request_release_creature_c;
@@ -1260,26 +1261,6 @@ typedef struct player_request_putin_scoop_from_submenu_s {
int got_gold_scoop;
} mPlayer_request_putin_scoop_from_submenu_data_c;
typedef struct {
int type;
int got_gold_scoop;
s16 angle_y;
s16 item;
} mPlayer_request_release_creature_gyoei_from_submenu_c;
typedef struct {
int type;
int got_gold_scoop;
xyz_t wpos;
int insect_type;
} mPlayer_request_release_creature_insect_from_submenu_c;
typedef struct {
int type;
int got_gold_scoop;
int balloon_shape_type;
} mPlayer_request_release_creature_balloon_from_submenu_c;
typedef struct {
int _0;
ACTOR* speak_actor;
@@ -1288,9 +1269,6 @@ typedef struct {
typedef union {
mPlayer_request_give_from_submenu_c give_from_submenu;
mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu;
mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu;
mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu;
mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu;
mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu;
mPlayer_request_return_demo_c return_demo;
mPlayer_request_wait_c wait;
@@ -1391,9 +1369,6 @@ typedef struct player_request_knock_door_s {
typedef union {
mPlayer_request_give_from_submenu_c give_from_submenu;
mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu;
mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu;
mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu;
mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu;
mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu;
mPlayer_request_return_demo_c return_demo;
mPlayer_request_return_outdoor_c return_outdoor;
@@ -1748,6 +1723,19 @@ typedef struct player_main_putin_item_s {
f32 timer;
} mPlayer_main_putin_item_c;
typedef struct player_main_demo_wait_s {
int effect_id;
u32 label;
} mPlayer_main_demo_wait_c;
typedef struct player_main_release_creature_s {
int type;
int golden_scoop_flag;
ACTOR* release_actor_p;
f32 timer;
int actor_birth_flag;
} mPlayer_main_release_creature_c;
typedef struct player_main_wash_car_s {
int anime_idx;
int change_anime_idx;
@@ -1759,6 +1747,12 @@ typedef struct player_main_wash_car_s {
int effect_flag;
} mPlayer_main_wash_car_c;
typedef struct player_main_rotate_octagon_s {
ACTOR* talk_actor_p;
int turn_flag;
int return_main_index;
} mPlayer_main_rotate_octagon_c;
typedef struct player_main_swing_net_s {
f32 swing_timer;
} mPlayer_main_swing_net_c;
@@ -1953,7 +1947,10 @@ typedef union {
mPlayer_main_give_wait_c give_wait;
mPlayer_main_takeout_item_c takeout_item;
mPlayer_main_putin_item_c putin_item;
mPlayer_main_demo_wait_c demo_wait;
mPlayer_main_release_creature_c release_creature;
mPlayer_main_wash_car_c wash_car;
mPlayer_main_rotate_octagon_c rotate_octagon;
mPlayer_main_shake_tree_c shake_tree;
mPlayer_main_struggle_pitfall_c struggle_pitfall;
mPlayer_main_stung_bee_c stung_bee;
+13 -9
View File
@@ -15,10 +15,10 @@ extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play);
extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p();
extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y);
extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool);
extern void mPlib_Clear_controller_data_for_title_demo();
extern void mPlib_Clear_controller_data_for_title_demo(void);
extern void mPlib_request_main_invade_type1(GAME_PLAY* play);
extern mActor_name_t mPlib_Get_itemNo_forWindow();
extern int mPlib_check_able_change_camera_normal_index();
extern int mPlib_check_able_change_camera_normal_index(void);
extern void mPlib_request_main_refuse_type1(GAME* game);
extern void mPlib_request_main_wait_type3(GAME* game);
extern void mPlib_Set_able_force_speak_label(ACTOR* actor);
@@ -27,7 +27,7 @@ extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z
extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed);
extern void mPlib_Set_able_hand_all_item_in_demo(s8 enable);
extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t cloth_name);
extern int mPlib_Get_address_able_display();
extern int mPlib_Get_address_able_display(void);
extern int mPlib_get_player_actor_main_index(GAME* game);
extern int mPlib_check_player_actor_main_index_AllWade(GAME_PLAY* play);
extern int mPlib_request_main_demo_wait_type1(GAME* game, int param_2, void* param_3);
@@ -53,19 +53,19 @@ extern void mPlib_request_main_give_from_submenu(mActor_name_t disp_item, int su
extern int mPlib_Check_tree_shaken_big(const xyz_t* pos);
extern int mPlib_Check_tree_shaken_little(const xyz_t* pos);
extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag);
extern int mPlib_able_player_warp_forEvent();
extern int mPlib_Get_unable_wade();
extern int mPlib_able_player_warp_forEvent(void);
extern int mPlib_Get_unable_wade(void);
extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t);
extern void mPlib_Set_boat_angleZ(s16 angleZ);
extern int mPlib_Get_end_player_demo_walk();
extern int mPlib_Get_end_player_demo_walk(void);
extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY);
extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos, s16 angleY);
extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game);
extern int mPlib_check_label_player_demo_wait(GAME* game, void* label);
extern int mPlib_check_player_outdoor_start(GAME* game);
extern void mPlib_Set_change_color_request();
extern void mPlib_Set_change_color_request(void);
extern int mPlib_check_player_open_umbrella(GAME_PLAY* play);
extern int mPlib_Check_UKI_COMEBACK_STATUS();
extern int mPlib_Check_UKI_COMEBACK_STATUS(void);
extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game);
extern int mPlib_request_main_close_furniture_type1(GAME* game);
extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing);
@@ -114,8 +114,12 @@ extern void mPlib_change_player_face(GAME* game);
extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t cloth_item);
extern int mPlib_Get_status_for_bee(void);
extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type);
extern void mPlib_Get_goal_player_demo_walk(f32* goal_pos_x, f32* goal_pos_z, f32* speed);
extern int mPlib_Get_continue_player_after_demo_walk(void);
extern void mPlib_Set_continue_player_after_demo_walk(int wait_flag);
extern void mPlib_Set_end_player_demo_walk(int end_flag);
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p();
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void);
extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play);
extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx);