Shipwright/soh/src/overlays/actors/ovl_En_Wf/z_en_wf.h

92 lines
3.2 KiB
C

#ifndef Z_EN_WF_H
#define Z_EN_WF_H
#include "ultra64.h"
#include "global.h"
struct EnWf;
typedef void (*EnWfActionFunc)(struct EnWf*, GlobalContext*);
typedef enum {
/* 0 */ WOLFOS_LIMB_NONE,
/* 1 */ WOLFOS_LIMB_ROOT,
/* 2 */ WOLFOS_LIMB_BACK_LEFT_THIGH,
/* 3 */ WOLFOS_LIMB_BACK_LEFT_SHIN,
/* 4 */ WOLFOS_LIMB_BACK_LEFT_PASTERN,
/* 5 */ WOLFOS_LIMB_BACK_LEFT_PAW,
/* 6 */ WOLFOS_LIMB_TAIL,
/* 7 */ WOLFOS_LIMB_ABDOMEN,
/* 8 */ WOLFOS_LIMB_BACK_RIGHT_THIGH,
/* 9 */ WOLFOS_LIMB_BACK_RIGHT_SHIN,
/* 10 */ WOLFOS_LIMB_BACK_RIGHT_PASTERN,
/* 11 */ WOLFOS_LIMB_BACK_RIGHT_PAW,
/* 12 */ WOLFOS_LIMB_THORAX,
/* 13 */ WOLFOS_LIMB_FRONT_RIGHT_UPPER_LEG,
/* 14 */ WOLFOS_LIMB_FRONT_RIGHT_LOWER_LEG,
/* 15 */ WOLFOS_LIMB_FRONT_RIGHT_CLAW,
/* 16 */ WOLFOS_LIMB_HEAD_ROOT,
/* 17 */ WOLFOS_LIMB_HEAD,
/* 18 */ WOLFOS_LIMB_EYES,
/* 19 */ WOLFOS_LIMB_FRONT_LEFT_UPPER_LEG,
/* 20 */ WOLFOS_LIMB_FRONT_LEFT_LOWER_LEG,
/* 21 */ WOLFOS_LIMB_FRONT_LEFT_CLAW,
/* 22 */ WOLFOS_LIMB_MAX
} EnWfLimb;
typedef enum {
/* 0 */ WOLFOS_ACTION_WAIT_TO_APPEAR,
/* 2 */ WOLFOS_ACTION_DIE = 2,
/* 3 */ WOLFOS_ACTION_DAMAGED,
/* 4 */ WOLFOS_ACTION_TURN_TOWARDS_PLAYER,
/* 5 */ WOLFOS_ACTION_BACKFLIP_AWAY,
/* 6 */ WOLFOS_ACTION_WAIT,
/* 7 */ WOLFOS_ACTION_BLOCKING,
/* 8 */ WOLFOS_ACTION_SLASH,
/* 9 */ WOLFOS_ACTION_RUN_AT_PLAYER,
/* 10 */ WOLFOS_ACTION_SEARCH_FOR_PLAYER,
/* 11 */ WOLFOS_ACTION_RUN_AROUND_PLAYER,
/* 12 */ WOLFOS_ACTION_RECOIL_FROM_BLOCKED_SLASH,
/* 14 */ WOLFOS_ACTION_SIDESTEP = 14,
/* 15 */ WOLFOS_ACTION_STUNNED
} EnWfAction;
typedef struct EnWf {
/* 0x0000 */ Actor actor;
/* 0x014C */ Vec3s bodyPartsPos[10];
/* 0x0188 */ SkelAnime skelAnime;
/* 0x01CC */ Vec3s jointTable[WOLFOS_LIMB_MAX];
/* 0x0250 */ Vec3s morphTable[WOLFOS_LIMB_MAX];
/* 0x02D4 */ s32 action; // Used instead of checking the actionFunc directly (but also in range comparisons)
/* 0x02D8 */ char unk_2D8[4]; // Unused
/* 0x02DC */ EnWfActionFunc actionFunc;
/* 0x02E0 */ s16 unk_2E0; // Used, but has no effect
/* 0x02E2 */ s16 unk_2E2;
/* 0x02E4 */ s16 fireTimer;
/* 0x02E6 */ u8 damageEffect;
/* 0x02E8 */ s32 actionTimer; // Used to make an action last for a certain amount of time
/* 0x02EC */ f32 runSpeed;
/* 0x02F0 */ char unk_2F0[4];
/* 0x02F4 */ f32 unk_2F4; // Set and not used
/* 0x02F8 */ s16 slashStatus; // Whether to slash again or not, and whether to cry
/* 0x02FA */ s16 unk_2FA; // Set and not used
/* 0x02FC */ s16 switchFlag;
/* 0x02FE */ s16 runAngle;
/* 0x0300 */ s16 unk_300; // Set, but ineffectual (see comment in Draw)
/* 0x0302 */ u8 eyeIndex;
/* 0x0304 */ ColliderJntSph colliderSpheres;
/* 0x0324 */ ColliderJntSphElement colliderSpheresElements[4];
/* 0x0424 */ ColliderCylinder colliderCylinderBody;
/* 0x0470 */ ColliderCylinder colliderCylinderTail;
/* 0x04BC */ Vec3f unk_4BC;
/* 0x04C8 */ Vec3f unk_4C8;
/* 0x04D4 */ Vec3s unk_4D4;
} EnWf; // size = 0x04DC
typedef enum {
/* 0 */ WOLFOS_NORMAL,
/* 1 */ WOLFOS_WHITE
} EnWfType;
#endif