Files
ac-decomp/include/m_player.h
T
2024-06-27 18:03:54 -04:00

1385 lines
44 KiB
C

#ifndef M_PLAYER_H
#define M_PLAYER_H
#include "types.h"
#include "m_actor.h"
#include "m_lib.h"
#include "c_keyframe.h"
#include "libultra/ultratypes.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mPlayer_DEBT0 17400 /* Buy house */
#define mPlayer_DEBT1 148000 /* 1st upgrade main floor */
#define mPlayer_DEBT2 398000 /* 2nd upgrade main floor */
#define mPlayer_DEBT3 49800 /* Basement */
#define mPlayer_DEBT4 798000 /* Upper floor */
typedef struct player_actor_s PLAYER_ACTOR;
#define mPlayer_FORCE_POSITION_ANGLE_NONE 0
// where is (1 << 0) ??
#define mPlayer_FORCE_POSITION_ANGLE_POSX (1 << 1)
#define mPlayer_FORCE_POSITION_ANGLE_POSY (1 << 2)
#define mPlayer_FORCE_POSITION_ANGLE_POSZ (1 << 3)
#define mPlayer_FORCE_POSITION_ANGLE_ROTX (1 << 4)
#define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5)
#define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6)
#define mPlayer_JOINT_NUM 26
enum {
mPlayer_ADDRESSABLE_TRUE,
mPlayer_ADDRESSABLE_FALSE_MOVEMENT,
mPlayer_ADDRESSABLE_FALSE_TALKING,
mPlayer_ADDRESSABLE_FALSE_USING_TOOL,
mPlayer_ADDRESSABLE_NUM
};
enum {
mPlayer_COMPLETE_PAYMENT_TYPE_NONE,
mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT,
mPlayer_COMPLETE_PAYMENT_TYPE_HOUSE,
mPlayer_COMPLETE_PAYMENT_TYPE_NUM
};
enum {
mPlayer_INDEX_DMA,
mPlayer_INDEX_INTRO,
mPlayer_INDEX_REFUSE,
mPlayer_INDEX_REFUSE_PICKUP,
mPlayer_INDEX_RETURN_DEMO,
mPlayer_INDEX_RETURN_OUTDOOR,
mPlayer_INDEX_RETURN_OUTDOOR2,
mPlayer_INDEX_WAIT,
mPlayer_INDEX_WALK,
mPlayer_INDEX_RUN,
mPlayer_INDEX_DASH,
mPlayer_INDEX_TUMBLE,
mPlayer_INDEX_TUMBLE_GETUP,
mPlayer_INDEX_TURN_DASH,
mPlayer_INDEX_FALL,
mPlayer_INDEX_WADE,
mPlayer_INDEX_DOOR,
mPlayer_INDEX_OUTDOOR,
mPlayer_INDEX_INVADE,
mPlayer_INDEX_HOLD,
mPlayer_INDEX_PUSH,
mPlayer_INDEX_PULL,
mPlayer_INDEX_ROTATE_FURNITURE,
mPlayer_INDEX_OPEN_FURNITURE,
mPlayer_INDEX_WAIT_OPEN_FURNITURE,
mPlayer_INDEX_CLOSE_FURNITURE,
mPlayer_INDEX_LIE_BED,
mPlayer_INDEX_WAIT_BED,
mPlayer_INDEX_ROLL_BED,
mPlayer_INDEX_STANDUP_BED,
mPlayer_INDEX_PICKUP,
mPlayer_INDEX_PICKUP_JUMP,
mPlayer_INDEX_PICKUP_FURNITURE,
mPlayer_INDEX_PICKUP_EXCHANGE,
mPlayer_INDEX_SITDOWN,
mPlayer_INDEX_SITDOWN_WAIT,
mPlayer_INDEX_STANDUP,
mPlayer_INDEX_SWING_AXE,
mPlayer_INDEX_AIR_AXE,
mPlayer_INDEX_REFLECT_AXE,
mPlayer_INDEX_BROKEN_AXE,
mPlayer_INDEX_SLIP_NET,
mPlayer_INDEX_READY_NET,
mPlayer_INDEX_READY_WALK_NET,
mPlayer_INDEX_SWING_NET,
mPlayer_INDEX_PULL_NET,
mPlayer_INDEX_STOP_NET,
mPlayer_INDEX_NOTICE_NET,
mPlayer_INDEX_PUTAWAY_NET,
mPlayer_INDEX_READY_ROD,
mPlayer_INDEX_CAST_ROD,
mPlayer_INDEX_AIR_ROD,
mPlayer_INDEX_RELAX_ROD,
mPlayer_INDEX_COLLECT_ROD,
mPlayer_INDEX_VIB_ROD,
mPlayer_INDEX_FLY_ROD,
mPlayer_INDEX_NOTICE_ROD,
mPlayer_INDEX_PUTAWAY_ROD,
mPlayer_INDEX_DIG_SCOOP,
mPlayer_INDEX_FILL_SCOOP,
mPlayer_INDEX_REFLECT_SCOOP,
mPlayer_INDEX_AIR_SCOOP,
mPlayer_INDEX_GET_SCOOP,
mPlayer_INDEX_PUTAWAY_SCOOP,
mPlayer_INDEX_PUTIN_SCOOP,
mPlayer_INDEX_TALK,
mPlayer_INDEX_RECIEVE_WAIT,
mPlayer_INDEX_RECIEVE_STRETCH,
mPlayer_INDEX_RECIEVE,
mPlayer_INDEX_RECIEVE_PUTAWAY,
mPlayer_INDEX_GIVE,
mPlayer_INDEX_GIVE_WAIT,
mPlayer_INDEX_TAKEOUT_ITEM,
mPlayer_INDEX_PUTIN_ITEM,
mPlayer_INDEX_DEMO_WAIT,
mPlayer_INDEX_DEMO_WALK,
mPlayer_INDEX_DEMO_GETON_TRAIN,
mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT,
mPlayer_INDEX_DEMO_GETOFF_TRAIN,
mPlayer_INDEX_DEMO_STANDING_TRAIN,
mPlayer_INDEX_DEMO_WADE,
mPlayer_INDEX_HIDE,
mPlayer_INDEX_GROUNDHOG,
mPlayer_INDEX_RELEASE_CREATURE,
mPlayer_INDEX_WASH_CAR,
mPlayer_INDEX_TIRED,
mPlayer_INDEX_ROTATE_OCTAGON,
mPlayer_INDEX_THROW_MONEY,
mPlayer_INDEX_PRAY,
mPlayer_INDEX_SHAKE_TREE,
mPlayer_INDEX_MAIL_JUMP,
mPlayer_INDEX_MAIL_LAND,
mPlayer_INDEX_READY_PITFALL,
mPlayer_INDEX_FALL_PITFALL,
mPlayer_INDEX_STRUGGLE_PITFALL,
mPlayer_INDEX_CLIMBUP_PITFALL,
mPlayer_INDEX_STUNG_BEE,
mPlayer_INDEX_NOTICE_BEE,
mPlayer_INDEX_REMOVE_GRASS,
mPlayer_INDEX_SHOCK,
mPlayer_INDEX_KNOCK_DOOR,
mPlayer_INDEX_CHANGE_CLOTH,
mPlayer_INDEX_PUSH_SNOWBALL,
mPlayer_INDEX_ROTATE_UMBRELLA,
mPlayer_INDEX_WADE_SNOWBALL,
mPlayer_INDEX_COMPLETE_PAYMENT,
mPlayer_INDEX_FAIL_EMU,
mPlayer_INDEX_STUNG_MOSQUITO,
mPlayer_INDEX_NOTICE_MOSQUITO,
mPlayer_INDEX_SWING_FAN,
mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE,
mPlayer_INDEX_RADIO_EXERCISE,
mPlayer_INDEX_DEMO_GETON_BOAT,
mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN,
mPlayer_INDEX_DEMO_GETON_BOAT_WAIT,
mPlayer_INDEX_DEMO_GETON_BOAT_WADE,
mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP,
mPlayer_INDEX_DEMO_GETOFF_BOAT,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM,
mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2,
mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT
};
enum {
mPlayer_ANIM_WAIT1,
mPlayer_ANIM_WALK1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_RUN1,
mPlayer_ANIM_PUSH1,
mPlayer_ANIM_PULL1,
mPlayer_ANIM_HOLD_WAIT1,
mPlayer_ANIM_PICKUP1,
mPlayer_ANIM_LTURN1,
mPlayer_ANIM_RTURN1,
mPlayer_ANIM_GET1,
mPlayer_ANIM_GET_CHANGE1,
mPlayer_ANIM_GET_PUTAWAY1,
mPlayer_ANIM_OPEN1,
mPlayer_ANIM_PUTAWAY1,
mPlayer_ANIM_TRANS_WAIT1,
mPlayer_ANIM_TRANSFER1,
mPlayer_ANIM_UMB_OPEN1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_DASH1,
mPlayer_ANIM_RUN_SLIP1,
mPlayer_ANIM_GET_PULL1,
mPlayer_ANIM_GET_M1,
mPlayer_ANIM_KAMAE_MOVE_M1,
mPlayer_ANIM_KAMAE_WAIT_M1,
mPlayer_ANIM_KOKERU_A1,
mPlayer_ANIM_KOKERU_GETUP_A1,
mPlayer_ANIM_KOKERU_GETUP_N1,
mPlayer_ANIM_KOKERU_N1,
mPlayer_ANIM_NET1,
mPlayer_ANIM_NET_SWING1,
mPlayer_ANIM_AXE_SWING1,
mPlayer_ANIM_KAMAE_SLIP_M1,
mPlayer_ANIM_KOKERU1,
mPlayer_ANIM_KOKERU_GETUP1,
mPlayer_ANIM_SITDOWN1,
mPlayer_ANIM_SITDOWN_WAIT1,
mPlayer_ANIM_STANDUP1,
mPlayer_ANIM_PUTAWAY_M1,
mPlayer_ANIM_BED_WAIT1,
mPlayer_ANIM_INBED_L1,
mPlayer_ANIM_INBED_R1,
mPlayer_ANIM_INTRAIN1,
mPlayer_ANIM_KAGU_OPEN_D1,
mPlayer_ANIM_KAGU_OPEN_H1,
mPlayer_ANIM_KAGU_OPEN_K1,
mPlayer_ANIM_NEGAERI_L1,
mPlayer_ANIM_NEGAERI_R1,
mPlayer_ANIM_OUTBED_L1,
mPlayer_ANIM_OUTBED_R1,
mPlayer_ANIM_OUTTRAIN1,
mPlayer_ANIM_KAGU_CLOSE_D1,
mPlayer_ANIM_KAGU_CLOSE_H1,
mPlayer_ANIM_KAGU_CLOSE_K1,
mPlayer_ANIM_KAGU_WAIT_D1,
mPlayer_ANIM_KAGU_WAIT_H1,
mPlayer_ANIM_KAGU_WAIT_K1,
mPlayer_ANIM_GO_OUT_O1,
mPlayer_ANIM_GO_OUT_S1,
mPlayer_ANIM_INTO_S1,
mPlayer_ANIM_AXE_HANE1,
mPlayer_ANIM_AXE_SUKA1,
mPlayer_ANIM_HOLD_WAIT_H1,
mPlayer_ANIM_HOLD_WAIT_O1,
mPlayer_ANIM_GET_T1,
mPlayer_ANIM_GET_T2,
mPlayer_ANIM_PUTAWAY_T1,
mPlayer_ANIM_SAO1,
mPlayer_ANIM_SAO_SWING1,
mPlayer_ANIM_TURI_HIKI1,
mPlayer_ANIM_TURI_WAIT1,
mPlayer_ANIM_NOT_GET_T1,
mPlayer_ANIM_MENU_CATCH1,
mPlayer_ANIM_MENU_CHANGE1,
mPlayer_ANIM_UMB_CLOSE1,
mPlayer_ANIM_NOT_SAO_SWING1,
mPlayer_ANIM_INTRAIN_WAIT1,
mPlayer_ANIM_CLEAR_TABLE1,
mPlayer_ANIM_DIG1,
mPlayer_ANIM_FILL_UP1,
mPlayer_ANIM_NOT_DIG1,
mPlayer_ANIM_CLEAR_TABLE_L1,
mPlayer_ANIM_PICKUP_L1,
mPlayer_ANIM_SCOOP1,
mPlayer_ANIM_CONFIRM1,
mPlayer_ANIM_DIG_SUKA1,
mPlayer_ANIM_GET_D1,
mPlayer_ANIM_PUTAWAY_D1,
mPlayer_ANIM_DIG_KABU1,
mPlayer_ANIM_FILL_UP_I1,
mPlayer_ANIM_SEND_MAIL1,
mPlayer_ANIM_GET_F1,
mPlayer_ANIM_GET_PULL_F1,
mPlayer_ANIM_GET_PUTAWAY_F1,
mPlayer_ANIM_TRANS_WAIT_F1,
mPlayer_ANIM_TRANSFER_F1,
mPlayer_ANIM_SHAKE1,
mPlayer_ANIM_TIRED1,
mPlayer_ANIM_WASH1,
mPlayer_ANIM_WASH2,
mPlayer_ANIM_WASH3,
mPlayer_ANIM_WASH4,
mPlayer_ANIM_WASH5,
mPlayer_ANIM_FUKUBIKI1,
mPlayer_ANIM_OMAIRI1,
mPlayer_ANIM_SAISEN1,
mPlayer_ANIM_RETURN_MAIL1,
mPlayer_ANIM_RETURN_MAIL2,
mPlayer_ANIM_RETURN_MAIL3,
mPlayer_ANIM_EAT1,
mPlayer_ANIM_GAAAN1,
mPlayer_ANIM_GAAAN2,
mPlayer_ANIM_DERU1,
mPlayer_ANIM_GURATUKU1,
mPlayer_ANIM_MOGAKU1,
mPlayer_ANIM_OTIRU1,
mPlayer_ANIM_ZASSOU1,
mPlayer_ANIM_KNOCK1,
mPlayer_ANIM_BIKU1,
mPlayer_ANIM_HATI1,
mPlayer_ANIM_HATI2,
mPlayer_ANIM_HATI3,
mPlayer_ANIM_PUSH_YUKI1,
mPlayer_ANIM_DERU2,
mPlayer_ANIM_OTIRU2,
mPlayer_ANIM_ITAZURA1,
mPlayer_ANIM_UMB_ROT1,
mPlayer_ANIM_PICKUP_WAIT1,
mPlayer_ANIM_YATTA1,
mPlayer_ANIM_YATTA2,
mPlayer_ANIM_YATTA3,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_MOSQUITO1,
mPlayer_ANIM_MOSQUITO2,
mPlayer_ANIM_RIDE1,
mPlayer_ANIM_RIDE2,
mPlayer_ANIM_RIDEWAIT,
mPlayer_ANIM_GETOFF1,
mPlayer_ANIM_GETOFF2,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_D1,
mPlayer_ANIM_AXE_BREAK1,
mPlayer_ANIM_AXE_BREAKWAIT1,
mPlayer_ANIM_LIGHT_ON1,
mPlayer_ANIM_TAISOU1,
mPlayer_ANIM_TAISOU2_1,
mPlayer_ANIM_TAISOU2_2,
mPlayer_ANIM_TAISOU3,
mPlayer_ANIM_TAISOU4_1,
mPlayer_ANIM_TAISOU4_2,
mPlayer_ANIM_TAISOU5_1,
mPlayer_ANIM_TAISOU5_2,
mPlayer_ANIM_TAISOU6_1,
mPlayer_ANIM_TAISOU6_2,
mPlayer_ANIM_TAISOU7_1,
mPlayer_ANIM_TAISOU7_2,
mPlayer_ANIM_OMAIRI_US1,
mPlayer_ANIM_NUM
};
enum {
mPlayer_ITEM_KIND_AXE,
mPlayer_ITEM_KIND_AXE_USE_1,
mPlayer_ITEM_KIND_AXE_USE_2,
mPlayer_ITEM_KIND_AXE_USE_3,
mPlayer_ITEM_KIND_AXE_USE_4,
mPlayer_ITEM_KIND_AXE_USE_5,
mPlayer_ITEM_KIND_AXE_USE_6,
mPlayer_ITEM_KIND_AXE_USE_7,
mPlayer_ITEM_KIND_GOLD_AXE,
mPlayer_ITEM_KIND_NET,
mPlayer_ITEM_KIND_GOLD_NET,
mPlayer_ITEM_KIND_UMBRELLA00,
mPlayer_ITEM_KIND_UMBRELLA01,
mPlayer_ITEM_KIND_UMBRELLA02,
mPlayer_ITEM_KIND_UMBRELLA03,
mPlayer_ITEM_KIND_UMBRELLA04,
mPlayer_ITEM_KIND_UMBRELLA05,
mPlayer_ITEM_KIND_UMBRELLA06,
mPlayer_ITEM_KIND_UMBRELLA07,
mPlayer_ITEM_KIND_UMBRELLA08,
mPlayer_ITEM_KIND_UMBRELLA09,
mPlayer_ITEM_KIND_UMBRELLA10,
mPlayer_ITEM_KIND_UMBRELLA11,
mPlayer_ITEM_KIND_UMBRELLA12,
mPlayer_ITEM_KIND_UMBRELLA13,
mPlayer_ITEM_KIND_UMBRELLA14,
mPlayer_ITEM_KIND_UMBRELLA15,
mPlayer_ITEM_KIND_UMBRELLA16,
mPlayer_ITEM_KIND_UMBRELLA17,
mPlayer_ITEM_KIND_UMBRELLA18,
mPlayer_ITEM_KIND_UMBRELLA19,
mPlayer_ITEM_KIND_UMBRELLA20,
mPlayer_ITEM_KIND_UMBRELLA21,
mPlayer_ITEM_KIND_UMBRELLA22,
mPlayer_ITEM_KIND_UMBRELLA23,
mPlayer_ITEM_KIND_UMBRELLA24,
mPlayer_ITEM_KIND_UMBRELLA25,
mPlayer_ITEM_KIND_UMBRELLA26,
mPlayer_ITEM_KIND_UMBRELLA27,
mPlayer_ITEM_KIND_UMBRELLA28,
mPlayer_ITEM_KIND_UMBRELLA29,
mPlayer_ITEM_KIND_UMBRELLA30,
mPlayer_ITEM_KIND_UMBRELLA31,
mPlayer_ITEM_KIND_ORG_UMBRELLA00,
mPlayer_ITEM_KIND_ORG_UMBRELLA01,
mPlayer_ITEM_KIND_ORG_UMBRELLA02,
mPlayer_ITEM_KIND_ORG_UMBRELLA03,
mPlayer_ITEM_KIND_ORG_UMBRELLA04,
mPlayer_ITEM_KIND_ORG_UMBRELLA05,
mPlayer_ITEM_KIND_ORG_UMBRELLA06,
mPlayer_ITEM_KIND_ORG_UMBRELLA07,
mPlayer_ITEM_KIND_ROD,
mPlayer_ITEM_KIND_GOLD_ROD,
mPlayer_ITEM_KIND_SHOVEL,
mPlayer_ITEM_KIND_GOLD_SHOVEL,
mPlayer_ITEM_KIND_RED_BALLOON,
mPlayer_ITEM_KIND_YELLOW_BALLOON,
mPlayer_ITEM_KIND_BLUE_BALLOON,
mPlayer_ITEM_KIND_GREEN_BALLOON,
mPlayer_ITEM_KIND_PURPLE_BALLOON,
mPlayer_ITEM_KIND_BUNNY_P_BALLOON,
mPlayer_ITEM_KIND_BUNNY_B_BALLOON,
mPlayer_ITEM_KIND_BUNNY_O_BALLOON,
mPlayer_ITEM_KIND_YELLOW_PINWHEEL,
mPlayer_ITEM_KIND_RED_PINWHEEL,
mPlayer_ITEM_KIND_TIGER_PINWHEEL,
mPlayer_ITEM_KIND_GREEN_PINWHEEL,
mPlayer_ITEM_KIND_PINK_PINWHEEL,
mPlayer_ITEM_KIND_STRIPED_PINWHEEL,
mPlayer_ITEM_KIND_FLOWER_PINWHEEL,
mPlayer_ITEM_KIND_FANCY_PINWHEEL,
mPlayer_ITEM_KIND_BLUEBELL_FAN,
mPlayer_ITEM_KIND_PLUM_FAN,
mPlayer_ITEM_KIND_BAMBOO_FAN,
mPlayer_ITEM_KIND_CLOUD_FAN,
mPlayer_ITEM_KIND_MAPLE_FAN,
mPlayer_ITEM_KIND_FAN_FAN,
mPlayer_ITEM_KIND_FLOWER_FAN,
mPlayer_ITEM_KIND_LEAF_FAN,
mPlayer_ITEM_KIND_NUM /* Are there more? */
};
enum {
mPlayer_ITEM_DATA_AXE, // model
mPlayer_ITEM_DATA_AXE_B, // model
mPlayer_ITEM_DATA_AXE_C, // model
mPlayer_ITEM_DATA_GOLD_AXE, // model
mPlayer_ITEM_DATA_NET, // skeleton
mPlayer_ITEM_DATA_GOLD_NET, // skeleton
mPlayer_ITEM_DATA_NET_GET_M, // animation
mPlayer_ITEM_DATA_NET_SWING, // animation
mPlayer_ITEM_DATA_KAMAE_MAIN_M, // animation
mPlayer_ITEM_DATA_KOKERU_GETUP_N, // animation
mPlayer_ITEM_DATA_KOKERU_N, // animation
mPlayer_ITEM_DATA_SWING_WAIT, // animation
mPlayer_ITEM_DATA_YATTA_M, // animation
mPlayer_ITEM_DATA_ROD, // skeleton
mPlayer_ITEM_DATA_GOLD_ROD, // skeleton
mPlayer_ITEM_DATA_ROD_GET_T, // animation
mPlayer_ITEM_DATA_ROD_MOVE, // animation
mPlayer_ITEM_DATA_ROD_SINARI, // animation
mPlayer_ITEM_DATA_ROD_SWING, // animation
mPlayer_ITEM_DATA_ROD_WAIT, // animation
mPlayer_ITEM_DATA_ROD_NOT_SWING, // animation
mPlayer_ITEM_DATA_SHOVEL, // model
mPlayer_ITEM_DATA_GOLD_SHOVEL, // model
mPlayer_ITEM_DATA_BALLOON1, // skeleton
mPlayer_ITEM_DATA_BALLOON2, // skeleton
mPlayer_ITEM_DATA_BALLOON3, // skeleton
mPlayer_ITEM_DATA_BALLOON4, // skeleton
mPlayer_ITEM_DATA_BALLOON5, // skeleton
mPlayer_ITEM_DATA_BALLOON6, // skeleton
mPlayer_ITEM_DATA_BALLOON7, // skeleton
mPlayer_ITEM_DATA_BALLOON8, // skeleton
mPlayer_ITEM_DATA_BALLOON_WAIT, // animation
mPlayer_ITEM_DATA_BALLOON_GYAZA, // animation
mPlayer_ITEM_DATA_PINWHEEL1, // skeleton
mPlayer_ITEM_DATA_PINWHEEL2, // skeleton
mPlayer_ITEM_DATA_PINWHEEL3, // skeleton
mPlayer_ITEM_DATA_PINWHEEL4, // skeleton
mPlayer_ITEM_DATA_PINWHEEL5, // skeleton
mPlayer_ITEM_DATA_PINWHEEL6, // skeleton
mPlayer_ITEM_DATA_PINWHEEL7, // skeleton
mPlayer_ITEM_DATA_PINWHEEL8, // skeleton
mPlayer_ITEM_DATA_PINWHEEL_WAIT, // animation
mPlayer_ITEM_DATA_FAN1, // model
mPlayer_ITEM_DATA_FAN2, // model
mPlayer_ITEM_DATA_FAN3, // model
mPlayer_ITEM_DATA_FAN4, // model
mPlayer_ITEM_DATA_FAN5, // model
mPlayer_ITEM_DATA_FAN6, // model
mPlayer_ITEM_DATA_FAN7, // model
mPlayer_ITEM_DATA_FAN8, // model
mPlayer_ITEM_DATA_NUM
};
enum {
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NUM
};
enum {
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_AXE,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NUM
};
enum {
mPlayer_CREATURE_INSECT,
mPlayer_CREATURE_GYOEI,
mPlayer_CREATURE_BALLOON,
mPlayer_CREATURE_NUM
};
enum {
mPlayer_BED_ACTION_NONE,
mPlayer_BED_ACTION_ROLL,
mPlayer_BED_ACTION_OUT,
mPlayer_BED_ACTION_NUM
};
typedef struct player_request_return_demo_s {
int prev_main_index;
f32 time;
} mPlayer_request_return_demo_c;
typedef struct player_request_wait_s {
f32 morph_speed;
f32 _04;
int flags;
} mPlayer_request_wait_c;
typedef struct player_request_talk_s {
ACTOR* talk_actor;
int turn_flag;
f32 morph_speed;
int umbrella_flag;
} mPlayer_request_talk_c;
typedef struct player_request_hold_s {
int ftr_no;
s16 angle_y;
xyz_t player_pos;
f32 morph_speed;
int flags;
} mPlayer_request_hold_c;
typedef struct player_request_recieve_wait_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int on_surface_flag;
} mPlayer_request_recieve_wait_c;
typedef struct player_request_give_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int mode;
int present_flag;
int on_surface_flag;
} mPlayer_request_give_c;
typedef struct player_request_sitdown_s {
s16 angle;
xyz_t pos;
int ftrID;
} mPlayer_request_sitdown_c;
typedef struct player_request_close_funriture_s {
int anim_idx;
} mPlayer_request_close_furniture_c;
typedef struct player_request_lie_bed_s {
int direct;
s16 angle;
xyz_t wpos;
int ftr_name;
} mPlayer_request_lie_bed_c;
typedef struct player_request_door_s {
s16 angle_y;
xyz_t player_pos;
int type;
u32 label;
} mPlayer_request_door_c;
typedef struct player_request_outdoor_s {
int type;
int is_start_demo;
} mPlayer_request_outdoor_c;
typedef struct player_request_demo_wait_s {
int umbrella_flag;
int _04;
} mPlayer_request_demo_wait_c;
typedef struct player_request_demo_walk_s {
f32 goal_pos_x;
f32 goal_pos_z;
f32 speed;
int _0C;
} mPlayer_request_demo_walk_c;
typedef struct player_request_demo_geton_train_s {
s16 angle_y;
xyz_t player_pos;
} mPlayer_request_demo_geton_train_c;
typedef struct player_request_demo_getoff_train_s {
s16 angle_y;
xyz_t player_pos;
} mPlayer_request_demo_getoff_train_c;
typedef struct player_request_rotate_octagon_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
xyz_t pos;
s16 angle_y;
} mPlayer_request_rotate_octagon_c;
typedef struct player_request_wash_car_s {
xyz_t car_pos;
xyz_t orig_pos;
s16 orig_angle_y;
ACTOR* parent_actor;
} mPlayer_request_wash_car_c;
typedef struct player_request_throw_money_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_throw_money_c;
typedef struct player_request_pray_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_pray_c;
typedef struct player_request_mail_jump_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_mail_jump_c;
typedef struct player_request_shock_s {
f32 timer;
s16 target_angle_y;
u8 bee_chase_bgm_flag;
int axe_broke_flag;
} mPlayer_request_shock_c;
typedef struct player_request_push_snowball_s {
u32 type;
int wade_type;
} mPlayer_request_push_snowball_c;
typedef struct player_request_stung_mosquito_s {
u32 label;
} mPlayer_request_stung_mosquito_c;
typedef struct player_request_switch_on_lighthouse_s {
s16 angle_y;
xyz_t pos;
} mPlayer_request_switch_on_lighthouse_c;
typedef struct player_request_demo_geton_boat_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_demo_geton_boat_c;
typedef struct player_request_demo_getoff_boat_standup_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_demo_getoff_boat_standup_c;
typedef struct player_request_demo_get_golden_item_s {
u32 label;
} mPlayer_request_demo_get_golden_item_c;
typedef struct player_request_walk_s {
xyz_t pos;
f32 morph_speed;
int flags;
} mPlayer_request_walk_c;
typedef struct player_request_run_s {
f32 morph_speed;
int flags;
} mPlayer_request_run_c;
typedef struct player_request_dash_s {
f32 morph_speed;
int flags;
} mPlayer_request_dash_c;
typedef struct player_request_turn_dash_s {
s16 target_angle_y;
} mPlayer_request_turn_dash_c;
typedef struct player_request_fall_s {
f32 morph_speed;
int flags;
} mPlayer_request_fall_c;
typedef struct player_request_wade_s {
int dir;
} mPlayer_request_wade_c;
typedef struct player_request_wade_snowball_s {
int dir;
xyz_t pos;
u32 label;
} mPlayer_request_wade_snowball_c;
typedef struct player_request_push_s {
int ftrNo;
s16 angle_y;
xyz_t player_pos;
} mPlayer_request_push_c;
typedef struct player_request_pull_s {
int ftrNo;
s16 angle_y;
xyz_t start_pos;
xyz_t end_pos;
xyz_t ofs;
} mPlayer_request_pull_c;
typedef struct player_request_rotate_furniture_s {
int ftrNo;
s16 angle_y;
xyz_t player_pos;
int rotate_type;
} mPlayer_request_rotate_furniture_c;
typedef struct player_request_wait_open_furniture_s {
int anim_idx;
} mPlayer_request_wait_open_furniture_c;
typedef struct player_request_wait_close_furniture_s {
int anim_idx;
} mPlayer_request_wait_close_furniture_c;
typedef struct player_request_roll_bed_s {
int move_dir;
} mPlayer_request_roll_bed_c;
typedef struct player_request_standup_bed_s {
int move_dir;
} mPlayer_request_standup_bed_c;
typedef struct player_request_pickup_s {
int inv_slot;
mActor_name_t item;
xyz_t end_pos;
xyz_t start_pos;
int flag;
} mPlayer_request_pickup_c;
typedef struct player_request_pickup_jump_s {
int inv_slot;
mActor_name_t item;
xyz_t start_pos;
int flag;
} mPlayer_request_pickup_jump_c;
typedef struct player_request_pickup_furniture_s {
int inv_slot;
mActor_name_t item;
xyz_t start_pos;
} mPlayer_request_pickup_furniture_c;
typedef struct player_request_pickup_exchange_s {
xyz_t end_pos;
mActor_name_t item;
} mPlayer_request_pickup_exchange_c;
typedef struct player_request_sitdown_wait_s {
int ftrID;
} mPlayer_request_sitdown_wait_c;
typedef struct player_request_standup_s {
int ftrID;
} mPlayer_request_standup_c;
typedef struct player_request_swing_axe_s {
xyz_t goal_pos;
mActor_name_t hit_item;
u16 axe_damage_no;
int hit_ut_x;
int hit_ut_z;
int break_flag;
} mPlayer_request_swing_axe_c;
typedef struct player_request_reflect_axe_s {
xyz_t goal_pos;
mActor_name_t hit_item;
u16 axe_damage_no;
ACTOR* hit_actor;
int _14;
int break_flag;
} mPlayer_request_reflect_axe_c;
typedef struct player_request_notice_net_s {
int _00;
} mPlayer_request_notice_net_c;
typedef struct player_request_putaway_net_s {
int _00;
} mPlayer_request_putaway_net_c;
typedef struct player_request_cast_rod_s {
xyz_t bobber_target_pos;
} mPlayer_request_cast_rod_c;
typedef struct player_request_notice_rod_s {
s16 angle_y;
} mPlayer_request_notice_rod_c;
typedef struct player_request_putaway_rod_s {
s16 angle_y;
int _04;
} mPlayer_request_putaway_rod_c;
typedef struct player_request_dig_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
} mPlayer_request_dig_scoop_c;
typedef struct player_request_fill_scoop_s {
xyz_t dig_pos;
} mPlayer_request_fill_scoop_c;
typedef struct player_request_reflect_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
ACTOR* hit_actor;
} mPlayer_request_reflect_scoop_c;
typedef struct player_request_putin_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
int _10;
} mPlayer_request_putin_scoop_c;
typedef struct player_request_putaway_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
int _10;
} mPlayer_request_putaway_scoop_c;
typedef struct player_request_get_scoop_s {
xyz_t dig_pos;
mActor_name_t item;
} mPlayer_request_get_scoop_c;
typedef struct player_request_recieve_stretch_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int on_surface_flag;
} mPlayer_request_recieve_stretch_c;
typedef struct player_request_recieve_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int on_surface_flag;
} mPlayer_request_recieve_c;
typedef struct player_request_recieve_putaway_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int on_surface_flag;
} mPlayer_request_recieve_putaway_c;
typedef struct player_request_give_wait_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t item;
int on_surface_flag; // TODO: verify this flag is correct
} mPlayer_request_give_wait_c;
typedef struct player_request_demo_wade_s {
int dir;
} mPlayer_request_demo_wade_c;
typedef struct player_request_release_creature_gyoei_s {
s16 angle_y;
s16 _02;
} mPlayer_request_release_creature_gyoei_c;
typedef struct player_request_release_creature_insect_s {
xyz_t pos;
int type;
} mPlayer_request_release_creature_insect_c;
typedef struct player_request_release_creature_balloon_s {
int _00;
} mPlayer_request_release_creature_balloon_c;
typedef union {
mPlayer_request_release_creature_gyoei_c gyoei;
mPlayer_request_release_creature_insect_c insect;
mPlayer_request_release_creature_balloon_c balloon;
} mPlayer_request_release_creature_u;
typedef struct player_request_release_creature_s {
int type;
mPlayer_request_release_creature_u data;
ACTOR* actor;
} mPlayer_request_release_creature_c;
typedef struct player_request_shake_tree_s {
xyz_t pos;
mActor_name_t item;
int ut_x;
int ut_z;
} mPlayer_request_shake_tree_c;
typedef struct player_request_ready_pitfall_s {
xyz_t pos;
} mPlayer_request_ready_pitfall_c;
typedef struct player_request_remove_grass_s {
xyz_t start_pos;
xyz_t end_pos;
} mPlayer_request_remove_grass_c;
typedef struct player_request_change_cloth_s {
ACTOR* talk_actor;
int turn_flag;
int prev_main_index;
mActor_name_t cloth_item;
u16 cloth_idx;
int _10;
} mPlayer_request_change_cloth_c;
typedef struct player_request_swing_fan_s {
int anim_idx;
} mPlayer_request_swing_fan_c;
typedef struct player_request_radio_exercise_s {
int anim_idx;
f32 morph_speed;
} mPlayer_request_radio_exercise_c;
typedef struct player_request_demo_geton_boat_wade_s {
int dir;
f32 speed; // TODO: check this
} mPlayer_request_demo_geton_boat_wade_c;
typedef struct player_request_demo_getoff_boat_s {
xyz_t pos;
s16 angle_y;
} mPlayer_request_demo_getoff_boat_c;
typedef struct player_request_give_from_submenu_s {
xyz_t unused; // assumed based on size
mActor_name_t item;
int mode_after; // player mode after the action finishes
int present_flag; // set if the item is wrapped as presnet
int counter_flag; // set when the item slides across a counter
} mPlayer_request_give_from_submenu_c;
typedef struct player_request_putin_scoop_from_submenu_s {
xyz_t wpos;
mActor_name_t item;
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;
} mPlayer_request_demo_wait_from_submenu_c;
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;
mPlayer_request_talk_c talk;
mPlayer_request_hold_c hold;
mPlayer_request_recieve_wait_c recieve_wait;
mPlayer_request_give_c give;
mPlayer_request_sitdown_c sitdown;
mPlayer_request_close_furniture_c close_furniture;
mPlayer_request_lie_bed_c lie_bed;
mPlayer_request_door_c door;
mPlayer_request_outdoor_c outdoor;
mPlayer_request_demo_wait_c demo_wait;
mPlayer_request_demo_walk_c demo_walk;
mPlayer_request_demo_geton_train_c demo_geton_train;
mPlayer_request_demo_getoff_train_c demo_getoff_train;
mPlayer_request_rotate_octagon_c rotate_octagon;
mPlayer_request_wash_car_c wash_car;
mPlayer_request_throw_money_c throw_money;
mPlayer_request_pray_c pray;
mPlayer_request_mail_jump_c mail_jump;
mPlayer_request_shock_c shock;
mPlayer_request_push_snowball_c push_snowball;
mPlayer_request_stung_mosquito_c stung_mosquito;
mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse;
mPlayer_request_demo_geton_boat_c demo_geton_boat;
mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup;
mPlayer_request_demo_get_golden_item_c demo_get_golden_item;
mPlayer_request_walk_c walk;
mPlayer_request_run_c run;
mPlayer_request_dash_c dash;
mPlayer_request_turn_dash_c turn_dash;
mPlayer_request_fall_c fall;
mPlayer_request_wade_c wade;
mPlayer_request_wade_snowball_c wade_snowball;
mPlayer_request_push_c push;
mPlayer_request_pull_c pull;
mPlayer_request_rotate_furniture_c rotate_furniture;
mPlayer_request_wait_open_furniture_c wait_open_furniture;
mPlayer_request_wait_close_furniture_c wait_close_furniture;
mPlayer_request_roll_bed_c roll_bed;
mPlayer_request_standup_bed_c standup_bed;
mPlayer_request_pickup_c pickup;
mPlayer_request_pickup_jump_c pickup_jump;
mPlayer_request_pickup_furniture_c pickup_furniture;
mPlayer_request_pickup_exchange_c pickup_exchange;
mPlayer_request_sitdown_wait_c sitdown_wait;
mPlayer_request_standup_c standup;
mPlayer_request_swing_axe_c swing_axe;
mPlayer_request_reflect_axe_c reflect_axe;
mPlayer_request_notice_net_c notice_net;
mPlayer_request_putaway_net_c putaway_net;
mPlayer_request_cast_rod_c cast_rod;
mPlayer_request_notice_rod_c notice_rod;
mPlayer_request_putaway_rod_c putaway_rod;
mPlayer_request_dig_scoop_c dig_scoop;
mPlayer_request_fill_scoop_c fill_scoop;
mPlayer_request_reflect_scoop_c reflect_scoop;
mPlayer_request_putin_scoop_c putin_scoop;
mPlayer_request_putaway_scoop_c putaway_scoop;
mPlayer_request_get_scoop_c get_scoop;
mPlayer_request_recieve_stretch_c recieve_stretch;
mPlayer_request_recieve_c recieve;
mPlayer_request_recieve_putaway_c recieve_putaway;
mPlayer_request_give_wait_c give_wait;
mPlayer_request_demo_wade_c demo_wade;
mPlayer_request_release_creature_c release_creature;
mPlayer_request_shake_tree_c shake_tree;
mPlayer_request_ready_pitfall_c ready_pitfall;
mPlayer_request_remove_grass_c remove_grass;
mPlayer_request_change_cloth_c change_cloth;
mPlayer_request_swing_fan_c swing_fan;
mPlayer_request_radio_exercise_c radio_exercise;
mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade;
mPlayer_request_demo_getoff_boat_c demo_getoff_boat;
u64 align; // TODO: is this necessary? it makes the size correct for this and mPlayer_request_main_data
} mPlayer_request_backup_u;
typedef struct player_request_takeout_item_s {
mPlayer_request_backup_u request_data;
int request_main_index;
} mPlayer_request_takeout_item_c;
typedef struct player_request_putin_item_s {
mPlayer_request_backup_u request_data;
int request_main_index;
} mPlayer_request_putin_item_c;
typedef struct player_request_knock_door_s {
mPlayer_request_backup_u request_data;
int request_main_index;
xyz_t pos;
s16 angle_y;
} mPlayer_request_knock_door_c;
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;
mPlayer_request_talk_c talk;
mPlayer_request_hold_c hold;
mPlayer_request_recieve_wait_c recieve_wait;
mPlayer_request_give_c give;
mPlayer_request_sitdown_c sitdown;
mPlayer_request_close_furniture_c close_furniture;
mPlayer_request_lie_bed_c lie_bed;
mPlayer_request_door_c door;
mPlayer_request_outdoor_c outdoor;
mPlayer_request_demo_wait_c demo_wait;
mPlayer_request_demo_walk_c demo_walk;
mPlayer_request_demo_geton_train_c demo_geton_train;
mPlayer_request_demo_getoff_train_c demo_getoff_train;
mPlayer_request_rotate_octagon_c rotate_octagon;
mPlayer_request_wash_car_c wash_car;
mPlayer_request_throw_money_c throw_money;
mPlayer_request_pray_c pray;
mPlayer_request_mail_jump_c mail_jump;
mPlayer_request_shock_c shock;
mPlayer_request_push_snowball_c push_snowball;
mPlayer_request_stung_mosquito_c stung_mosquito;
mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse;
mPlayer_request_demo_geton_boat_c demo_geton_boat;
mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup;
mPlayer_request_demo_get_golden_item_c demo_get_golden_item;
mPlayer_request_walk_c walk;
mPlayer_request_run_c run;
mPlayer_request_dash_c dash;
mPlayer_request_turn_dash_c turn_dash;
mPlayer_request_fall_c fall;
mPlayer_request_wade_c wade;
mPlayer_request_wade_snowball_c wade_snowball;
mPlayer_request_push_c push;
mPlayer_request_pull_c pull;
mPlayer_request_rotate_furniture_c rotate_furniture;
mPlayer_request_wait_open_furniture_c wait_open_furniture;
mPlayer_request_wait_close_furniture_c wait_close_furniture;
mPlayer_request_roll_bed_c roll_bed;
mPlayer_request_standup_bed_c standup_bed;
mPlayer_request_pickup_c pickup;
mPlayer_request_pickup_jump_c pickup_jump;
mPlayer_request_pickup_furniture_c pickup_furniture;
mPlayer_request_pickup_exchange_c pickup_exchange;
mPlayer_request_sitdown_wait_c sitdown_wait;
mPlayer_request_standup_c standup;
mPlayer_request_swing_axe_c swing_axe;
mPlayer_request_reflect_axe_c reflect_axe;
mPlayer_request_notice_net_c notice_net;
mPlayer_request_putaway_net_c putaway_net;
mPlayer_request_cast_rod_c cast_rod;
mPlayer_request_notice_rod_c notice_rod;
mPlayer_request_putaway_rod_c putaway_rod;
mPlayer_request_dig_scoop_c dig_scoop;
mPlayer_request_fill_scoop_c fill_scoop;
mPlayer_request_reflect_scoop_c reflect_scoop;
mPlayer_request_putin_scoop_c putin_scoop;
mPlayer_request_putaway_scoop_c putaway_scoop;
mPlayer_request_get_scoop_c get_scoop;
mPlayer_request_recieve_stretch_c recieve_stretch;
mPlayer_request_recieve_c recieve;
mPlayer_request_recieve_putaway_c recieve_putaway;
mPlayer_request_give_wait_c give_wait;
mPlayer_request_demo_wade_c demo_wade;
mPlayer_request_release_creature_c release_creature;
mPlayer_request_shake_tree_c shake_tree;
mPlayer_request_ready_pitfall_c ready_pitfall;
mPlayer_request_remove_grass_c remove_grass;
mPlayer_request_change_cloth_c change_cloth;
mPlayer_request_swing_fan_c swing_fan;
mPlayer_request_radio_exercise_c radio_exercise;
mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade;
mPlayer_request_demo_getoff_boat_c demo_getoff_boat;
mPlayer_request_takeout_item_c takeout_item;
mPlayer_request_putin_item_c putin_item;
mPlayer_request_knock_door_c knock_door;
/* TODO: others? */
// u8 force_size[72]; // TEMP
} mPlayer_request_main_data;
/* Current main state data structs */
typedef struct player_main_intro_s {
f32 timer;
} mPlayer_main_intro_c;
typedef struct player_main_return_demo_s {
f32 timer;
f32 max_timer;
int prev_main_index;
} mPlayer_main_return_demo_c;
typedef struct player_main_return_outdoor_s {
f32 timer;
f32 max_timer;
int prev_main_index;
} mPlayer_main_return_outdoor_c;
typedef struct player_main_return_outdoor2_s {
f32 timer;
f32 max_timer;
int prev_main_index;
} mPlayer_main_return_outdoor2_c;
typedef union {
mPlayer_main_intro_c intro;
mPlayer_main_return_demo_c return_demo;
mPlayer_main_return_outdoor_c return_outdoor;
mPlayer_main_return_outdoor2_c return_outdoor2;
u8 force_size[72]; // TEMP
} mPlayer_main_data;
typedef struct {
int requested_main_index;
int requested_index_pending;
mPlayer_request_main_data request_main_data;
} mPlayer_change_data_from_submenu_c;
/* sizeof(struct player_actor_s) == 0x13A8 */
struct player_actor_s {
/* 0x0000 */ ACTOR actor_class;
/* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0;
/* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1;
/* 0x0252 */ s_xyz joint_data[27];
/* 0x02F4 */ s_xyz morph_data[27];
/* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */
/* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */
/* 0x0A88 */ s_xyz item_joint_data[8];
/* 0x0AB8 */ s_xyz item_morph_data[8];
/* 0x0AE8 */ Mtx item_work_mtx[2][4]; /* swapped between frames */
/* 0x0CE8 */ s16 eye_pattern_normal;
/* 0x0CEA */ s16 eye_pattern_normal_timer;
/* 0x0CEC */ int blink_count;
/* 0x0CF0 */ int eye_tex_idx;
/* 0x0CF4 */ int mouth_tex_idx;
/* 0x0CF8 */ int now_main_index;
/* 0x0CFC */ int prev_main_index;
/* 0x0D00 */ int changed_main_index;
/* 0x0D04 */ int item_main_index;
/* 0x0D08 */ int requested_main_index;
/* 0x0D0C */ int requested_main_index_priority;
/* 0x0D10 */ int requested_main_index_changed;
/* 0x0D14 */ int settled_requested_main_index_priority;
/* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types...
/* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types...
/* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */
/* 0x1010 */ ClObjPipe_c col_pipe;
/* 0x102C */ xyz_t head_pos;
/* 0x1038 */ xyz_t feel_pos;
/* 0x1044 */ xyz_t right_hand_pos;
/* 0x1050 */ xyz_t right_hand_move;
/* 0x105C */ xyz_t left_hand_pos;
/* 0x1068 */ MtxF right_hand_mtx;
/* 0x10A8 */ MtxF left_hand_mtx;
/* 0x10E8 */ u8 _10E8[0x11FC - 0x10E8]; // TODO
/* 0x11FC */ int crash_snowball_for_wade;
/* 0x1200 */ xyz_t snowball_dist;
/* 0x120C */ int wade_request_flag;
/* 0x1210 */ u16 cancel_wade_timer;
/* 0x1214 */ int cancel_wade_flag;
/* 0x1218 */ f32 geton_boat_wade;
/* 0x121C */ u16 frame_timer;
/* 0x121E */ s8 bee_chase_bgm_flag;
/* 0x121F */ s8 status_for_bee;
/* 0x1220 */ void* angle_force_speak_label;
/* 0x1224 */ int player_sunburn_rankup;
/* 0x1228 */ int player_sunburn_rankdown;
/* 0x122C */ u8 radio_exercise_command_ring_buffer[8];
/* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_num;
/* 0x1238 */ int radio_exercise_command_ring_buffer_index;
/* 0x123C */ int radio_exercise_continue_cmd_idx;
/* 0x1240 */ f32 radio_exercise_cmd_timer;
/* 0x1244 */ int old_sound_frame_counter;
/* 0x1248 */ s16 boat_angleZ;
/* 0x124C */ int change_color_request;
/* 0x1250 */ int change_color_flag;
/* 0x1254 */ f32 change_color_timer;
/* 0x1258 */ int change_color_rgb[3];
/* 0x1264 */ int change_color_near;
/* 0x1268 */ int change_color_far;
/* 0x126C */ int refuse_pickup_knife_fork_flag;
/* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int);
/* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int);
/* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int);
/* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, int, int);
/* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int);
/* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int);
/* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int);
/* 0x128C */ int (*request_main_give_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int);
/* 0x1290 */ int (*request_main_sitdown_all_proc)(GAME*, int, const xyz_t*, int, int);
/* 0x1294 */ int (*request_main_close_furniture_all_proc)(GAME*, int);
/* 0x1298 */ int (*request_main_lie_bed_all_proc)(GAME*, int, const xyz_t*, int, int, int);
/* 0x129C */ int (*request_main_hide_all_proc)(GAME*, int);
/* 0x12A0 */ int (*request_main_groundhog_proc)(GAME*, int);
/* 0x12A4 */ int (*request_main_door_all_proc)(GAME*, const xyz_t*, s16, int, void*, int);
/* 0x12A8 */ int (*request_main_outdoor_all_proc)(GAME*, int, int, int);
/* 0x12AC */ int (*request_main_wash_car_all_proc)(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int);
/* 0x12B0 */ int (*request_main_rotate_octagon_all_proc)(GAME*, ACTOR*, int, int, const xyz_t*, s16, int);
/* 0x12B4 */ int (*request_main_throw_money_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12B8 */ int (*request_main_pray_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12BC */ int (*request_main_mail_jump_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12C0 */ int (*request_main_demo_wait_all_proc)(GAME*, int, void*, int);
/* 0x12C4 */ int (*request_main_demo_walk_all_proc)(GAME*, f32, f32, f32, int, int);
/* 0x12C8 */ int (*request_main_demo_geton_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12CC */ int (*request_main_demo_getoff_train_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int);
/* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int);
/* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int);
/* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, int);
/* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int);
/* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, int, int);
/* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, int, int);
/* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int);
/* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int);
/* 0x12F8 */ int (*request_main_demo_get_golden_axe_wait_all_proc)(GAME*, int);
/* 0x12FC */ int (*check_request_main_priority_proc)(GAME*, int);
/* 0x1300 */ void* (*get_door_label_proc)(GAME*);
/* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32);
/* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*);
/* 0x130C */ u8 (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8);
/* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8);
/* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*);
/* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*);
/* 0x131C */ int (*Check_Label_main_push_snowball_proc)(GAME*, void*);
/* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32);
/* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*);
/* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*);
/* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, ACTOR*);
/* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int);
/* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*);
/* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8);
/* 0x133C */ int (*Check_StopNet_proc)(ACTOR*, xyz_t*);
/* 0x1340 */ int (*Check_HitAxe_proc)(ACTOR*, xyz_t*);
/* 0x1344 */ int (*Check_VibUnit_OneFrame_proc)(ACTOR*, const xyz_t*);
/* 0x1348 */ int (*Check_HitScoop_proc)(ACTOR*, xyz_t*);
/* 0x134C */ int (*Check_DigScoop_proc)(ACTOR*, xyz_t*);
/* 0x1350 */ int (*check_request_change_item_proc)(GAME*);
/* 0x1354 */ int (*Check_RotateOctagon_proc)(GAME*);
/* 0x1358 */ int (*Check_end_stung_bee_proc)(ACTOR*);
/* 0x135C */ int (*Get_status_for_bee_proc)(ACTOR*);
/* 0x1360 */ int (*Set_ScrollDemo_forWade_snowball_proc)(ACTOR*, int, const xyz_t*);
/* 0x1364 */ int (*Check_tree_shaken_proc)(ACTOR*, const xyz_t*);
/* 0x1368 */ int (*Check_tree_shaken_little_proc)(ACTOR*, const xyz_t*);
/* 0x136C */ int (*Check_tree_shaken_big_proc)(ACTOR*, const xyz_t*);
/* 0x1370 */ int (*Check_Label_main_wade_snowball_proc)(GAME*, void*);
/* 0x1374 */ int (*GetSnowballPos_forWadeSnowball_proc)(ACTOR*, xyz_t*);
/* 0x1378 */ int (*CheckCondition_forWadeSnowball_proc)(GAME*, const xyz_t*, s16);
/* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*);
/* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*);
/* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)();
/* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, ACTOR*);
/* 0x138C */ int a_btn_pressed;
/* 0x1390 */ int a_btn_triggers_submenu;
/* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */
/* 0x1398 */ xyz_t foward_ut_pos; /* wpos of unit in front of player */
/* 0x13A4 */ s8 update_scene_bg_mode;
};
void Player_actor_ct(ACTOR*, GAME*);
void Player_actor_dt(ACTOR*, GAME*);
void Player_actor_move(ACTOR*, GAME*);
void Player_actor_draw(ACTOR*, GAME*);
#ifdef __cplusplus
}
#endif
#endif