2ship2harkinian/include/z_fireobj.h
engineer124 f92a61db27
Misc Cleanup 3 (#1268)
* begin more cleanup

* more enums

* typo

* ==

* fix go.h

* fix RaceDogInfo struct

* PR Review

* PR Suggestions

* missed one

* missed even more

* fix params

* fix number
2023-06-06 08:57:45 +10:00

78 lines
2.2 KiB
C

#ifndef Z_FIREOBJ_H
#define Z_FIREOBJ_H
#include "ultra64.h"
#include "color.h"
#include "z64collision_check.h"
#include "z64light.h"
#include "z64math.h"
struct PlayState;
struct Actor;
typedef struct FireObjInitParams {
/* 0x0 */ f32 size;
/* 0x4 */ f32 dynamicSizeStep;
/* 0x8 */ u8 state;
/* 0x9 */ u8 sizeGrowsCos2;
/* 0xA */ u8 colorsIndex;
/* 0xB */ u8 flags;
/* 0xC */ u8 lightParamsIndex;
} FireObjInitParams; // size = 0x10
typedef struct FireObjColors {
/* 0x0 */ Color_RGBA8 primColor;
/* 0x4 */ u8 lod;
/* 0x5 */ Color_RGB8 envColor;
} FireObjColors; // size = 0x8
typedef struct FireObjLightParams {
/* 0x0 */ s16 radius;
/* 0x2 */ Color_RGB8 color;
/* 0x5 */ Color_RGB8 maxColorAdj;
} FireObjLightParams; // size = 0x8
typedef struct FireObjLight {
/* 0x00 */ LightNode* light;
/* 0x04 */ LightInfo lightInfo;
/* 0x12 */ u8 lightParamsIndex;
} FireObjLight; // size = 0x14
typedef struct FireObj {
/* 0x00 */ Vec3f position;
/* 0x0C */ f32 size;
/* 0x10 */ f32 sizeInv;
/* 0x14 */ f32 xScale;
/* 0x18 */ f32 yScale;
/* 0x1C */ f32 dynamicSize;
/* 0x20 */ f32 dynamicSizeStep;
/* 0x24 */ u8 state; // @see FireState enum
/* 0x25 */ u8 sizeGrowsCos2;
/* 0x26 */ u8 timer;
/* 0x27 */ u8 colorsIndex;
/* 0x28 */ u8 flags; // @see FIRE_FLAG_
/* 0x2A */ s16 ignitionDelay;
/* 0x2C */ ColliderCylinder collision;
/* 0x78 */ FireObjLight light;
} FireObj; // size = 0x8B
typedef enum FireState {
/* 0 */ FIRE_STATE_GROWING,
/* 1 */ FIRE_STATE_SHRINKING,
/* 2 */ FIRE_STATE_FULLY_LIT,
/* 3 */ FIRE_STATE_NOT_LIT
} FireState;
#define FIRE_FLAG_WATER_EXTINGUISHABLE (1 << 0)
#define FIRE_FLAG_INTERACT_STICK (1 << 1)
void FireObj_SetPosition(FireObj* fire, Vec3f* pos);
void FireObj_Draw(struct PlayState* play, FireObj* fire);
void FireObj_Init(struct PlayState* play, FireObj* fire, FireObjInitParams* init, struct Actor* actor);
void FireObj_Destroy(struct PlayState* play, FireObj* fire);
void FireObj_SetState2(FireObj* fire, f32 dynamicSizeStep, u8 newState);
void FireObj_Update(struct PlayState* play, FireObj* fire, struct Actor* actor);
#endif