Path: blob/master/SonicMania/Objects/CPZ/TransportTube.h
338 views
#ifndef OBJ_TRANSPORTTUBE_H1#define OBJ_TRANSPORTTUBE_H23#include "Game.h"45typedef enum {6TRANSPORTTUBE_CHANGEDIR,7TRANSPORTTUBE_ENTRY,8TRANSPORTTUBE_TOTARGET_NEXT,9TRANSPORTTUBE_TOTARGET_PREV,10TRANSPORTTUBE_TOTARGET_NODE,11TRANSPORTTUBE_JUNCTION,12TRANSPORTTUBE_EXIT,13} TransportTubeTypes;1415typedef enum {16TRANSPORTTUBE_DIR_NONE = 0,17TRANSPORTTUBE_DIR_N = 1 << 0,18TRANSPORTTUBE_DIR_S = 1 << 1,19TRANSPORTTUBE_DIR_W = 1 << 2,20TRANSPORTTUBE_DIR_E = 1 << 3,21TRANSPORTTUBE_DIR_NE = 1 << 4,22TRANSPORTTUBE_DIR_NW = 1 << 5,23TRANSPORTTUBE_DIR_SE = 1 << 6,24TRANSPORTTUBE_DIR_SW = 1 << 7,25} TransportTubeDirMasks;2627// Object Class28struct ObjectTransportTube {29RSDK_OBJECT30int32 nextSlot[4];31uint16 aniFrames;32uint16 sfxTravel;33};3435// Entity Class36struct EntityTransportTube {37RSDK_ENTITY38StateMachine(state);39uint8 type;40uint8 dirMask;41int32 directionCount;42Vector2 dirVelocity[8];43int32 directionIDs[8];44int32 playerTimers[PLAYER_COUNT];45EntityPlayer *players[PLAYER_COUNT];46Animator animator;47};4849// Object Struct50extern ObjectTransportTube *TransportTube;5152// Standard Entity Events53void TransportTube_Update(void);54void TransportTube_LateUpdate(void);55void TransportTube_StaticUpdate(void);56void TransportTube_Draw(void);57void TransportTube_Create(void *data);58void TransportTube_StageLoad(void);59#if GAME_INCLUDE_EDITOR60void TransportTube_EditorDraw(void);61void TransportTube_EditorLoad(void);62#endif63void TransportTube_Serialize(void);6465// Extra Entity Functions66void TransportTube_SetupDirections(EntityTransportTube *entity);67void TransportTube_HandleVelocityChange(int32 velX, int32 velY);6869void TransportTube_State_ChangeDir(void);70void TransportTube_State_Entry(void);71void TransportTube_State_ToTargetEntity(void);72void TransportTube_State_TargetSeqNode(void);73void TransportTube_State_ChooseDir(void);74void TransportTube_State_Exit(void);7576#endif //! OBJ_TRANSPORTTUBE_H777879