Path: blob/master/SonicMania/Objects/CPZ/AmoebaDroid.h
338 views
#ifndef OBJ_AMOEBADROID_H1#define OBJ_AMOEBADROID_H23#include "Game.h"45#define AMOEBADROID_BLOB_COUNT (8)67typedef enum {8AMOEBADROID_BOSS,9AMOEBADROID_BLOB_BIG,10AMOEBADROID_BLOB_SMALL,11AMOEBADROID_POOLSPLASH,12AMOEBADROID_POOLSPLASH_DELAY,13} AmoebaDroidTypes;1415// Object Class16struct ObjectAmoebaDroid {17RSDK_OBJECT18TABLE(int32 debrisInfo1[17], { 4, 0, 0, -0x20000, -0x28000, 1, 0, 0x20000, -0x28000, 2, 0, -0x28000, -0x20000, 3, 0, 0x28000, -0x20000 });19TABLE(int32 debrisInfo2[13], { 3, 4, 0, 0, -0x20000, 5, 0, -0x28000, -0x20000, 5, 1, 0x28000, -0x20000 });20int32 boundsL;21int32 boundsR;22int32 boundsM;23int32 boundsT;24int32 boundsB;25uint16 sfxHit;26uint16 sfxExplosion;27uint16 sfxGather;28uint16 sfxBounce;29uint16 sfxRelease;30uint16 aniFrames;31uint16 waterFrames;32};3334// Entity Class35struct EntityAmoebaDroid {36RSDK_ENTITY37StateMachine(state);38StateMachine(stateDraw);39int32 type;40int32 timer;41int32 invincibleTimer;42int32 health;43int32 blobAngleX;44int32 blobAngleY;45int32 blobAmplitude;46int32 blobRadius;47Vector2 offsetPos;48EntityAmoebaDroid *blobs[AMOEBADROID_BLOB_COUNT];49EntityAmoebaDroid *parent;50Animator animator;51Animator attractorTopAnimator;52Animator attractorSideAnimator;53Hitbox hitbox;54};5556// Object Struct57extern ObjectAmoebaDroid *AmoebaDroid;5859// Standard Entity Events60void AmoebaDroid_Update(void);61void AmoebaDroid_LateUpdate(void);62void AmoebaDroid_StaticUpdate(void);63void AmoebaDroid_Draw(void);64void AmoebaDroid_Create(void *data);65void AmoebaDroid_StageLoad(void);66#if GAME_INCLUDE_EDITOR67void AmoebaDroid_EditorDraw(void);68void AmoebaDroid_EditorLoad(void);69#endif70void AmoebaDroid_Serialize(void);7172// Extra Entity Functions73void AmoebaDroid_HandleSmallBlobMovement(void);74void AmoebaDroid_HandleSmallBlobRelease(bool32 interact);7576// Interaction funcs77void AmoebaDroid_Hit(void);78void AmoebaDroid_Explode(void);79void AmoebaDroid_CheckHit(void);80void AmoebaDroid_CheckPlayerHit(void);8182// Draw States83void AmoebaDroid_Draw_AmoebaDroid(void);84void AmoebaDroid_Draw_BigBlob(void);8586// Boss States87void AmoebaDroid_State_SetupArena(void);88void AmoebaDroid_State_SetupWaterLevel(void);89void AmoebaDroid_State_DropIn(void);90void AmoebaDroid_State_DropIntoPool(void);91void AmoebaDroid_State_SurfaceFromPool(void);92void AmoebaDroid_State_ChooseAttack(void);93void AmoebaDroid_State_SwimLeft(void);94void AmoebaDroid_State_SwimRight(void);95void AmoebaDroid_State_ExitPool(void);96void AmoebaDroid_State_BounceAttack(void);97void AmoebaDroid_State_GatherBlobs(void);98void AmoebaDroid_State_SpinBlobs(void);99100// Blob States101void AmoebaDroid_State_BigBlob(void);102void AmoebaDroid_State_SmallBlob(void);103void AmoebaDroid_State_BigBlob_Disappear(void);104105// Splash States106void AmoebaDroid_State_PoolSplash_Delayed(void);107void AmoebaDroid_State_PoolSplash(void);108109// Boss States (Continued)110void AmoebaDroid_State_Destroyed(void);111void AmoebaDroid_State_DropSignPost(void);112113#endif //! OBJ_AMOEBADROID_H114115116