Path: blob/master/SonicMania/Objects/LRZ/Flamethrower.h
338 views
#ifndef OBJ_FLAMETHROWER_H1#define OBJ_FLAMETHROWER_H23#include "Game.h"45typedef enum {6FLAMETHROWER_ORIENTATION_RIGHT,7FLAMETHROWER_ORIENTATION_DOWN,8FLAMETHROWER_ORIENTATION_LEFT,9FLAMETHROWER_ORIENTATION_UP10} FlamethrowerOrientations;1112typedef enum {13FLAMETHROWER_MODE_EMITTER,14FLAMETHROWER_MODE_SPRINKLER,15} FlamethrowerModes;1617// Object Class18struct ObjectFlamethrower {19RSDK_OBJECT20uint16 aniFrames;21uint16 sfxFlame;22bool32 playingFlameSfx;23Hitbox hitboxMouthH;24Hitbox hitboxMouthV;25Hitbox hitboxSmallFireball;26Hitbox hitboxMediumFireball;27Hitbox hitboxLargeFireball;28};2930// Entity Class31struct EntityFlamethrower {32RSDK_ENTITY33StateMachine(state);34uint8 orientation;35uint8 mode;36int32 maxDist;37uint16 spread;38uint16 interval;39uint16 intervalOffset;40uint16 duration;41uint16 timer;42uint16 flameAngle;43int32 lastYVelocity;44int32 currentDist;45EntityFlamethrower *parent;46Vector2 origin;47Vector2 lastPos;48Animator animator;49};5051// Object Struct52extern ObjectFlamethrower *Flamethrower;5354// Standard Entity Events55void Flamethrower_Update(void);56void Flamethrower_LateUpdate(void);57void Flamethrower_StaticUpdate(void);58void Flamethrower_Draw(void);59void Flamethrower_Create(void *data);60void Flamethrower_StageLoad(void);61#if GAME_INCLUDE_EDITOR62void Flamethrower_EditorDraw(void);63void Flamethrower_EditorLoad(void);64#endif65void Flamethrower_Serialize(void);6667// Extra Entity Functions68void Flamethrower_SetupOrientation(uint8 orientation);69Hitbox Flamethrower_GetHitbox(void);70void Flamethrower_CheckOffScreen(void);71void Flamethrower_HandleAnimations(void);72void Flamethrower_HandleAngles(void);73void Flamethrower_HandleTileCollisions(void);74void Flamethrower_CheckOutOfBounds(uint8 orientation);7576void Flamethrower_CheckFlameCollisions(void);77void Flamethrower_CheckMouthCollisions(void);7879void Flamethrower_State_Init(void);80void Flamethrower_State_AwaitInterval(void);81void Flamethrower_State_EmittingFlames(void);8283void Flamethrower_State_SetupFireball(void);84void Flamethrower_State_Fireball(void);8586#endif //! OBJ_FLAMETHROWER_H878889