Path: blob/master/SonicMania/Objects/GHZ/DDWrecker.h
338 views
#ifndef OBJ_DDWRECKER_H1#define OBJ_DDWRECKER_H23#include "Game.h"45typedef enum {6DDWRECKER_SETUP,7DDWRECKER_BALL1,8DDWRECKER_BALL2,9DDWRECKER_CHAIN,10DDWRECKER_CORE,11} DDWreckerTypes;1213// Object Class14struct ObjectDDWrecker {15RSDK_OBJECT16int32 camBoundL;17int32 camBoundR;18int32 bossBoundL;19int32 bossBoundR;20int32 bossBoundT;21int32 attackVelocities[3];22TABLE(int32 spinOffset[6], { -64, -32, -16, 16, 32, 64 });23TABLE(int32 swingOffset[6], { 32, 48, 64, 80, 96, 128 });24uint16 aniFrames;25uint16 sfxBossHit;26uint16 sfxExplosion;27uint16 sfxDrop;28uint16 sfxImpact;29uint16 sfxAssemble;30uint16 sfxRotate;31uint16 sfxSharp;32};3334// Entity Class35struct EntityDDWrecker {36RSDK_ENTITY37StateMachine(state);38StateMachine(stateBall);39Vector2 originPos;40int32 type;41int32 timer;42int32 invincibilityTimer;43int32 health;44bool32 swapBalls;45int32 angleVel;46int32 spinTimer;47int32 spinAngle;48int32 radius;49uint16 siblingSlots[6];50EntityDDWrecker *bodyA;51EntityDDWrecker *bodyB;52int32 unused1;53int32 unusedAngle; // updated but never used..54int32 unused2;55int32 unused3;56int32 blendAmount;57Animator animator;58Hitbox hitbox;59};6061// Object Struct62extern ObjectDDWrecker *DDWrecker;6364// Standard Entity Events65void DDWrecker_Update(void);66void DDWrecker_LateUpdate(void);67void DDWrecker_StaticUpdate(void);68void DDWrecker_Draw(void);69void DDWrecker_Create(void *data);70void DDWrecker_StageLoad(void);71#if GAME_INCLUDE_EDITOR72void DDWrecker_EditorDraw(void);73void DDWrecker_EditorLoad(void);74#endif75void DDWrecker_Serialize(void);7677// Extra Entity Functions78void DDWrecker_State_SetupArena(void);79void DDWrecker_State_InitChildren(void);80void DDWrecker_State_Assemble(void);81void DDWrecker_State_EnterWreckers(void);82void DDWrecker_State_AttackDelay(void);83void DDWrecker_State_SwingRight(void);84void DDWrecker_State_SwingLeft(void);85void DDWrecker_State_SwingMoveToCenter(void);86void DDWrecker_State_HandleSpinning(void);87void DDWrecker_State_SwingSlowDown(void);88void DDWrecker_State_PrepareBounceAttack(void);89void DDWrecker_State_SignalBounceAttackStart(void);90void DDWrecker_State_HandleBounceAttack(void);91void DDWrecker_State_EndBounceAttack(void);9293void DDWrecker_StateBall_Vulnerable(void);94void DDWrecker_StateBall_Spiked(void);95void DDWrecker_StateBall_Partnerless(void);9697void DDWrecker_Hit(void);98void DDWrecker_Spin(void);99void DDWrecker_Swing(void);100void DDWrecker_Explode(void);101102void DDWrecker_State_Debris(void);103void DDWrecker_State_Die(void);104void DDWrecker_State_SpawnSignpost(void);105106#endif //! OBJ_DDWRECKER_H107108109