Path: blob/master/SonicMania/Objects/MSZ/Rattlekiller.h
338 views
#ifndef OBJ_RATTLEKILLER_H1#define OBJ_RATTLEKILLER_H23#include "Game.h"45#define RATTLEKILLER_SEGMENT_COUNT (10)67typedef enum {8RATTLEKILLER_IDLE,9RATTLEKILLER_TWIST_HORIZONTAL,10RATTLEKILLER_TWIST_DOWN,11RATTLEKILLER_TWIST_UP,12RATTLEKILLER_PLAYERDETECTED,13RATTLEKILLER_STRETCHBODY,14RATTLEKILLER_EXTEND,15RATTLEKILLER_RETRACT,16} RattlekillerBodyStates;1718// Object Class19struct ObjectRattlekiller {20RSDK_OBJECT21Hitbox hitboxSegment;22uint16 sfxRocketJet;23uint16 aniFrames;24};2526// Entity Class27struct EntityRattlekiller {28RSDK_ENTITY29StateMachine(state); // Unused30StateMachine(stateDraw); // Unused31int32 timer;32int32 bodyStates[RATTLEKILLER_SEGMENT_COUNT];33Vector2 bodyPositions[RATTLEKILLER_SEGMENT_COUNT];34Vector2 bodyOriginPos[RATTLEKILLER_SEGMENT_COUNT];35Vector2 bodyVelocities[RATTLEKILLER_SEGMENT_COUNT];36int32 bodyAngles[RATTLEKILLER_SEGMENT_COUNT];37int32 bodyDepth[RATTLEKILLER_SEGMENT_COUNT];38int32 bodyDelays[RATTLEKILLER_SEGMENT_COUNT];39int32 bodyIDs[RATTLEKILLER_SEGMENT_COUNT];40Animator *bodyAnimators[RATTLEKILLER_SEGMENT_COUNT];41Vector2 topBounds;42Vector2 bottomBounds;43Vector2 targetPos;44int32 length;45Animator headAnimator;46Animator bodyAnimator;47Animator tailAnimator;48};4950// Object Struct51extern ObjectRattlekiller *Rattlekiller;5253// Standard Entity Events54void Rattlekiller_Update(void);55void Rattlekiller_LateUpdate(void);56void Rattlekiller_StaticUpdate(void);57void Rattlekiller_Draw(void);58void Rattlekiller_Create(void *data);59void Rattlekiller_StageLoad(void);60#if GAME_INCLUDE_EDITOR61void Rattlekiller_EditorDraw(void);62void Rattlekiller_EditorLoad(void);63#endif64void Rattlekiller_Serialize(void);6566// Extra Entity Functions67void Rattlekiller_DebugSpawn(void);68void Rattlekiller_DebugDraw(void);6970void Rattlekiller_HandleSorting(void);7172#endif //! OBJ_RATTLEKILLER_H737475