#ifndef AC_GARAGARA_H #define AC_GARAGARA_H #include "types.h" #include "m_actor.h" #include "c_keyframe.h" #ifdef __cplusplus extern "C" { #endif #define aGRGR_JOINT_NUM 3 enum { aGRGR_MODE_NONE, aGRGR_MODE_FUKUBIKI, aGRGR_MODE_NUM }; enum { aGRGR_BALL_FIRST_PLACE, aGRGR_BALL_SECOND_PLACE, aGRGR_BALL_THIRD_PLACE, aGRGR_BALL_NOT_WINNER, aGRGR_BALL_TYPE_NUM }; typedef int (*aGRGR_GARAGARA_ANIME_START_PROC)(int); typedef int (*aGRGR_DELETE_BALL_PROC)(void); typedef struct garagara_clip_s { ACTOR* actorx; aGRGR_GARAGARA_ANIME_START_PROC garagara_anime_start_proc; aGRGR_DELETE_BALL_PROC delete_ball_proc; } aGRGR_clip_c; typedef struct garagara_ball_s { xyz_t pos; xyz_t old_pos; int ball_type; s16 status; f32 vel_y; f32 acc_y; f32 max_vel_y; f32 vel_xz; s16 angle; s16 remove_timer; xyz_t src_pos; s16 old_on_ground; s16 on_ground; s16 hit_wall; s16 hit_wall_angle; } aGRGR_ball_c; typedef struct garagara_actor_s GARAGARA_ACTOR; struct garagara_actor_s { ACTOR actor_class; int mode; s16 status; int ball_type; int anime_frame; cKF_SkeletonInfo_R_c keyframe; s_xyz work[aGRGR_JOINT_NUM]; s_xyz morph[aGRGR_JOINT_NUM]; Mtx mtx[2][aGRGR_JOINT_NUM]; aGRGR_clip_c clip; u8* bank; int request_flag; s16 request_status; aGRGR_ball_c ball; }; extern ACTOR_PROFILE Garagara_Profile; #ifdef __cplusplus } #endif #endif