Path: blob/master/SonicMania/Objects/OOZ/MegaOctus.h
338 views
#ifndef OBJ_MEGAOCTUS_H1#define OBJ_MEGAOCTUS_H23#include "Game.h"45typedef enum {6MEGAOCTUS_BODY,7MEGAOCTUS_UNUSED1,8MEGAOCTUS_HARPOON,9MEGAOCTUS_CANNON,10MEGAOCTUS_ORB,11MEGAOCTUS_ARM,12MEGAOCTUS_LASER,13MEGAOCTUS_ORBSHOT,14MEGAOCTUS_UNUSED8,15MEGAOCTUS_LASERFIRE,16} MegaOctusTypes;1718// Object Class19struct ObjectMegaOctus {20RSDK_OBJECT21EntityMegaOctus *bossEntity;22Animator noseAnimator;23Animator boltsAnimator;24Animator eggmanAnimator;25Animator hatchBaseAnimator;26Animator hatchOpenAnimator;27int32 eggmanOffset;28int32 eggmanVelocity;29bool32 spawnHarpoon;30int32 turnPos;31TABLE(int32 turnOffsets[11], { -0x200000, -0x180000, -0x100000, -0xC0000, -0x80000, 0, 0x80000, 0xC0000, 0x100000, 0x180000, 0x200000 });32TABLE(int32 cannonHeights[4], { -0x780000, -0x800000, -0x700000, -0x510000 });33int32 orbHealth[2];34bool32 defeated;35uint16 aniFrames;36uint16 eggmanFrames;37uint16 hatchFrames;38Hitbox hitbox;39uint16 sfxBossHit;40uint16 sfxExplosion;41uint16 sfxLaser;42uint16 sfxBullet;43uint16 sfxHarpoon;44uint16 sfxSurface;45uint16 sfxLaserSplash;46};4748// Entity Class49struct EntityMegaOctus {50RSDK_ENTITY51StateMachine(state);52StateMachine(stateDraw);53uint8 type;54int32 timer;55int32 orbMoveAngle;56int32 targetPos;57int32 lastAttackHeight;58int32 shotCount;59int32 invincibilityTimer;60uint8 health;61Vector2 origin;62int32 orbID;63Entity *parent;64#if MANIA_USE_PLUS65int32 tilePlatY;66#endif67Animator animator;68Animator altAnimator;69Hitbox hitbox;70};7172// Object Struct73extern ObjectMegaOctus *MegaOctus;7475// Standard Entity Events76void MegaOctus_Update(void);77void MegaOctus_LateUpdate(void);78void MegaOctus_StaticUpdate(void);79void MegaOctus_Draw(void);80void MegaOctus_Create(void *data);81void MegaOctus_StageLoad(void);82#if GAME_INCLUDE_EDITOR83void MegaOctus_EditorDraw(void);84void MegaOctus_EditorLoad(void);85#endif86void MegaOctus_Serialize(void);8788// Extra Entity Functions89void MegaOctus_CheckPlayerCollisions_Body(void);90void MegaOctus_HandleEggmanAnim(void);91void MegaOctus_Hit(void);92void MegaOctus_Explode(void);93void MegaOctus_HandleDirectionChange(void);9495void MegaOctus_State_SetupBounds(void);96void MegaOctus_State_SetupArena(void);97void MegaOctus_State_None(void);98void MegaOctus_State_EnterMegaOctus(void);99void MegaOctus_State_OpenHatchAndLaugh(void);100void MegaOctus_State_CloseHatch(void);101void MegaOctus_State_DiveIntoOil(void);102void MegaOctus_State_SpawnWeapons(void);103void MegaOctus_State_CannonThenSpawnOrbs(void);104void MegaOctus_State_Destroyed(void);105void MegaOctus_State_Finish(void);106void MegaOctus_Draw_Body(void);107108void MegaOctus_CheckPlayerCollisions_Harpoon(void);109void MegaOctus_State_HarpoonLeft(void);110void MegaOctus_State_HarpoonRight(void);111void MegaOctus_Draw_HarpoonLeft(void);112void MegaOctus_Draw_HarpoonRight(void);113114void MegaOctus_CheckPlayerCollisions_Cannon(void);115void MegaOctus_StateCannon_RiseUp(void);116void MegaOctus_StateCannon_Idle(void);117void MegaOctus_StateCannon_FireLaser(void);118void MegaOctus_StateCannon_SinkDown(void);119void MegaOctus_Draw_Cannon(void);120121void MegaOctus_CheckPlayerCollisions_Orb(void);122void MegaOctus_StateOrb_Wait(void);123void MegaOctus_StateOrb_FireShot(void);124void MegaOctus_StateOrb_Idle(void);125void MegaOctus_StateOrb_Destroyed(void);126void MegaOctus_Draw_Orb(void);127128void MegaOctus_StateArm_WrapAroundPlatform(void);129void MegaOctus_StateArm_GrabbedPlatform(void);130void MegaOctus_StateArm_PullPlatformDown(void);131void MegaOctus_StateArm_RisePlatformUp(void);132void MegaOctus_Draw_Arm_WrapAroundPlatformBase(void);133134void MegaOctus_StateArm_GrabPlatform(void);135void MegaOctus_Draw_Arm_WrapAroundPlatformTop(void);136137void MegaOctus_State_Laser(void);138139void MegaOctus_State_LaserFire(void);140void MegaOctus_Draw_Laser(void);141142void MegaOctus_State_Shot(void);143void MegaOctus_Draw_OrbShot(void);144145#if MANIA_USE_PLUS146void MegaOctus_TilePlatformState_RiseOuttaOil(void);147#endif148149#endif //! OBJ_MEGAOCTUS_H150151152