Shipwright/soh/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h

69 lines
1.9 KiB
C

#ifndef Z_OBJ_SWITCH_H
#define Z_OBJ_SWITCH_H
#include "ultra64.h"
#include "global.h"
struct ObjSwitch;
typedef void (*ObjSwitchActionFunc)(struct ObjSwitch*, GlobalContext*);
typedef enum {
/* 0 */ OBJSWITCH_TYPE_FLOOR,
/* 1 */ OBJSWITCH_TYPE_FLOOR_RUSTY,
/* 2 */ OBJSWITCH_TYPE_EYE,
/* 3 */ OBJSWITCH_TYPE_CRYSTAL,
/* 4 */ OBJSWITCH_TYPE_CRYSTAL_TARGETABLE
} ObjSwitchType;
typedef enum {
/* 0 */ OBJSWITCH_SUBTYPE_FLOOR_0,
/* 1 */ OBJSWITCH_SUBTYPE_FLOOR_1,
/* 2 */ OBJSWITCH_SUBTYPE_FLOOR_2,
/* 3 */ OBJSWITCH_SUBTYPE_FLOOR_3
} ObjSwitchSubTypeFloor;
typedef enum {
/* 0 */ OBJSWITCH_SUBTYPE_EYE_0,
/* 1 */ OBJSWITCH_SUBTYPE_EYE_1
} ObjSwitchSubTypeEye;
typedef enum {
/* 0 */ OBJSWITCH_SUBTYPE_CRYSTAL_0,
/* 1 */ OBJSWITCH_SUBTYPE_CRYSTAL_1,
/* 4 */ OBJSWITCH_SUBTYPE_CRYSTAL_4 = 4
} ObjSwitchSubTypeCrystal;
typedef struct {
/* 0x00 */ ColliderJntSph col;
/* 0x20 */ ColliderJntSphElement items[2];
} ObjSwitchJntSph;
typedef struct {
/* 0x00 */ ColliderTris col;
/* 0x20 */ ColliderTrisElement items[2];
} ObjSwitchTris;
typedef struct ObjSwitch {
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ ObjSwitchActionFunc actionFunc;
/* 0x0168 */ s16 releaseTimer; // used for SUBTYPE_FLOOR_2 and SUBTYPE_FLOOR_3
/* 0x016A */ s16 disableAcTimer;
/* 0x016C */ s16 cooldownTimer;
/* 0x016E */ u8 cooldownOn;
/* 0x0170 */ s16 eyeTexIndex;
/* 0x0174 */ void* crystalSubtype1texture;
/* 0x0178 */ u8 x1TexScroll;
/* 0x0179 */ u8 y1TexScroll;
/* 0x017A */ u8 x2TexScroll;
/* 0x017B */ u8 y2TexScroll;
/* 0x017C */ Color_RGB8 crystalColor;
/* 0x017F */ u8 unk_17F; // used for different purposes between floor and eye switch
union {
/* 0x0180 */ ObjSwitchJntSph jntSph;
/* 0x0180 */ ObjSwitchTris tris;
};
} ObjSwitch; // size = 0x0258
#endif