Path: blob/master/SonicMania/Objects/SPZ/Canista.h
338 views
#ifndef OBJ_CANISTA_H1#define OBJ_CANISTA_H23#include "Game.h"45typedef enum {6CANISTA_TRIGGER_STATIC,7CANISTA_TRIGGER_DETECT,8} CanistaTriggerModes;910// Object Class11struct ObjectCanista {12RSDK_OBJECT13Hitbox hitboxBadnik;14Hitbox hitboxRange;15Hitbox hitboxDetect;16Hitbox hitboxProjectile;17uint16 aniFrames;18uint16 sfxPon;19};2021// Entity Class22struct EntityCanista {23RSDK_ENTITY24StateMachine(state);25uint8 triggerMode;26Vector2 detectOffset;27Vector2 detectSize;28int32 shootOffset;29int32 shootSize;30int32 stopTimer;31int32 detectDelay;32EntityPlayer *detectedPlayer;33Vector2 startPos;34uint8 startDir;35uint8 moveDir;36uint8 timer;37Hitbox hitboxDetect;38int32 unused1;39int32 unused2;40Animator mainAnimator;41Animator tapeAnimator;42Animator cannonAnimator;43};4445// Object Struct46extern ObjectCanista *Canista;4748// Standard Entity Events49void Canista_Update(void);50void Canista_LateUpdate(void);51void Canista_StaticUpdate(void);52void Canista_Draw(void);53void Canista_Create(void *data);54void Canista_StageLoad(void);55#if GAME_INCLUDE_EDITOR56void Canista_EditorDraw(void);57void Canista_EditorLoad(void);58#endif59void Canista_Serialize(void);6061// Extra Entity Functions62void Canista_DebugSpawn(void);63void Canista_DebugDraw(void);6465void Canista_CheckPlayerBadnikCollisions(void);66void Canista_CheckOffScreen(void);6768void Canista_State_Init(void);69void Canista_State_Moving(void);70void Canista_State_Idle(void);7172void Canista_CheckPlayerProjectileCollisions(void);73void Canista_StateProjectile_Shot(void);74void Canista_StateProjectile_Fall(void);7576#endif //! OBJ_CANISTA_H777879