Path: blob/master/SonicMania/Objects/LRZ/Drillerdroid.h
338 views
#ifndef OBJ_DRILLERDROID_H1#define OBJ_DRILLERDROID_H23#include "Game.h"45typedef enum {6DRILLERDROID_MAIN,7DRILLERDROID_TARGET,8DRILLERDROID_UNUSED,9} DrillerdroidTypes;1011// Object Class12struct ObjectDrillerdroid {13RSDK_OBJECT14Hitbox hitboxCore;15Hitbox hitboxPistonL;16Hitbox hitboxPistonR;17Hitbox hitboxDrillL;18Hitbox hitboxDrillR;19int32 pistonPos[2];20int32 drillPos[2];21int32 pistonDelay[2];22int32 drillDelay[2];23int32 pistonMoveDir[2];24int32 drillMoveDir[2];25uint8 platformActive[5];26uint8 arenaSegment;27uint8 playerTimers[PLAYER_COUNT];28uint8 drillSfxTimer;29bool32 playingDrillSfx;30uint8 armorHealth;31uint8 jumpsRemaining;32uint8 canBreakSegment;33int32 stalactiteOffset;34EntityDrillerdroid *boss;35uint16 aniFrames;36uint16 ticFrames;37uint16 sfxHit;38uint16 sfxExplosion;39uint16 sfxDrill;40uint16 sfxImpact;41uint16 sfxJump;42uint16 sfxTargeting;43uint16 sfxSizzle;44uint16 sfxDrop;45uint16 sfxFail;46uint16 sfxClang;47};4849// Entity Class50struct EntityDrillerdroid {51RSDK_ENTITY52uint8 unused;53uint8 type;54StateMachine(state);55StateMachine(stateDraw);56Animator mainAnimator;57Animator armorAnimator;58Animator targetLockAnimator;59EntityPlayer *target;60Vector2 targetEdgeOffset;61int32 startY;62int32 timer;63uint8 invincibilityTimer;64int8 health;65};6667// Object Struct68extern ObjectDrillerdroid *Drillerdroid;6970// Standard Entity Events71void Drillerdroid_Update(void);72void Drillerdroid_LateUpdate(void);73void Drillerdroid_StaticUpdate(void);74void Drillerdroid_Draw(void);75void Drillerdroid_Create(void *data);76void Drillerdroid_StageLoad(void);77#if GAME_INCLUDE_EDITOR78void Drillerdroid_EditorDraw(void);79void Drillerdroid_EditorLoad(void);80#endif81void Drillerdroid_Serialize(void);8283// Extra Entity Functions84void Drillerdroid_Hit(void);85void Drillerdroid_CheckPlayerCollisions(void);86void Drillerdroid_Explode(void);87void Drillerdroid_SpawnDebris(int32 offset);8889void Drillerdroid_State_SetupArena(void);90void Drillerdroid_State_AwaitPlayer(void);91void Drillerdroid_State_Dropping(void);92void Drillerdroid_State_Landed(void);93void Drillerdroid_State_LandRecoil(void);94void Drillerdroid_State_DecideNextMove(void);95void Drillerdroid_State_PrepareJump(void);96void Drillerdroid_State_Jumping(void);97void Drillerdroid_State_Drilling(void);98void Drillerdroid_State_FinishDrilling(void);99void Drillerdroid_State_Overheat(void);100void Drillerdroid_State_OverheatRecoil(void);101void Drillerdroid_State_JumpTargetDelay(void);102void Drillerdroid_State_PrepareJumpTarget(void);103void Drillerdroid_State_JumpTargeting(void);104void Drillerdroid_State_DecidingDropPos(void);105void Drillerdroid_State_DropFailReset(void);106void Drillerdroid_State_OverheatRecoil_DestroyedSegment(void);107void Drillerdroid_State_Cooldown(void);108void Drillerdroid_State_ResetFromCooldown(void);109void Drillerdroid_State_Destroyed(void);110void Drillerdroid_State_Finish(void);111void Drillerdroid_State_DropSignPost(void);112113void Drillerdroid_Draw_Boss(void);114115void Drillerdroid_Draw_Simple(void);116117void Drillerdroid_State_Target(void);118void Drillerdroid_Draw_Target(void);119120#endif //! OBJ_DRILLERDROID_H121122123