Files
ac-decomp/include/ac_snowman.h
T
2025-06-06 17:43:48 -04:00

58 lines
1.4 KiB
C

#ifndef AC_SNOWMAN_H
#define AC_SNOWMAN_H
#include "types.h"
#include "m_actor.h"
#include "m_snowman.h"
#ifdef __cplusplus
extern "C" {
#endif
#define aSMAN_MOVE_DIST_MAX (6400.0f)
#define aSMAN_FLAG_HEAD_JUMP (1 << 0)
#define aSMAN_FLAG_ON_GROUND (1 << 1)
#define aSMAN_FLAG_MOVED (1 << 2)
#define aSMAN_FLAG_IN_HOLE (1 << 3)
#define aSMAN_FLAG_4 (1 << 4) // unused?
#define aSMAN_FLAG_COMBINED (1 << 5)
#define aSMAN_FLAG_NO_SPEAK (1 << 6)
#define aSMAN_FLAG_DELETE (1 << 7)
typedef int (*aSMAN_PROC)(ACTOR* actorx, GAME* game);
typedef struct snowman_actor_s {
/* 0x000 */ ACTOR actor_class;
/* 0x174 */ ClObjPipe_c col_pipe;
/* 0x190 */ aSMAN_PROC process;
/* 0x194 */ ACTOR* col_actor;
/* 0x198 */ xyz_t combine_dist;
/* 0x1A4 */ xyz_t rev_pos;
/* 0x1B0 */ xyz_t fg_pos;
/* 0x1BC */ f32 y_ofs;
/* 0x1C0 */ f32 fall_height;
/* 0x1C4 */ f32 base_speed;
/* 0x1C8 */ f32 accel;
/* 0x1CC */ f32 roll_speed;
/* 0x1D0 */ f32 normalized_scale; /* normalized ball scale, [0, 1.0f] */
/* 0x1D4 */ f32 body_scale;
/* 0x1D8 */ f32 move_dist; /* [0, 6400.0f] */
/* 0x1DC */ f32 impact_speed;
/* 0x1E0 */ int result;
/* 0x1E4 */ int msg_no;
/* 0x1E8 */ int snowman_part;
/* 0x1EC */ s_xyz head_vec;
/* 0x1F2 */ s_xyz ground_angle;
/* 0x1F8 */ s16 flags;
/* 0x1FA */ s16 timer;
} SNOWMAN_ACTOR;
extern ACTOR_PROFILE Snowman_Profile;
#ifdef __cplusplus
}
#endif
#endif