Shipwright/soh/src/overlays/actors/ovl_En_Diving_Game/z_en_diving_game.h

65 lines
2.4 KiB
C

#ifndef Z_EN_DIVING_GAME_H
#define Z_EN_DIVING_GAME_H
#include "ultra64.h"
#include "global.h"
struct EnDivingGame;
typedef void (*EnDivingGameActionFunc)(struct EnDivingGame*, GlobalContext*);
typedef struct EnDivingGame {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ Vec3s jointTable[20];
/* 0x0208 */ Vec3s morphTable[20];
/* 0x0280 */ EnDivingGameActionFunc actionFunc;
/* 0x0284 */ Vec3s vec_284;
/* 0x028A */ Vec3s vec_28A;
/* 0x0290 */ s16 unk_290; // counter that only goes up
/* 0x0292 */ s16 unk_292;
/* 0x0294 */ s16 csCameraTimer;
/* 0x0296 */ s16 unk_296; // read by ExRuppy // timer?
/* 0x0298 */ s16 eyeTimer;
/* 0x029A */ s16 spawnRuppyTimer;
/* 0x029C */ s16 phase;
/* 0x029E */ s16 eyeTexIndex;
/* 0x02A0 */ s16 subCamId;
/* 0x02A2 */ s16 unk_2A2; // 0: , 1: , 2: Tells rupees to sink in water
/* 0x02A4 */ s16 grabbedRupeesCounter;
/* 0x02A6 */ s16 rupeesLeftToThrow;
/* 0x02A8 */ s16 state; // minigameState? 0: default, 1: waiting to give the scale, 2: minigame started
/* 0x02AA */ s16 extraWinCount; // counts how many times you have beaten the minigame **after** you got the scale. ExRuppy will reset it to zero if a 500 rupee is spawned.
/* 0x02AC */ char unk_2AC[0xC]; // probably another Vec3f, but unused.
/* 0x02B8 */ Vec3f camLookAt;
/* 0x02C4 */ Vec3f camEye;
/* 0x02D0 */ Vec3f unk_2D0;
/* 0x02DC */ Vec3f unk_2DC;
/* 0x02E8 */ Vec3f unk_2E8;
/* 0x02F4 */ Vec3f unk_2F4;
/* 0x0300 */ Vec3f unk_300;
/* 0x030C */ Vec3f unk_30C;
/* 0x0318 */ f32 unk_318;
/* 0x031C */ char unk_31C; // unused
/* 0x031D */ u8 notPlayingMinigame; // flag
/* 0x031E */ u8 allRupeesThrown; // flag
/* 0x031F */ u8 unk_31F; // flag
/* 0x0320 */ char unk_320[0x4]; // unused
/* 0x0324 */ struct_80034A14_arg1 unk_324;
/* 0x034C */ ColliderCylinder collider;
} EnDivingGame; // size = 0x0398
typedef enum {
/* 0 */ ENDIVINGGAME_PHASE_ENDED,
/* 1 */ ENDIVINGGAME_PHASE_1, // Player has not received the scale.
/* 2 */ ENDIVINGGAME_PHASE_2 // Player got the scale and there are 10 rupees thrown.
} EnDivingGamePhase;
typedef enum {
/* 0 */ ENDIVINGGAME_STATE_NOTPLAYING,
/* 1 */ ENDIVINGGAME_STATE_AWARDPRIZE, // Waiting to give the scale to player.
/* 2 */ ENDIVINGGAME_STATE_PLAYING
} EnDivingGameState;
#endif