Path: blob/master/SonicMania/Objects/HCZ/LaundroMobile.h
338 views
#ifndef OBJ_LAUNDROMOBILE_H1#define OBJ_LAUNDROMOBILE_H23#include "Game.h"45typedef enum {6LAUNDROMOBILE_BOSS,7LAUNDROMOBILE_BOMB,8LAUNDROMOBILE_LAUNDRY,9LAUNDROMOBILE_LOOPPOINT,10LAUNDROMOBILE_BLOCK,11LAUNDROMOBILE_SPIKES,12LAUNDROMOBILE_DELAYEDSPLASH,13} LaundroMobileTypes;1415// Object Class16struct ObjectLaundroMobile {17RSDK_OBJECT18uint8 health;19uint8 invincibilityTimer;20int32 currentVelocity;21Entity *loopPoints[6];22uint8 nextLoopPoint;23uint8 playingLoopSfx;24uint8 loopSfxTimer;25uint8 attackDir;26int8 attackCount;27TABLE(int32 attackCounts[8], { 1, 2, 2, 2, 1, 2, 2, 3 });28uint8 isUnderwater;29int32 animSpeed;30uint8 rocketActive;31int32 rocketAngles[4];32Vector2 rocketPositions[4];33uint8 unused[4]; // no clue, never even touched34int32 rocketSpeeds[2];35int32 playerRadius[PLAYER_COUNT];36int32 playerAngles[PLAYER_COUNT];37uint8 travelledPaths;38uint8 useStageWrap;39EntityLaundroMobile *laundroMobile;40TABLE(int32 debrisInfo[73], { 12, 6, 0, -0x50000, -0x40000, 0, 0, 7, 0, 0x50000, -0x40000, 0, 0, 10, 0,41-0x50000, -0x40000, 0, 0, 11, 0, 0x50000, -0x40000, 0, 0, 10, 0, -0x50000, -0x40000, 0,420x200000, 11, 0, 0x50000, -0x40000, 0, 0x200000, 10, 0, -0x50000, -0x40000, 0, 0x400000, 11, 0,430x50000, -0x40000, 0, 0x400000, 8, 0, -0x50000, -0x40000, 0, 0x400000, 9, 0, 0x50000, -0x40000, 0,440x400000, 12, 0, -0x50000, -0x40000, 0, 0x400000, 13, 0, 0x50000, -0x40000, 0, 0x400000 });45uint16 aniFrames;46uint16 eggmanFrames;47Hitbox hitboxBoss;48Hitbox hitboxMissile;49Hitbox hitboxBox;50Hitbox hitboxBomb;51Hitbox innerBox;52Hitbox outerBox;53uint16 sfxHit;54uint16 sfxExplosion;55uint16 sfxButton2;56uint16 sfxFan;57uint16 sfxRoll;58uint16 sfxWash;59uint16 sfxHullClose;60uint16 sfxPush;61uint16 sfxFireball;62uint16 sfxButton;63uint16 sfxLedgeBreak;64uint16 sfxPimPom;65#if MANIA_USE_PLUS66uint16 sfxRumble;67uint16 sfxImpact;68#endif69};7071// Entity Class72struct EntityLaundroMobile {73RSDK_ENTITY74uint8 type;75StateMachine(state);76StateMachine(stateDraw);77int32 timer;78int32 startY;79Vector2 originPos;80Vector2 unusedPos; // updated in the level wrap, but never used aside from that81EntityWhirlpool *whirlpool;82Animator mainAnimator;83Animator propellerAnimator;84Animator eggmanAnimator;85Animator flameAnimator;86};8788// Object Struct89extern ObjectLaundroMobile *LaundroMobile;9091// Standard Entity Events92void LaundroMobile_Update(void);93void LaundroMobile_LateUpdate(void);94void LaundroMobile_StaticUpdate(void);95void LaundroMobile_Draw(void);96void LaundroMobile_Create(void *data);97void LaundroMobile_StageLoad(void);98#if GAME_INCLUDE_EDITOR99void LaundroMobile_EditorDraw(void);100void LaundroMobile_EditorLoad(void);101#endif102void LaundroMobile_Serialize(void);103104// Extra Entity Functions105void LaundroMobile_CheckPlayerCollisions(void);106void LaundroMobile_Explode(void);107void LaundroMobile_HandleStageWrap(void);108void LaundroMobile_HandleRocketMovement(void);109void LaundroMobile_HandleEggmanAnimations(void);110void LaundroMobile_HandleTileCollisions(void);111112// Phase 1113void LaundroMobile_StateBoss_AwaitPlayer_Phase1(void);114void LaundroMobile_StateBoss_SetupArena_Phase1(void);115void LaundroMobile_StateBoss_EnterEggman_Phase1(void);116void LaundroMobile_StateBoss_StartupPropellers(void);117void LaundroMobile_StateBoss_HandlePhase1(void);118void LaundroMobile_StateBoss_Destroyed_Phase1(void);119void LaundroMobile_StateBoss_Explode_Phase1(void);120void LaundroMobile_StateBoss_WaitForLastStageWrap(void);121122// Phase 2123void LaundroMobile_StateBoss_AwaitPlayer_Phase2(void);124void LaundroMobile_StateBoss_SetupArena_Phase2(void);125void LaundroMobile_StateBoss_EnterEggman_Phase2(void);126void LaundroMobile_StateBoss_StartupRockets(void);127void LaundroMobile_StateBoss_SpeedUpRockets(void);128void LaundroMobile_StateBoss_RiseUpToAttack(void);129void LaundroMobile_StateBoss_Attacking(void);130void LaundroMobile_StateBoss_ReturnToLaundry(void);131void LaundroMobile_StateBoss_PrepareWhirlpool(void);132void LaundroMobile_StateBoss_StartupWhirlpool(void);133void LaundroMobile_StateBoss_WhirlpoolActive(void);134void LaundroMobile_StateBoss_PrepareRockets(void);135void LaundroMobile_StateBoss_Destroyed_Phase2(void);136void LaundroMobile_StateBoss_Explode_Phase2(void);137138#if MANIA_USE_PLUS139void LaundroMobile_StageFinish_Wait(void);140141// HCZ2 Outro142void LaundroMobile_StateOutro_StartCutscene(void);143void LaundroMobile_StateOutro_Rumble(void);144void LaundroMobile_StateOutro_WaterGush(void);145void LaundroMobile_StateOutro_ExitHCZ(void);146#endif147148void LaundroMobile_Draw_Boss(void);149void LaundroMobile_Draw_Boss_Destroyed(void);150151void LaundroMobile_StateBomb_Spawner(void);152void LaundroMobile_StateBomb_Bomb_Idle(void);153void LaundroMobile_StateBomb_Bomb_Activated(void);154155void LaundroMobile_Draw_Simple(void);156157void LaundroMobile_StateBlock_Spawner(void);158void LaundroMobile_StateBlock_Block(void);159160void LaundroMobile_State_Laundry(void);161void LaundroMobile_Draw_Laundry(void);162163void LaundroMobile_State_DelayedSplash(void);164165#endif //! OBJ_LAUNDROMOBILE_H166167168