Path: blob/master/SonicMania/Objects/LRZ/HeavyRider.h
338 views
#ifndef OBJ_HEAVYRIDER_H1#define OBJ_HEAVYRIDER_H23#include "Game.h"45typedef enum {6HEAVYRIDER_RIDER,7HEAVYRIDER_PLANESWITCH,8HEAVYRIDER_FORCECHARGE_LEFT,9HEAVYRIDER_FORCECHARGE_RIGHT,10HEAVYRIDER_UNUSED1,11HEAVYRIDER_UNUSED2,12HEAVYRIDER_PUFF,13HEAVYRIDER_FIREBALL,14HEAVYRIDER_JIMMY,15} HeavyRiderTypes;1617typedef enum {18HEAVYRIDER_ATK_RIDING_SCREENBOUNDS,19HEAVYRIDER_ATK_RIDING_ARENABOUNDS,20HEAVYRIDER_ATK_RIDING_USETRIGGERS,21HEAVYRIDER_ATK_PREPCHARGE,22HEAVYRIDER_ATK_CHARGE,23} HeavyRiderAttackIDs;2425typedef enum {26HEAVYRIDER_SPIKEBALL_NONE,27HEAVYRIDER_SPIKEBALL_SWINGING,28HEAVYRIDER_SPIKEBALL_UNUSED1,29HEAVYRIDER_SPIKEBALL_UNUSED2,30HEAVYRIDER_SPIKEBALL_UNUSED3,31HEAVYRIDER_SPIKEBALL_UNUSED4,32HEAVYRIDER_SPIKEBALL_UNUSED5,33HEAVYRIDER_SPIKEBALL_THROWN,34} HeavyRiderSpikeBallStates;3536typedef enum {37HEAVYRIDER_WHEEL_NONE,38HEAVYRIDER_WHEEL_EXTENDING,39HEAVYRIDER_WHEEL_RETRACTING,40} HeavyRiderWheelStates;4142// Object Class43struct ObjectHeavyRider {44RSDK_OBJECT45uint8 curAttack;46uint8 spikeBallState;47Vector2 spikeBallPos;48uint8 spikeBallAngle;49int32 wheelLength;50uint8 wheelExtendState;51uint8 health;52uint8 invincibilityTimer;53uint8 spawnDelay;54uint8 playerTimers[PLAYER_COUNT];55int32 spawnFireballs;56int32 startY;57uint8 chargeTimer;58#if MANIA_USE_PLUS59EntityLRZ3Outro *outro;60#endif61uint16 aniFrames;62Hitbox hitboxRider;63Hitbox hitboxSpikeBall;64Hitbox innerBox;65Hitbox outerBox;66Hitbox hitboxRiderTrigger;67Hitbox hitboxTrigger;68Hitbox hitboxJimmy;69Hitbox hitboxFireball;70uint16 sfxHit;71uint16 sfxExplosion;72uint16 sfxCharge;73uint16 sfxLaunch;74uint16 sfxSkid;75uint16 sfxJump;76uint16 sfxCheer;77uint16 sfxBumper;78};7980// Entity Class81struct EntityHeavyRider {82RSDK_ENTITY83StateMachine(state);84StateMachine(stateDraw);85uint8 type;86int32 flags;87int32 size;88bool32 affectPlayer;89int32 timer;90Animator mainAnimator;91Animator thrustAnimator;92Animator spikeBallAnimator;93Animator fireballAnimator;94Animator wheelieAnimator;95};9697// Object Struct98extern ObjectHeavyRider *HeavyRider;99100// Standard Entity Events101void HeavyRider_Update(void);102void HeavyRider_LateUpdate(void);103void HeavyRider_StaticUpdate(void);104void HeavyRider_Draw(void);105void HeavyRider_Create(void *data);106void HeavyRider_StageLoad(void);107#if GAME_INCLUDE_EDITOR108void HeavyRider_EditorDraw(void);109void HeavyRider_EditorLoad(void);110#endif111void HeavyRider_Serialize(void);112113// Extra Entity Functions114void HeavyRider_SpawnDebris(int32 frame, uint8 drawGroup, int32 x, int32 y);115void HeavyRider_CheckObjectCollisions(void);116void HeavyRider_Hit(void);117void HeavyRider_Explode(void);118void HeavyRider_HandleTurn_ScreenEdges(void);119void HeavyRider_HandleTurn_ArenaEdges(void);120void HeavyRider_DecideNextAttack(void);121122void HeavyRider_State_SetupArena(void);123void HeavyRider_State_AwaitPlayer(void);124void HeavyRider_State_SetupRider(void);125void HeavyRider_State_Moving(void);126void HeavyRider_State_RampJump(void);127void HeavyRider_State_Charging(void);128void HeavyRider_State_ChargeDash(void);129void HeavyRider_State_Turning(void);130void HeavyRider_State_Destroyed(void);131void HeavyRider_State_Finish(void);132void HeavyRider_Draw_Boss(void);133134void HeavyRider_State_PlaneSwitch(void);135void HeavyRider_Draw_PlaneSwitch(void);136137void HeavyRider_State_ChargeTrigger(void);138139void HeavyRider_Draw_Simple(void);140141void HeavyRider_State_Fireball(void);142143void HeavyRider_State_Puff(void);144145void HeavyRider_StateJimmy_Idle(void);146void HeavyRider_StateJimmy_RevRelease(void);147void HeavyRider_StateJimmy_RevUp(void);148149#endif //! OBJ_HEAVYRIDER_H150151152