Path: blob/master/SonicMania/Objects/SPZ/HeavyGunner.h
338 views
#ifndef OBJ_HEAVYGUNNER_H1#define OBJ_HEAVYGUNNER_H23#include "Game.h"45typedef enum {6HEAVYGUNNER_HBH,7HEAVYGUNNER_1,8HEAVYGUNNER_HELI,9HEAVYGUNNER_EGGROBO,10HEAVYGUNNER_GUN,11HEAVYGUNNER_MISSILE_F,12HEAVYGUNNER_MISSILE,13HEAVYGUNNER_ESCAPE_HBH,14} HeavyGunnerTypes;1516// Object Class17struct ObjectHeavyGunner {18RSDK_OBJECT19int32 boundsL;20int32 boundsR;21int32 boundsT;22int32 boundsB;23bool32 stageWrapActive;24Hitbox hitboxMissileF;25Hitbox hitboxMissile;26uint16 aniFrames;27uint16 sfxFire;28uint16 sfxJet;29uint16 sfxHit;30uint16 sfxDestroy;31uint16 sfxExplosion2;32uint16 sfxExplosion3;33uint16 sfxCharge;34uint16 sfxThrow;35uint16 sfxFlyIn;36uint16 sfxWooshIn;37uint16 sfxWooshOut;38uint16 sfxFlip;39uint16 sfxRumble;40int32 unused1;41int32 unused2;42int32 unused3;43int32 unused4;44};4546// Entity Class47struct EntityHeavyGunner {48RSDK_ENTITY49StateMachine(state);50StateMachine(stateDraw);51EntityHeavyGunner *parent;52int32 timer;53int32 flyInTimer;54int32 parentOffset;55int32 targetScale;56int32 nextRoboID;57int32 type;58int32 missileID;59bool32 defeated; // prolly unused, this is set only after the entity is destroyed so...60Animator mainAnimator;61Animator pilotAnimator;62Animator frontAnimator;63Animator tBladeAnimator;64Animator rBladeAnimator;65Animator beaconAnimator;66Animator feetAnimator;67Animator feet2Animator;68Animator gunnerAnimator;69Animator armAnimator;70Animator exhaustAnimator;71};7273// Object Struct74extern ObjectHeavyGunner *HeavyGunner;7576// Standard Entity Events77void HeavyGunner_Update(void);78void HeavyGunner_LateUpdate(void);79void HeavyGunner_StaticUpdate(void);80void HeavyGunner_Draw(void);81void HeavyGunner_Create(void *data);82void HeavyGunner_StageLoad(void);83#if GAME_INCLUDE_EDITOR84void HeavyGunner_EditorDraw(void);85void HeavyGunner_EditorLoad(void);86#endif87void HeavyGunner_Serialize(void);8889// Extra Entity Functions90bool32 HeavyGunner_SfxCheck_HeliProp(void);91bool32 HeavyGunner_SfxCheck_HBHSurprise(void);92bool32 HeavyGunner_SfxCheck_RocketBurn(void);9394void HeavyGunner_HandleBGWrap(int32 multiplier);95void HeavyGunner_DestroyAllMissiles(void);9697void HeavyGunner_Draw_Heli(void);98void HeavyGunner_Draw_EggRobo(void);99void HeavyGunner_Draw_Missile(void);100void HeavyGunner_Draw_Simple(void);101void HeavyGunner_Draw_FadeOut(void);102103void HeavyGunner_StateManager_SetupArena(void);104void HeavyGunner_StateManager_HandleStageWrap(void);105void HeavyGunner_StateManager_HandlePathChange(void);106107void HeavyGunner_Input_LockedP1(void);108void HeavyGunner_Input_LockedP2(void);109void HeavyGunner_Input_LockedP2_AI(void);110111void HeavyGunner_StateEggRobo_Patrolling(void);112void HeavyGunner_StateEggRobo_FlyIn(void);113void HeavyGunner_StateEggRobo_ThrowGun(void);114void HeavyGunner_StateEggRobo_ThrownGun(void);115116void HeavyGunner_StateGun_Thrown(void);117void HeavyGunner_StateGun_Grabbed(void);118119void HeavyGunner_StateMissile_Launched(void);120void HeavyGunner_StateMissile_BlastOff(void);121void HeavyGunner_StateMissile_FindFloor(void);122void HeavyGunner_StateMissile_AttackPlayer(void);123void HeavyGunner_StateMissile_Malfunction(void);124void HeavyGunner_StateMissile_ReturnToSender(void);125void HeavyGunner_StateMissile_AttackRobo(void);126void HeavyGunner_StateMissile_AttackGunner(void);127128void HeavyGunner_StateHeli_AwaitPlayer(void);129void HeavyGunner_StateHeli_WooshIn(void);130void HeavyGunner_StateHeli_FindFloor(void);131void HeavyGunner_StateHeli_HandleAttacks(void);132void HeavyGunner_StateHeli_ShotsFired(void);133void HeavyGunner_StateHeli_EscapeMissile(void);134void HeavyGunner_StateHeli_IncomingMissile(void);135void HeavyGunner_StateHeli_Exploding(void);136void HeavyGunner_StateHeli_ExplodeAndFall(void);137138void HeavyGunner_StateEscapeHBH_Hover(void);139void HeavyGunner_StateEscapeHBH_FlyAway(void);140141void HeavyGunner_StateHeli_FadeOutDestroy(void);142143#endif //! OBJ_HEAVYGUNNER_H144145146