Path: blob/master/SonicMania/Objects/PGZ/HeavyShinobi.h
338 views
#ifndef OBJ_HEAVYSHINOBI_H1#define OBJ_HEAVYSHINOBI_H23#include "Game.h"45typedef enum {6SHINOBI_MAIN,7SHINOBI_SLASH,8SHINOBI_ASTERON,9SHINOBI_ASTERONSPIKE,10SHINOBI_BOUNDS,11} HeavyShinobiTypes;1213// Object Class14struct ObjectHeavyShinobi {15RSDK_OBJECT16int8 health;17uint8 invincibilityTimer;18Animator fxTrailAnimator[4];19uint8 storedIDs[4];20uint8 storedAnimIDs[4];21Vector2 storePos[16];22Animator unusedAnimator;23uint8 activeShurikens;24uint16 aniFrames;25Hitbox hitboxShinobi;26Hitbox hitboxSlashRange;27Hitbox hitboxUnused;28Hitbox hitboxSlash;29Hitbox hitboxAsteron;30Hitbox hitboxBounds;31Hitbox hitboxAsteronSpike;32uint16 sfxHit;33uint16 sfxExplosion;34uint16 sfxDefeat;35uint16 sfxDropIn;36uint16 sfxExplode;37uint16 sfxGlitch;38uint16 sfxJump;39uint16 sfxParry;40uint16 sfxSlash;41uint16 sfxStick;42uint16 sfxThrow;43};4445// Entity Class46struct EntityHeavyShinobi {47RSDK_ENTITY48StateMachine(state);49StateMachine(stateDraw);50int32 type;51int32 timer;52int32 glitchTimer;53EntityPlayer *playerPtr;54Vector2 playerDistance;55Animator mainAnimator;56Animator fxAnimator;57};5859// Object Struct60extern ObjectHeavyShinobi *HeavyShinobi;6162// Standard Entity Events63void HeavyShinobi_Update(void);64void HeavyShinobi_LateUpdate(void);65void HeavyShinobi_StaticUpdate(void);66void HeavyShinobi_Draw(void);67void HeavyShinobi_Create(void *data);68void HeavyShinobi_StageLoad(void);69#if GAME_INCLUDE_EDITOR70void HeavyShinobi_EditorDraw(void);71void HeavyShinobi_EditorLoad(void);72#endif73void HeavyShinobi_Serialize(void);7475// Extra Entity Functions76void HeavyShinobi_HandleAfterFX(void);77void HeavyShinobi_HandleSlash(EntityPlayer *player);78void HeavyShinobi_StartJump(void);79void HeavyShinobi_Explode(void);8081// Shinobi States82void HeavyShinobi_State_Init(void);83void HeavyShinobi_State_SetupArena(void);84void HeavyShinobi_State_StartFight(void);85void HeavyShinobi_State_Idle(void);86void HeavyShinobi_State_Slash(void);87void HeavyShinobi_State_Jump(void);88void HeavyShinobi_State_Glitched(void);89void HeavyShinobi_State_Destroyed(void);90void HeavyShinobi_State_Finished(void);91void HeavyShinobi_Draw_Shinobi(void);9293// Slash States94void HeavyShinobi_StateSlash_Active(void);95void HeavyShinobi_Draw_Slash(void);9697// Asteron States98void HeavyShinobi_StateAsteron_Thrown(void);99void HeavyShinobi_StateAsteron_Debris(void);100void HeavyShinobi_StateAsteron_Explode(void);101void HeavyShinobi_Draw_Asteron(void);102103// Asteron Spike States104void HeavyShinobi_State_AsteronSpike(void);105void HeavyShinobi_Draw_AsteronSpike(void);106107// Boundary States108void HeavyShinobi_StateBounds_WaitForPlayer(void);109void HeavyShinobi_StateBounds_Active(void);110void HeavyShinobi_Draw_Bounds(void);111112#endif //! OBJ_HEAVYSHINOBI_H113114115