Shipwright/soh/src/overlays/actors/ovl_En_Fr/z_en_fr.h

84 lines
3.5 KiB
C

#ifndef Z_EN_FR_H
#define Z_EN_FR_H
#include "ultra64.h"
#include "global.h"
struct EnFr;
typedef void (*EnFrActionFunc)(struct EnFr*, GlobalContext*);
typedef void (*EnFrBlinkFunc)(struct EnFr*);
typedef enum {
/* 00 */ FROG_YELLOW, // Middle
/* 01 */ FROG_BLUE, // Front Left
/* 02 */ FROG_RED, // Front Right
/* 03 */ FROG_PURPLE, // Back Left
/* 04 */ FROG_WHITE // Back Right
} FrogType;
typedef enum {
/* 00 */ FROG_ZL,
/* 01 */ FROG_EPONA,
/* 02 */ FROG_SARIA,
/* 03 */ FROG_SUNS,
/* 04 */ FROG_SOT,
/* 05 */ FROG_STORMS,
/* 06 */ FROG_CHOIR_SONG,
/* 07 */ FROG_NO_SONG
} FrogSongType;
typedef struct {
f32 xzDist;
f32 yaw;
f32 yDist;
} LogSpotToFromWater;
typedef struct EnFr {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime; // Frog Skeleton
/* 0x0190 */ Vec3s jointTable[24];
/* 0x0220 */ Vec3s morphTable[24];
/* 0x02B0 */ SkelAnime skelAnimeButterfly; // Butterfly Skeleton above Frog during Frog Song
/* 0x02F4 */ Vec3s jointTableButterfly[8];
/* 0x0324 */ Vec3s morphTableButterfly[8];
/* 0x0354 */ EnFrActionFunc actionFunc;
/* 0x0358 */ LightNode* lightNode; // Frogs light up during the Frog Song, specifically the frog with the next note.
/* 0x035C */ LightInfo lightInfo;
/* 0x036A */ s8 objBankIndex;
/* 0x036C */ s32 jumpCounter; // cyclic clock used to time celebratory frog jumps every 4 frames when child song is played.
/* 0x0370 */ s32 blinkTimer; // blinking timer
/* 0x0374 */ EnFrBlinkFunc blinkFunc; // unique case of using a function pointer for blinking
/* 0x0378 */ u8 eyeTexIndex; // index for blinking graphics
/* 0x0379 */ u8 isJumpingUp; // Conditional for jumping up from the log back onto the log
/* 0x037A */ u8 isBelowWaterSurfaceCurrent; // Used for diving effects
/* 0x037B */ u8 isBelowWaterSurfacePrevious;
/* 0x037C */ u8 isDeactivating; // Related to debugging (osSyncPrintf)
/* 0x037D */ u8 isActive; // Each Frog grows when their specific song is played.
/* 0x037E */ u8 growingScaleIndex; // Target Scale Level 0-3 while growing (3 highest smooth)
/* 0x037F */ u8 isGrowing; // While growing, the frog will switch between its larger size and its original size every frame
/* 0x0380 */ u8 ocarinaNoteIndex; // Related to unk_381
/* 0x0381 */ u8 ocarinaNote; // Ocarina Note to Play for Frogs 2
/* 0x0382 */ u8 songIndex; // Song index 1-7 (6 songs + custom HP Song): 5 = sos, 6 = all songs
/* 0x0383 */ u8 isJumpingToFrogSong; // Conditional:
/* 0x0384 */ char unk_384[0x02];
/* 0x0386 */ s16 frogSongTimer; // timer #2 for frogs 2 HP
/* 0x0388 */ s32 reward; // Prize for completing a song
/* 0x038C */ Vec3f posLogSpot; // Where the frog goes when activated
/* 0x0398 */ f32 xzDistToLogSpot; // z position or axis
/* 0x039C */ f32 unusedFloat; // Unused float, only set to zero.
/* 0x03A0 */ f32 scale; //scale
/* 0x03A4 */ Actor* unusedButterflyActor; // unused pointer to Actor. Likely intended for butterfly
/* 0x03A8 */ u8 isButterflyDrawn; // isButterflyDrawn
/* 0x03AA */ s16 xyAngleButterfly; // Butterfly Travels along random angles in the x-y plane
/* 0x03AC */ Vec3f posButterfly; // Position/Coordinates of the Butterfly
/* 0x03B8 */ Vec3f posButterflyLight; // Used in Lights_PointNoGlowSetInfo()
} EnFr; // size = 0x03C4
typedef struct {
u8 flags;
EnFr* frogs[5];
} EnFrPointers;
#endif