Path: blob/master/SonicMania/Objects/SSZ/GigaMetal.h
338 views
#ifndef OBJ_GIGAMETAL_H1#define OBJ_GIGAMETAL_H23#include "Game.h"45#if MANIA_USE_PLUS67typedef enum {8GIGAMETAL_HEAD,9GIGAMETAL_SHOULDER,10GIGAMETAL_BODY,11GIGAMETAL_COVER,12GIGAMETAL_EYE,13GIGAMETAL_ARMFRONT,14GIGAMETAL_ARMBACK,15GIGAMETAL_LASERCHARGE,16GIGAMETAL_LASEREDGE,17GIGAMETAL_LASERBEAM,18GIGAMETAL_SHARD,19} GigaMetalAniIDs;2021// Object Class22struct ObjectGigaMetal {23RSDK_OBJECT24int32 invincibleTimer;25int32 explodeTimer;26uint16 aniFrames;27uint16 sfxRoar;28uint16 sfxImpact;29uint16 sfxTarget;30uint16 sfxPimpom;31uint16 sfxCannon;32Hitbox hitboxLaser;33Hitbox hitboxHand;34Hitbox hitboxCore;35Hitbox hitboxHead;36};3738// Entity Class39struct EntityGigaMetal {40RSDK_ENTITY41StateMachine(state);42StateMachine(stateDraw);43EntityGigaMetal *body;44EntityGigaMetal *head;45EntityPhantomRuby *ruby;46EntityGigaMetal *cover;47EntityGigaMetal *shoulder;48EntityGigaMetal *frontArm;49EntityGigaMetal *backArm;50EntityMetalSonic *metalSonic;51int32 timer;52int32 health;53int32 attackTimer;54Vector2 componentPos;55Vector2 targetPos;56Animator mainAnimator;57Animator jointAnimator;58Animator armAnimator;59Animator handAnimator;60uint8 aniID;61uint8 frameID;62int32 rotationAngles[3];63int32 laserSize;64};6566// Object Struct67extern ObjectGigaMetal *GigaMetal;6869// Standard Entity Events70void GigaMetal_Update(void);71void GigaMetal_LateUpdate(void);72void GigaMetal_StaticUpdate(void);73void GigaMetal_Draw(void);74void GigaMetal_Create(void *data);75void GigaMetal_StageLoad(void);76#if GAME_INCLUDE_EDITOR77void GigaMetal_EditorDraw(void);78void GigaMetal_EditorLoad(void);79#endif80void GigaMetal_Serialize(void);8182// Extra Entity Functions83void GigaMetal_Draw_Cover(void);84void GigaMetal_Draw_Head(void);85void GigaMetal_Draw_Shoulder(void);86void GigaMetal_Draw_Arm(void);87void GigaMetal_Draw_LaserEdge(void);88void GigaMetal_Draw_Shard(void);8990void GigaMetal_HandleCameraMovement(void);9192void GigaMetal_CheckPlayerCollisions(void);93void GigaMetal_Hit(void);9495void GigaMetal_StateBody_AwaitPlayer(void);96void GigaMetal_StateBody_SetupComponents(void);97void GigaMetal_StateBody_Transformed(void);98void GigaMetal_StateBody_Roar(void);99void GigaMetal_StateBody_Marching(void);100void GigaMetal_StateBody_Destroyed(void);101102void GigaMetal_StateShoulder_Impact(void);103104void GigaMetal_StateHead_Impact(void);105106void GigaMetal_State_Laser(void);107108void GigaMetal_StateLaser_Finish(void);109110void GigaMetal_State_Shard(void);111112void GigaMetal_StateHead_PrepareRoar(void);113void GigaMetal_StateHead_Roar(void);114void GigaMetal_StateHead_FinishRoar(void);115void GigaMetal_StateHead_PrepareLaser(void);116void GigaMetal_StateHead_ChargeLaser(void);117void GigaMetal_StateHead_FiringLaser(void);118void GigaMetal_StateHead_TargetingPlayer(void);119void GigaMetal_StateHead_ReleasingBombs(void);120121void GigaMetal_HandleArmCollisions(void);122void GigaMetal_StateArm_Idle_Front(void);123void GigaMetal_StateArm_Idle_Behind(void);124void GigaMetal_StateArm_Marching(void);125#endif126127#endif //! OBJ_GIGAMETAL_H128129130