mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
180 lines
4.9 KiB
C
180 lines
4.9 KiB
C
#ifndef Z_BOSS_TW_H
|
|
#define Z_BOSS_TW_H
|
|
|
|
#include "ultra64.h"
|
|
#include "global.h"
|
|
|
|
typedef enum {
|
|
/* 0 */ TWEFF_NONE,
|
|
/* 1 */ TWEFF_DOT,
|
|
/* 2 */ TWEFF_2,
|
|
/* 3 */ TWEFF_3,
|
|
/* 4 */ TWEFF_RING,
|
|
/* 5 */ TWEFF_PLYR_FRZ,
|
|
/* 6 */ TWEFF_FLAME,
|
|
/* 7 */ TWEFF_MERGEFLAME,
|
|
/* 8 */ TWEFF_SHLD_BLST,
|
|
/* 9 */ TWEFF_SHLD_DEFL,
|
|
/* 10 */ TWEFF_SHLD_HIT
|
|
} TwEffType;
|
|
|
|
typedef enum {
|
|
/* 0 */ EFF_ARGS,
|
|
/* 1 */ EFF_UNKS1,
|
|
/* 2 */ EFF_WORK_MAX
|
|
} EffectWork;
|
|
|
|
typedef enum {
|
|
/* 0 */ EFF_SCALE,
|
|
/* 1 */ EFF_DIST,
|
|
/* 2 */ EFF_ROLL,
|
|
/* 3 */ EFF_YAW,
|
|
/* 4 */ EFF_FWORK_MAX
|
|
} EffectFWork;
|
|
|
|
typedef struct {
|
|
/* 0x0000 */ u8 type;
|
|
/* 0x0001 */ u8 frame;
|
|
/* 0x0004 */ Vec3f pos;
|
|
/* 0x0010 */ Vec3f curSpeed;
|
|
/* 0x001C */ Vec3f accel;
|
|
/* 0x0028 */ Color_RGB8 color;
|
|
/* 0x002C */ s16 alpha;
|
|
/* 0x002E */ s16 work[EFF_WORK_MAX];
|
|
/* 0x0034 */ f32 workf[EFF_FWORK_MAX];
|
|
/* 0x0044 */ Actor* target;
|
|
} BossTwEffect;
|
|
|
|
typedef enum {
|
|
/* 0 */ CS_TIMER_1,
|
|
/* 1 */ CS_TIMER_2,
|
|
/* 2 */ TW_PLLR_IDX,
|
|
/* 3 */ TAIL_IDX,
|
|
/* 4 */ BLINK_IDX,
|
|
/* 5 */ INVINC_TIMER,
|
|
/* 6 */ FOG_TIMER,
|
|
/* 7 */ CAN_SHOOT,
|
|
/* 8 */ UNK_S8,
|
|
/* 9 */ TW_BLINK_IDX,
|
|
/* 10 */ YAW_TGT,
|
|
/* 11 */ PLAYED_CHRG_SFX,
|
|
/* 12 */ BURN_TMR,
|
|
/* 13 */ WORK_MAX
|
|
} TwWork;
|
|
|
|
typedef enum {
|
|
/* 0 */ OUTR_CRWN_TX_X1,
|
|
/* 1 */ OUTR_CRWN_TX_X2,
|
|
/* 2 */ INNR_CRWN_TX_X1,
|
|
/* 3 */ INNR_CRWN_TX_X2,
|
|
/* 4 */ OUTR_CRWN_TX_Y1,
|
|
/* 5 */ OUTR_CRWN_TX_Y2,
|
|
/* 6 */ INNR_CRWN_TX_Y1,
|
|
/* 7 */ INNR_CRWN_TX_Y2,
|
|
/* 8 */ ANIM_SW_TGT,
|
|
/* 9 */ UNK_F9,
|
|
/* 9 */ KM_GD_FLM_A = 9,
|
|
/* 10 */ UNK_F10 = 10,
|
|
/* 10 */ TAIL_ALPHA = 10,
|
|
/* 10 */ KM_GD_SMOKE_A = 10,
|
|
/* 14 */ UNK_F11 = 11,
|
|
/* 15 */ KM_GRND_CRTR_A = 11,
|
|
/* 16 */ UNK_F12 = 12,
|
|
/* 17 */ KM_GD_FLM_SCL = 12,
|
|
/* 18 */ UNK_F13 = 13,
|
|
/* 19 */ KM_GD_CRTR_SCL = 13,
|
|
/* 20 */ UNK_F14,
|
|
/* 21 */ UNK_F15,
|
|
/* 22 */ UNK_F16,
|
|
/* 23 */ UNK_F17,
|
|
/* 24 */ UNK_F18,
|
|
/* 25 */ UNK_F19,
|
|
/* 26 */ FWORK_MAX
|
|
} TwFwork;
|
|
|
|
struct BossTw;
|
|
|
|
typedef void (*BossTwActionFunc)(struct BossTw*, GlobalContext* globalCtx);
|
|
|
|
typedef struct BossTw {
|
|
/* 0x0000 */ Actor actor;
|
|
/* 0x014C */ BossTwActionFunc actionFunc;
|
|
/* 0x0150 */ s16 work[WORK_MAX];
|
|
/* 0x0168 */ char unused_170[0xE]; // Likely unused Work variables
|
|
/* 0x0178 */ s16 timers[5];
|
|
/* 0x0184 */ f32 workf[FWORK_MAX];
|
|
/* 0x01D4 */ f32 fogR;
|
|
/* 0x01D8 */ f32 fogG;
|
|
/* 0x01DC */ f32 fogB;
|
|
/* 0x01E0 */ f32 fogNear;
|
|
/* 0x01E4 */ f32 fogFar;
|
|
/* 0x01E8 */ Vec3f blastTailPos[50];
|
|
/* 0x0440 */ s16 csState1;
|
|
/* 0x0444 */ Vec3f crownPos;
|
|
/* 0x0450 */ Vec3f scepterFlamePos[5];
|
|
/* 0x048C */ Vec3f beamOrigin;
|
|
/* 0x0498 */ Vec3f leftScepterPos;
|
|
/* 0x04A4 */ Vec3f rightScepterPos;
|
|
/* 0x04B0 */ Vec3f targetPos;
|
|
/* 0x04BC */ Vec3f groundBlastPos2;
|
|
/* 0x04C8 */ f32 rotateSpeed;
|
|
/* 0x04CC */ s16 eyeTexIdx;
|
|
/* 0x04CE */ s16 leftEyeTexIdx;
|
|
/* 0x04D0 */ f32 scepterAlpha;
|
|
/* 0x04D4 */ f32 flameAlpha;
|
|
/* 0x04D8 */ f32 spawnPortalAlpha;
|
|
/* 0x04DC */ f32 unk_4DC;
|
|
/* 0x04E0 */ f32 spawnPortalScale;
|
|
/* 0x04E4 */ f32 updateRate1;
|
|
/* 0x04E8 */ f32 flameRotation;
|
|
/* 0x04EC */ f32 portalRotation;
|
|
/* 0x04F0 */ f32 updateRate2;
|
|
/* 0x04F4 */ u8 twinrovaStun;
|
|
/* 0x04F8 */ f32 beamScale;
|
|
/* 0x04FC */ s16 beamShootState;
|
|
/* 0x0500 */ Vec3f groundBlastPos;
|
|
/* 0x050C */ Vec3f beamReflectionOrigin;
|
|
/* 0x0518 */ f32 beamPitch;
|
|
/* 0x051C */ f32 beamYaw;
|
|
/* 0x0520 */ f32 beamRoll;
|
|
/* 0x0524 */ Vec3s magicDir;
|
|
/* 0x052C */ f32 beamDist;
|
|
/* 0x0530 */ Vec3f unk_530;
|
|
/* 0x053C */ f32 beamReflectionPitch;
|
|
/* 0x0540 */ f32 beamReflectionYaw;
|
|
/* 0x0544 */ f32 unused_544;
|
|
/* 0x0548 */ f32 beamReflectionDist;
|
|
/* 0x054C */ Vec3f unk_54C;
|
|
/* 0x0558 */ Vec3f unk_558;
|
|
/* 0x0564 */ u8 visible;
|
|
/* 0x0565 */ u8 blastActive;
|
|
/* 0x0566 */ s16 blastType;
|
|
/* 0x0568 */ SkelAnime skelAnime;
|
|
/* 0x05AC */ ColliderCylinder collider;
|
|
/* 0x05F8 */ u8 unk_5F8;
|
|
/* 0x05F9 */ u8 unk_5F9;
|
|
/* 0x05FA */ s16 csState2;
|
|
/* 0x05FC */ s16 subCamId;
|
|
/* 0x05FE */ s16 csSfxTimer;
|
|
/* 0x0600 */ Vec3f subCamEye;
|
|
/* 0x060C */ Vec3f subCamAt;
|
|
/* 0x0618 */ char unused_618[0xC];
|
|
/* 0x0624 */ Vec3f subCamEye2;
|
|
/* 0x0630 */ Vec3f subCamAt2;
|
|
/* 0x063C */ char unused_63C[0x18];
|
|
/* 0x0654 */ Vec3f subCamEyeStep;
|
|
/* 0x0660 */ Vec3f subCamAtStep;
|
|
/* 0x066C */ Vec3f subCamEyeTarget;
|
|
/* 0x0678 */ char unused_678[0xC];
|
|
/* 0x0684 */ Vec3f subCamAtTarget;
|
|
/* 0x0690 */ char unused_690[0xC];
|
|
/* 0x069C */ f32 subCamUpdateRate;
|
|
/* 0x06A0 */ f32 subCamDistStep;
|
|
/* 0x06A4 */ f32 subCamDist;
|
|
/* 0x06A8 */ char unused_6A8[4];
|
|
/* 0x06AC */ f32 subCamYaw;
|
|
/* 0x06B0 */ f32 subCamYawStep;
|
|
} BossTw; // size = 0x06B4
|
|
|
|
#endif
|