Shipwright/soh/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h

55 lines
1.6 KiB
C

#ifndef Z_OBJ_OSHIHIKI_H
#define Z_OBJ_OSHIHIKI_H
#include "ultra64.h"
#include "global.h"
struct ObjOshihiki;
typedef enum {
/* 0 */ PUSHBLOCK_SMALL_START_ON,
/* 1 */ PUSHBLOCK_MEDIUM_START_ON,
/* 2 */ PUSHBLOCK_LARGE_START_ON,
/* 3 */ PUSHBLOCK_HUGE_START_ON,
/* 4 */ PUSHBLOCK_SMALL_START_OFF,
/* 5 */ PUSHBLOCK_MEDIUM_START_OFF,
/* 6 */ PUSHBLOCK_LARGE_START_OFF,
/* 7 */ PUSHBLOCK_HUGE_START_OFF
} PushBlockType;
#define PUSHBLOCK_ON_SCENE (1 << 0)
#define PUSHBLOCK_SETUP_ON_SCENE (1 << 1)
#define PUSHBLOCK_ON_ACTOR (1 << 2)
#define PUSHBLOCK_SETUP_ON_ACTOR (1 << 3)
#define PUSHBLOCK_PUSH (1 << 4)
#define PUSHBLOCK_SETUP_PUSH (1 << 5)
#define PUSHBLOCK_FALL (1 << 6)
#define PUSHBLOCK_SETUP_FALL (1 << 7)
#define PUSHBLOCK_MOVE_UNDER (1 << 8)
typedef void (*ObjOshihikiActionFunc)(struct ObjOshihiki*, GlobalContext*);
typedef struct ObjOshihiki {
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ ObjOshihikiActionFunc actionFunc;
/* 0x0168 */ u16 stateFlags;
/* 0x016A */ s16 timer;
/* 0x016C */ f32 yawSin;
/* 0x0170 */ f32 yawCos;
/* 0x0174 */ f32 pushSpeed;
/* 0x0178 */ f32 pushDist;
/* 0x017C */ f32 direction;
/* 0x0180 */ s32 floorBgIds[5];
/* 0x0194 */ CollisionPoly* floorPolys[5];
/* 0x01A8 */ f32 floorHeights[5];
/* 0x01BC */ s16 highestFloor;
/* 0x01BE */ u8 cantMove;
/* 0x01C0 */ struct ObjOshihiki* blockUnder;
/* 0x01C4 */ f32 underDistX;
/* 0x01C8 */ f32 underDistZ;
/* 0x01CC */ void* texture;
/* 0x01D0 */ Color_RGB8 color;
} ObjOshihiki; // size = 0x01D4
#endif