Path: blob/master/SonicMania/Objects/GHZ/DERobot.h
338 views
#ifndef OBJ_DEROBOT_H1#define OBJ_DEROBOT_H23#include "Game.h"45typedef enum {6DEROBOT_BODY,7DEROBOT_HEAD,8DEROBOT_ARM,9DEROBOT_LEG,10DEROBOT_SPIKES,11DEROBOT_ARM_THREAD,12DEROBOT_TARGET_EDGE,13DEROBOT_TARGET_CENTER,14DEROBOT_TARGET_LOCK,15DEROBOT_BOMB,16DEROBOT_BODY_CUTSCENE,17} DERobotAniLists;1819// Object Class20struct ObjectDERobot {21RSDK_OBJECT22uint16 aniFrames;23Hitbox hitboxHand;24Hitbox hitboxBody;25uint16 unused1;26uint16 unused2;27uint16 unused3;28uint16 unused4;29uint16 sfxHit;30uint16 sfxExplosion;31uint16 sfxTargeting;32uint16 sfxImpact;33uint16 sfxLedgeBreak;34uint16 sfxBuzzsaw;35uint16 sfxDrop;36uint16 sfxButton2;37uint16 sfxHullClose;38};3940// Entity Class41struct EntityDERobot {42RSDK_ENTITY43StateMachine(state);44StateMachine(stateDraw);45int32 unused1;46int32 unused2;47int32 unused3;48int32 unused4;49Entity *parent;50EntityDERobot *head;51EntityDERobot *shoulderFront;52EntityEggman *eggman;53EntityDERobot *legs[6]; // knee, leg, foot (for back, then for front)54EntityDERobot *arms[4]; // arm, hand, (for back, then for front)55int32 movingSide;56int32 unused5;57int32 angleVel;58int32 angleInc;59Vector2 offset;60int32 timer;61int32 invincibilityTimer;62int32 health;63int32 armExtend;64int32 destroyedTerrainX;65int32 kneeAngleVel;66int32 angleVelStart;67int32 angleMaxInc;68Hitbox hitbox;69Animator mainAnimator;70Animator altAnimator;71Animator armAnimator;72int32 aniID;73int32 frameID;74};7576// Object Struct77extern ObjectDERobot *DERobot;7879// Standard Entity Events80void DERobot_Update(void);81void DERobot_LateUpdate(void);82void DERobot_StaticUpdate(void);83void DERobot_Draw(void);84void DERobot_Create(void *data);85void DERobot_StageLoad(void);86#if GAME_INCLUDE_EDITOR87void DERobot_EditorDraw(void);88void DERobot_EditorLoad(void);89#endif90void DERobot_Serialize(void);9192// Extra Entity Functions93void DERobot_HandleScreenBounds(void);94void DERobot_HandleLegMovement(int32 offset);95void DERobot_HandleLegMovement2(int32 offset);96void DERobot_HandleArmMovement(int32 offset);97void DERobot_HandleTerrainDestruction(void);98void DERobot_DestroyTerrainFinal(void);99void DERobot_Hit(void);100void DERobot_Explode(void);101102void DERobot_CheckPlayerCollisions_Body(void);103void DERobot_CheckPlayerCollisions_ArmExtend(void);104void DERobot_CheckPlayerCollisions_Hand(void);105bool32 DERobot_CheckRubyGrabbed(void);106void DERobot_CheckPlayerCollisions_Bomb(void);107108void DERobot_Draw_RelativeToParent(void);109void DERobot_Draw_Arm(void);110void DERobot_Draw_Simple(void);111void DERobot_Draw_FrontLeg(void);112void DERobot_Draw_Target(void);113114void DERobot_State_ArmIdle(void);115void DERobot_State_ArmExtendPrepare(void);116void DERobot_State_ArmExtending(void);117void DERobot_State_ArmRetracting(void);118void DERobot_State_ArmDestroyed(void);119120void DERobot_Cutscene_ActivateArm(void);121void DERobot_Cutscene_ReachForRuby(void);122void DERobot_Cutscene_GrabbedRuby(void);123void DERobot_Cutscene_ArmDeactivate(void);124125void DERobot_State_CloseHeadHatch(void);126void DERobot_State_BombLaunched(void);127void DERobot_State_BombLanded(void);128void DERobot_State_BombExplode(void);129130void DERobot_State_SetupArena(void);131void DERobot_State_SetupBoss(void);132133void DERobot_State_Target(void);134135void DERobot_State_SurpriseFall(void);136void DERobot_State_FallLand(void);137void DERobot_State_Walk(void);138void DERobot_State_ArmAttack(void);139void DERobot_State_Explode(void);140void DERobot_State_ExplodeTerrain(void);141void DERobot_State_Finish(void);142143void DERobot_State_DebrisFall(void);144145void DERobot_State_FinishBounds(void);146void DERobot_State_CutsceneExplode(void);147148#endif //! OBJ_DEROBOT_H149150151