Path: blob/master/SonicMania/Objects/SBZ/Caterkiller.h
338 views
#ifndef OBJ_CATERKILLER_H1#define OBJ_CATERKILLER_H23#include "Game.h"45#define CATERKILLER_BODY_COUNT (3)67// Object Class8struct ObjectCaterkiller {9RSDK_OBJECT10Hitbox hitbox;11uint16 aniFrames;12};1314// Entity Class15struct EntityCaterkiller {16RSDK_ENTITY17StateMachine(state);18StateMachine(stateDraw);19int32 planeFilter;20Vector2 bodyPosition[CATERKILLER_BODY_COUNT];21uint8 bodyDirection[CATERKILLER_BODY_COUNT];22uint8 bodyOffset[CATERKILLER_BODY_COUNT];23uint8 headOffset;24uint8 timer;25Vector2 startPos;26uint8 startDir;27Animator headAnimator;28Animator bodyAnimator;29};3031// Object Entity32extern ObjectCaterkiller *Caterkiller;3334// Standard Entity Events35void Caterkiller_Update(void);36void Caterkiller_LateUpdate(void);37void Caterkiller_StaticUpdate(void);38void Caterkiller_Draw(void);39void Caterkiller_Create(void *data);40void Caterkiller_StageLoad(void);41#if GAME_INCLUDE_EDITOR42void Caterkiller_EditorDraw(void);43void Caterkiller_EditorLoad(void);44#endif45void Caterkiller_Serialize(void);4647// Extra Entity Functions48void Caterkiller_DebugSpawn(void);49void Caterkiller_DebugDraw(void);5051void Caterkiller_CheckOffScreen(void);52void Caterkiller_CheckTileCollisions(void);5354void Caterkiller_Draw_Body(void);55void Caterkiller_Draw_Segment(void);5657void Caterkiller_HandlePlayerInteractions(void);58bool32 Caterkiller_CheckTileAngle(int32 x, int32 y, int32 dir);5960// Body States61void Caterkiller_State_Init(void);62void Caterkiller_State_Contract(void);63void Caterkiller_State_LiftHead(void);64void Caterkiller_State_Uncontract(void);65void Caterkiller_State_LowerHead(void);6667// Split States68void Caterkiller_StateSplit_Head(void);69void Caterkiller_StateSplit_Body(void);7071#endif //! OBJ_CATERKILLER_H727374