Path: blob/master/SonicMania/Objects/TMZ/CrimsonEye.h
338 views
#ifndef OBJ_CRIMSONEYE_H1#define OBJ_CRIMSONEYE_H23#include "Game.h"45typedef enum {6CRIMSONEYE_CONTAINER,7CRIMSONEYE_CORE,8CRIMSONEYE_BALL,9CRIMSONEYE_ARROW,10CRIMSONEYE_SPIKE,11CRIMSONEYE_SHOT,12} CrimsonEyeTypes;1314typedef enum {15CE_ARROW_DOWN = 1,16CE_ARROW_UP = 4,17CE_ARROW_OFF = 0xFF,18} CrimsonEyeArrowTypes;1920// Object Class21struct ObjectCrimsonEye {22RSDK_OBJECT23TABLE(int32 debrisInfo[97],24{ 24, 0, 0, -0x28000, -0x28000, 1, 0, -0x14000, -0x28000, 2, 0, 0x14000, -0x26000, 3, 0, 0x28000, -0x26000, 4, 0, -0x26000,25-0x24000, 5, 0, 0x26000, -0x24000, 6, 0, -0x26000, -0x22000, 7, 0, 0x26000, -0x22000, 8, 0, -0x24000, -0x20000, 9, 0, -0x12000,26-0x20000, 10, 0, 0x12000, -0x20000, 11, 0, 0x24000, -0x20000, 12, 0, -0x22000, -0x1E000, 13, 0, -0x11000, -0x1E000, 14, 0, 0x11000,27-0x1E000, 15, 0, 0x22000, -0x1E000, 16, 0, -0x20000, -0x1C000, 17, 0, -0x10000, -0x1C000, 18, 0, 0x10000, -0x1C000, 19, 0, 0x20000,28-0x1C000, 20, 0, -0x1A000, -0x1A000, 21, 0, -0xD000, -0x1A000, 22, 0, 0xD000, -0x1A000, 23, 0, 0x1A000, -0x1A000 });29uint8 health;30uint8 invincibilityTimer;31uint8 ballSpinAngleX;32uint8 ballSpinAngleY;33int32 ballSpinRadius;34int32 ballOffsetY;35Vector2 containerPos;36Vector2 eyePositions[3];37TABLE(int32 ballDestroyOrder[8], { 1, 5, 2, 6, 3, 7, 4, 8 });38int32 destroyedBallCount;39int32 elevatorSpeed;40int32 targetElevatorSpeed;41int32 nextTargetElevatorSpeed;42int32 elevatorGravity; // probably not this, but I really didn't have much to work with here, sorry!43int32 shotTimer;44uint8 shotsRemaining;45int32 unused;46uint16 aniFrames;47Hitbox hitboxEye;48Hitbox hitboxBall;49Hitbox hitboxOrb;50Hitbox hitboxBlock;51Hitbox hitboxElecOrb;52Hitbox hitboxUnused1;53Hitbox hitboxUnused2;54uint16 sfxHit;55uint16 sfxExplosion;56uint16 sfxHover;57uint16 sfxHover2;58uint16 sfxElevator;59uint16 sfxShot;60uint16 sfxBeep;61uint16 sfxHullClose;62uint16 sfxButton;63uint16 sfxImpact;64TileLayer *liftBackground;65TileLayer *bg2Layer;66};6768// Entity Class69struct EntityCrimsonEye {70RSDK_ENTITY71StateMachine(state);72StateMachine(stateEye);73StateMachine(stateDraw);74int32 type;75int32 timer;76int32 ballTimer;77int32 ballRadiusTimer;78Vector2 originPos;79Animator animator;80};8182// Object Struct83extern ObjectCrimsonEye *CrimsonEye;8485// Standard Entity Events86void CrimsonEye_Update(void);87void CrimsonEye_LateUpdate(void);88void CrimsonEye_StaticUpdate(void);89void CrimsonEye_Draw(void);90void CrimsonEye_Create(void *data);91void CrimsonEye_StageLoad(void);92#if GAME_INCLUDE_EDITOR93void CrimsonEye_EditorDraw(void);94void CrimsonEye_EditorLoad(void);95#endif96void CrimsonEye_Serialize(void);9798// Extra Entity Functions99void CrimsonEye_Explode(void);100void CrimsonEye_Hit(void);101102void CrimsonEye_SetupBG2Layer(void);103void CrimsonEye_DrawHook_DisableFGSilhouette(void);104void CrimsonEye_DrawHook_EnableFGSilhouette(void);105106void CrimsonEye_SetArrowDir(int32 type);107108void CrimsonEye_StateContainer_SetupArena(void);109void CrimsonEye_StateContainer_AwaitPlayer(void);110void CrimsonEye_StateContainer_StartFight(void);111void CrimsonEye_StateContainer_CoreActive(void);112void CrimsonEye_StateContainer_HandleElevator(void);113void CrimsonEye_StateContainer_Explode(void);114void CrimsonEye_StateContainer_MoveElevatorToTMZ2Entry(void);115void CrimsonEye_Draw_Container(void);116117void CrimsonEye_StateEye_EnterBalls(void);118void CrimsonEye_StateEye_SpinningBalls(void);119void CrimsonEye_StateEye_LowerBalls(void);120void CrimsonEye_StateEye_LoweredBalls(void);121void CrimsonEye_StateEye_ExtendBallAttack(void);122void CrimsonEye_StateEye_FinishExtendAttack(void);123void CrimsonEye_StateEye_RaiseBalls(void);124125void CrimsonEye_ShootShot(void);126void CrimsonEye_SetupEyePositions(void);127void CrimsonEye_DestroyBall(void);128void CrimsonEye_CheckPlayerCollisions(void);129130void CrimsonEye_StateCore_ContainerActive(void);131void CrimsonEye_StateCore_BreakOut(void);132void CrimsonEye_StateCore_BrokenOut(void);133void CrimsonEye_StateCore_Hovering(void);134void CrimsonEye_StateCore_ImpactLift(void);135void CrimsonEye_StateCore_Explode(void);136void CrimsonEye_StateCore_SpawnSignPost(void);137void CrimsonEye_Draw_Core(void);138139void CrimsonEye_CheckPlayerCollisions_Ball(void);140void CrimsonEye_StateBall_Spinning(void);141void CrimsonEye_StateBall_Destroyed(void);142143void CrimsonEye_Draw_Simple(void);144145void CrimsonEye_StateSpike_Harmful(void);146void CrimsonEye_StateSpike_Debris(void);147148void CrimsonEye_State_Shot(void);149150void CrimsonEye_State_Arrow(void);151void CrimsonEye_Draw_Arrow(void);152153#endif //! OBJ_CRIMSONEYE_H154155156