Path: blob/master/SonicMania/Objects/LRZ/DrillerdroidO.h
338 views
#ifndef OBJ_DRILLERDROIDO_H1#define OBJ_DRILLERDROIDO_H23#include "Game.h"45typedef enum {6DRILLERDROIDO_MAIN,7DRILLERDROIDO_FIREBALLEMITTER,8DRILLERDROIDO_TARGET,9DRILLERDROIDO_UNUSED1,10DRILLERDROIDO_UNUSED2,11} DrillerdroidOTypes;1213// Object Class14struct ObjectDrillerdroidO {15RSDK_OBJECT16Hitbox hitboxCore;17Hitbox hitboxPistonL;18Hitbox hitboxPistonR;19Hitbox hitboxDrillL;20Hitbox hitboxDrillR;21Hitbox hitboxLandPosSegmentBreak;22Hitbox hitboxLandPosR;23Hitbox hitboxLandPosL;24Hitbox hitboxEmitterRange;25int32 pistonPos[2];26int32 drillPos[2];27int32 pistonDelay[2];28int32 drillDelay[2];29int32 pistonMoveDir[2];30int32 drillMoveDir[2];31uint8 drillSfxTimer;32bool32 playingDrillSfx;33uint8 canBreakSegment;34int32 childSlotStart;35uint8 currentLevel;36bool32 emitFireballs;37EntityDrillerdroidO *boss;38uint16 aniFrames;39uint16 ticFrames;40uint16 sfxHit;41uint16 sfxExplosion;42uint16 sfxDrill;43uint16 sfxImpact;44uint16 sfxJump;45uint16 sfxTargeting;46uint16 sfxSizzle;47};4849// Entity Class50struct EntityDrillerdroidO {51RSDK_ENTITY52uint8 type;53StateMachine(state);54StateMachine(stateDraw);55Animator mainAnimator;56Animator armorAnimator;57Animator targetLockAnimator;58EntityPlayer *target;59Vector2 targetEdgeOffset;60int32 startY;61int32 timer;62uint8 invincibilityTimer;63int8 health;64};6566// Object Struct67extern ObjectDrillerdroidO *DrillerdroidO;6869// Standard Entity Events70void DrillerdroidO_Update(void);71void DrillerdroidO_LateUpdate(void);72void DrillerdroidO_StaticUpdate(void);73void DrillerdroidO_Draw(void);74void DrillerdroidO_Create(void *data);75void DrillerdroidO_StageLoad(void);76#if GAME_INCLUDE_EDITOR77void DrillerdroidO_EditorDraw(void);78void DrillerdroidO_EditorLoad(void);79#endif80void DrillerdroidO_Serialize(void);8182// Extra Entity Functions83void DrillerdroidO_CheckPlayerCollisions(void);84void DrillerdroidO_Explode(void);85void DrillerdroidO_SpawnDebris(int32 offset);8687void DrillerdroidO_State_SetupArena(void);88void DrillerdroidO_State_AwaitPlayer(void);89void DrillerdroidO_State_Dropping(void);90void DrillerdroidO_State_Landed(void);91void DrillerdroidO_State_LandRecoil(void);92void DrillerdroidO_State_BeginDrilling(void);93void DrillerdroidO_State_Drilling(void);94void DrillerdroidO_State_FinishDrilling(void);95void DrillerdroidO_State_Overheat(void);96void DrillerdroidO_State_OverheatRecoil(void);97void DrillerdroidO_State_JumpTargetDelay(void);98void DrillerdroidO_State_PrepareJumpTarget(void);99void DrillerdroidO_State_JumpTargeting(void);100void DrillerdroidO_State_DestroyRockPiles(void);101void DrillerdroidO_State_NextLevelDelay(void);102void DrillerdroidO_State_MoveToNextLevel(void);103void DrillerdroidO_State_DecidingDropPos(void);104void DrillerdroidO_State_OverheatRecoil_DestroyedSegment(void);105void DrillerdroidO_State_Cooldown(void);106void DrillerdroidO_State_ResetFromCooldown(void);107void DrillerdroidO_State_Destroyed(void);108void DrillerdroidO_State_Finish(void);109110void DrillerdroidO_Draw_Boss(void);111void DrillerdroidO_Draw_Simple(void);112113void DrillerdroidO_State_Target(void);114void DrillerdroidO_Draw_Target(void);115116void DrillerdroidO_State_FireballEmitter(void);117void DrillerdroidO_Draw_FireballEmitter(void);118119#endif //! OBJ_DRILLERDROIDO_H120121122