Path: blob/master/SonicMania/Objects/ERZ/PhantomGunner.h
338 views
#ifndef OBJ_PHANTOMGUNNER_H1#define OBJ_PHANTOMGUNNER_H23#include "Game.h"45typedef enum {6PHANTOMGUNNER_BOSS,7PHANTOMGUNNER_LAUNCHROCKET,8PHANTOMGUNNER_MORTAR,9PHANTOMGUNNER_NAPALM,10PHANTOMGUNNER_DUD,11PHANTOMGUNNER_NAPALM_EXPLOSION,12PHANTOMGUNNER_MORTAR_EXPLOSION,13} PhantomGunnerTypes;1415// Object Class16struct ObjectPhantomGunner {17RSDK_OBJECT18// Technically a "Vector2" but since that can't be saved in static objects, it's an int array19TABLE(int32 rocketOffsets[0x20], { -22, -24, -10, -24, -22, -31, -10, -31, -22, -38, -10, -38, -22, -45, -10, -45,2010, -24, 22, -24, 10, -31, 22, -31, 10, -38, 22, -38, 10, -45, 22, -45 });21int32 launchedRocketID;22Hitbox hitboxNapalm;23Hitbox hitboxMortar;24Hitbox hitboxDud;25uint16 aniFrames;26uint16 sfxCannonFire;27};2829// Entity Class30struct EntityPhantomGunner {31RSDK_ENTITY32StateMachine(state);33StateMachine(stateDraw);34Vector2 originPos;35Vector2 startPos;36int32 type;37EntityPhantomGunner *parent;38int32 timer;39int32 invincibilityTimer;40int32 unused;41int32 fireAnimTimer;42int32 rocketLaunchCount;43int32 rocketOffsetID;44int32 napalmExplosionPos;45Vector2 screenPos;46Animator mainAnimator;47Animator fxAnimator;48Animator tailAnimator;49Animator parachuteAnimator;50Animator unusedAnimator;51};5253// Object Struct54extern ObjectPhantomGunner *PhantomGunner;5556// Standard Entity Events57void PhantomGunner_Update(void);58void PhantomGunner_LateUpdate(void);59void PhantomGunner_StaticUpdate(void);60void PhantomGunner_Draw(void);61void PhantomGunner_Create(void *data);62void PhantomGunner_StageLoad(void);63#if GAME_INCLUDE_EDITOR64void PhantomGunner_EditorDraw(void);65void PhantomGunner_EditorLoad(void);66#endif67void PhantomGunner_Serialize(void);6869// Extra Entity Functions70void PhantomGunner_HandleDudExhaust(void);71void PhantomGunner_HandleMalfunctionDudExhaust(void);72void PhantomGunner_SpawnDust(void);73void PhantomGunner_HandleRotations(int32 angle);74void PhantomGunner_CheckPlayerMissileCollisions(void);75void PhantomGunner_CheckPlayerExplosionCollisions(void);76void PhantomGunner_Hit(EntityPhantomGunner *entity);7778void PhantomGunner_Draw_Gunner(void);79void PhantomGunner_Draw_RocketLaunch(void);80void PhantomGunner_Draw_Rocket(void);8182void PhantomGunner_State_ResetState(void);83void PhantomGunner_State_Idle(void);84void PhantomGunner_State_LaunchRockets(void);8586void PhantomGunner_State_LaunchedRocket(void);87void PhantomGunner_State_Mortar(void);88void PhantomGunner_State_Napalm(void);89void PhantomGunner_State_Dud_Active(void);90void PhantomGunner_State_Dud_HitByPlayer(void);91void PhantomGunner_State_Dud_Malfunction(void);92void PhantomGunner_State_Dud_Explode(void);9394void PhantomGunner_State_NapalmExplosion(void);95void PhantomGunner_State_MortarExplosion(void);9697#endif //! OBJ_PHANTOMGUNNER_H9899100