Path: blob/master/SonicMania/Objects/Common/Platform.h
338 views
#ifndef OBJ_PLATFORM_H1#define OBJ_PLATFORM_H23#include "Game.h"45typedef enum {6PLATFORM_FIXED,7PLATFORM_FALL,8PLATFORM_LINEAR,9PLATFORM_CIRCULAR,10PLATFORM_SWING,11PLATFORM_PATH,12PLATFORM_PUSH,13PLATFORM_TRACK,14PLATFORM_REACT,15PLATFORM_HOVER_REACT,16PLATFORM_DOORSLIDE,17PLATFORM_PATH_REACT,18PLATFORM_SWING_REACT,19PLATFORM_TRACK_REACT,20PLATFORM_CLACKER,21PLATFORM_CHILD,22PLATFORM_DIPROCK,23} PlatformTypes;2425typedef enum {26PLATFORM_C_PLATFORM,27PLATFORM_C_SOLID,28PLATFORM_C_TILED,29PLATFORM_C_HURT,30PLATFORM_C_NONE,31PLATFORM_C_SOLID_HURT_SIDES,32PLATFORM_C_SOLID_HURT_BOTTOM,33PLATFORM_C_SOLID_HURT_TOP,34PLATFORM_C_SOLID_HOLD,35PLATFORM_C_SOLID_STICKY,36PLATFORM_C_STICKY_TOP,37PLATFORM_C_STICKY_LEFT,38PLATFORM_C_STICKY_RIGHT,39PLATFORM_C_STICKY_BOTTOM,40PLATFORM_C_SOLID_BARREL,41PLATFORM_C_SOLID_NOCRUSH,42} PlatformCollisionTypes;4344// Object Class45struct ObjectPlatform {46RSDK_OBJECT47uint16 aniFrames;48Vector2 stoodPos[PLAYER_COUNT];49uint16 sfxClacker;50uint16 sfxClang;51uint16 sfxPush;52uint16 sfxClack;53bool32 playingPushSfx;54bool32 useClack;55};5657// Entity Class58struct EntityPlatform {59MANIA_PLATFORM_BASE60};6162// Object Struct63extern ObjectPlatform *Platform;6465// Standard Entity Events66void Platform_Update(void);67void Platform_LateUpdate(void);68void Platform_StaticUpdate(void);69void Platform_Draw(void);70void Platform_Create(void *data);71void Platform_StageLoad(void);72#if GAME_INCLUDE_EDITOR73void Platform_EditorDraw(void);74void Platform_EditorLoad(void);75#endif76void Platform_Serialize(void);7778// Extra Entity Functions7980// States81void Platform_State_Fixed(void);82void Platform_State_Fall(void);83void Platform_State_Falling(void);84void Platform_State_Falling2(void);85void Platform_State_Hold(void);86void Platform_State_Linear(void);87void Platform_State_Circular(void);88void Platform_State_Swing(void);89void Platform_State_Clacker(void);90void Platform_State_Push_Init(void);91void Platform_State_Push(void);92void Platform_State_Push_SlideOffL(void);93void Platform_State_Push_SlideOffR(void);94void Platform_State_Push_Fall(void);95void Platform_State_Path(void);96void Platform_State_PathStop(void);97void Platform_State_Track(void);98void Platform_State_React(void);99void Platform_State_Hover_React(void);100void Platform_State_ReactMove(void);101void Platform_State_ReactSlow(void);102void Platform_State_Hover(void);103void Platform_State_ReactWait(void);104void Platform_State_DoorSlide(void);105void Platform_State_PathReact(void);106void Platform_State_Child(void);107void Platform_State_SwingReact(void);108void Platform_State_Swing2(void);109void Platform_State_SwingWait(void);110void Platform_State_SwingReturn(void);111void Platform_State_TrackReact(void);112void Platform_State_Track2(void);113void Platform_State_TrackWait(void);114void Platform_State_TrackReturn(void);115void Platform_State_DipRock(void);116117// Collision States118void Platform_Collision_Platform(void);119void Platform_Collision_Solid(void);120void Platform_Collision_Solid_NoCrush(void);121void Platform_Collision_Solid_Hurt_Sides(void);122void Platform_Collision_Solid_Hurt_Bottom(void);123void Platform_Collision_Solid_Hurt_Top(void);124void Platform_Collision_Solid_Hold(void);125void Platform_Collision_Solid_Barrel(void);126void Platform_Collision_Sticky(void);127void Platform_Collision_Tiles(void);128void Platform_Collision_Hurt(void);129void Platform_Collision_None(void);130131// Collision Helpers132void Platform_HandleStood(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);133void Platform_HandleStood_Tiles(EntityPlatform *self, EntityPlayer *player, int32 playerID);134void Platform_HandleStood_Hold(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);135void Platform_HandleStood_Barrel(EntityPlatform *self, EntityPlayer *player, int32 playerID, int32 stoodPlayers);136void Platform_HandleStood_Sticky(EntityPlatform *self, EntityPlayer *player, int32 playerID, uint8 cSide);137138#endif //! OBJ_PLATFORM_H139140141