#ifndef _CENTITYINFO #define _CENTITYINFO #include "types.h" #include "MetroidPrime/TGameTypes.hpp" #include "rstl/vector.hpp" enum EScriptObjectType { kST_Actor = 0x00, kST_Enemy = 0x01, kST_Waypoint = 0x02, kST_Door = 0x03, kST_Trigger = 0x04, kST_Timer = 0x05, kST_Counter = 0x06, kST_Effect = 0x07, kST_Platform = 0x08, kST_Sound = 0x09, kST_Generator = 0x0A, kST_Dock = 0x0B, kST_Camera = 0x0C, kST_CameraWaypoint = 0x0D, kST_NewIntroBoss = 0x0E, kST_SpawnPoint = 0x0F, kST_CameraHint = 0x10, kST_Pickup = 0x11, kST_JumpPoint = 0x12, kST_MemoryRelay = 0x13, kST_RandomRelay = 0x14, kST_Relay = 0x15, kST_Beetle = 0x16, kST_HUDMemo = 0x17, kST_CameraFilterKeyframe = 0x18, kST_CameraBlurKeyframe = 0x19, kST_DamageableTrigger = 0x1A, kST_Debris = 0x1B, kST_CameraShaker = 0x1C, kST_ActorKeyframe = 0x1D, kST_Water = 0x20, kST_Warwasp = 0x21, kST_MapStation = 0x21, kST_SpacePirate = 0x24, kST_FlyingPirate = 0x25, kST_ElitePirate = 0x26, kST_MetroidBeta = 0x27, kST_ChozoGhost = 0x28, kST_CoverPoint = 0x2A, kST_SpiderBallWaypoint = 0x2C, kST_BloodFlower = 0x2D, kST_FlickerBat = 0x2E, kST_PathCamera = 0x2F, kST_GrapplePoint = 0x30, kST_PuddleSpore = 0x31, kST_DebugCameraWaypoint = 0x32, kST_SpiderBallAttractionSurface = 0x33, kST_PuddleToadGamma = 0x34, kST_DistanceFog = 0x35, kST_FireFlea = 0x36, kST_Metaree = 0x37, kST_DockAreaChange = 0x38, kST_ActorRotate = 0x39, kST_SpecialFunction = 0x3A, kST_SpankWeed = 0x3B, kST_Parasite = 0x3D, kST_PlayerHint = 0x3E, kST_Ripper = 0x3F, kST_PickupGenerator = 0x40, kST_AIKeyframe = 0x41, kST_PointOfInterest = 0x42, kST_Drone = 0x43, kST_Metroid = 0x44, kST_DebrisExtended = 0x45, kST_Steam = 0x46, kST_Ripple = 0x47, kST_BallTrigger = 0x48, kST_TargetingPoint = 0x49, kST_EMPulse = 0x4A, kST_IceSheegoth = 0x4B, kST_PlayerActor = 0x4C, kST_Flaahgra = 0x4D, kST_AreaAttributes = 0x4E, kST_FishCloud = 0x4F, kST_FishCloudModifier = 0x50, kST_VisorFlare = 0x51, kST_WorldTeleporter = 0x52, kST_VisorGoo = 0x53, kST_JellyZap = 0x54, kST_ControllerAction = 0x55, kST_Switch = 0x56, kST_PlayerStateChange = 0x57, kST_Thardus = 0x58, kST_SaveStation = 0x59, kST_WallCrawlerSwarm = 0x5A, kST_AIJumpPoint = 0x5B, kST_FlaahgraTentacle = 0x5C, kST_RoomAcoustics = 0x5D, kST_ColorModulate = 0x5E, kST_ThardusRockProjectile = 0x5F, kST_Midi = 0x60, kST_StreamedAudio = 0x61, kST_WorldTeleporterToo = 0x62, kST_Repulsor = 0x63, kST_GunTurret = 0x64, kST_FogVolume = 0x65, kST_Babygoth = 0x66, kST_Eyeball = 0x67, kST_RadialDamage = 0x68, kST_CameraPitchVolume = 0x69, kST_EnvFxDensityController = 0x6A, kST_Magdolite = 0x6B, kST_TeamAIMgr = 0x6C, kST_SnakeWeedSwarm = 0x6D, kST_ActorContraption = 0x6E, kST_Oculus = 0x6F, kST_Geemer = 0x70, kST_SpindleCamera = 0x71, kST_AtomicAlpha = 0x72, kST_CameraHintTrigger = 0x73, kST_RumbleEffect = 0x74, kST_AmbientAI = 0x75, kST_AtomicBeta = 0x77, kST_IceZoomer = 0x78, kST_Puffer = 0x79, kST_Tryclops = 0x7A, kST_Ridley = 0x7B, kST_Seedling = 0x7C, kST_ThermalHeatFader = 0x7D, kST_Burrower = 0x7F, kST_ScriptBeam = 0x81, kST_WorldLightFader = 0x82, kST_MetroidPrimeStage2 = 0x83, kST_MetroidPrimeStage1 = 0x84, kST_MazeNode = 0x85, kST_OmegaPirate = 0x86, kST_PhazonPool = 0x87, kST_PhazonHealingNodule = 0x88, kST_NewCameraShaker = 0x89, kST_ShadowProjector = 0x8A, kST_EnergyBall = 0x8B, kST_MAX }; enum EScriptObjectState { kSS_Any = -1, kSS_Active = 0, kSS_Arrived = 1, kSS_Closed = 2, kSS_Entered = 3, kSS_Exited = 4, kSS_Inactive = 5, kSS_Inside = 6, kSS_MaxReached = 7, kSS_Open = 8, kSS_Zero = 9, kSS_Attack = 10, kSS_CloseIn = 11, kSS_Retreat = 12, kSS_Patrol = 13, kSS_Dead = 14, kSS_CameraPath = 15, kSS_CameraTarget = 16, kSS_DeactivateState = 17, kSS_Play = 18, kSS_MassiveDeath = 19, kSS_DeathRattle = 20, kSS_AboutToMassivelyDie = 21, kSS_Damage = 22, kSS_InvulnDamage = 23, kSS_MassiveFrozenDeath = 24, kSS_Modify = 25, kSS_ScanStart = 26, kSS_ScanProcessing = 27, kSS_ScanDone = 28, kSS_UnFrozen = 29, kSS_Default = 30, kSS_ReflectedDamage = 31, kSS_InheritBounds = 32, }; enum EScriptObjectMessage { kSM_None = -1, kSM_UNKM0 = 0, kSM_Activate = 1, kSM_Arrived = 2, kSM_Close = 3, kSM_Deactivate = 4, kSM_Decrement = 5, kSM_Follow = 6, kSM_Increment = 7, kSM_Next = 8, kSM_Open = 9, kSM_Reset = 10, kSM_ResetAndStart = 11, kSM_SetToMax = 12, kSM_SetToZero = 13, kSM_Start = 14, kSM_Stop = 15, kSM_StopAndReset = 16, kSM_ToggleActive = 17, kSM_UNKM18 = 18, kSM_Action = 19, kSM_Play = 20, kSM_Alert = 21, kSM_InternalMessage00 = 22, kSM_OnFloor = 23, kSM_InternalMessage02 = 24, kSM_InternalMessage03 = 25, kSM_Falling = 26, kSM_OnIceSurface = 27, kSM_OnMudSlowSurface = 28, kSM_OnNormalSurface = 29, kSM_Touched = 30, kSM_AddPlatformRider = 31, kSM_LandOnNotFloor = 32, kSM_Registered = 33, kSM_Deleted = 34, kSM_InitializedInArea = 35, kSM_WorldInitialized = 36, kSM_AddSplashInhabitant = 37, kSM_UpdateSplashInhabitant = 38, kSM_RemoveSplashInhabitant = 39, kSM_Jumped = 40, kSM_Damage = 41, kSM_InvulnDamage = 42, kSM_ProjectileCollide = 43, kSM_InSnakeWeed = 44, kSM_AddPhazonPoolInhabitant = 45, kSM_UpdatePhazonPoolInhabitant = 46, kSM_RemovePhazonPoolInhabitant = 47, kSM_SuspendedMove = 48 }; struct SConnection { EScriptObjectState x0_state; EScriptObjectMessage x4_msg; TEditorId x8_objId; SConnection(EScriptObjectState state, EScriptObjectMessage msg, TEditorId id) : x0_state(state), x4_msg(msg), x8_objId(id) {} }; class CEntityInfo { TAreaId x0_areaId; rstl::vector< SConnection > x4_conns; TEditorId x14_editorId; public: CEntityInfo(TAreaId aid, const rstl::vector< SConnection >& conns, TEditorId eid = kInvalidEditorId); TAreaId GetAreaId() const { return x0_areaId; } const rstl::vector< SConnection >& GetConnectionList() const { return x4_conns; } TEditorId GetEditorId() const { return x14_editorId; } }; #endif // _CENTITYINFO