Shipwright/soh/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.h
M4xw 39cc86c260 git subrepo clone https://github.com/HarbourMasters/soh.git
subrepo:
  subdir:   "soh"
  merged:   "ba904bbd0"
upstream:
  origin:   "https://github.com/HarbourMasters/soh.git"
  branch:   "master"
  commit:   "ba904bbd0"
git-subrepo:
  version:  "0.4.1"
  origin:   "???"
  commit:   "???"
2022-03-22 02:51:23 +01:00

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