Split out LUTriggers into it's own component (#986)

* Split out LUTriggers into it's own component

* some cleanup

* fix debug log

* use emplace and tryParse

* slight refactor to make the work on startup
rather than at runtime
Also TODO's for getting targets via all the possible methods

* address feedback
This commit is contained in:
Aaron Kimbrell
2023-02-10 02:29:53 -06:00
committed by GitHub
parent d17f51183e
commit 91c0c1fcfb
13 changed files with 437 additions and 137 deletions

View File

@@ -414,6 +414,7 @@ enum eReplicaComponentType : int32_t {
COMPONENT_TYPE_MODULE_ASSEMBLY = 61, //!< The ModuleAssembly Component
COMPONENT_TYPE_PROPERTY_VENDOR = 65, //!< The PropertyVendor Component
COMPONENT_TYPE_ROCKET_LAUNCH = 67, //!< The RocketLaunch Component
COMPONENT_TYPE_TRIGGER = 69,
COMPONENT_TYPE_RACING_CONTROL = 71, //!< The RacingControl Component
COMPONENT_TYPE_MISSION_OFFER = 73, //!< The MissionOffer Component
COMPONENT_TYPE_EXHIBIT = 75, //!< The Exhibit Component

View File

@@ -0,0 +1,119 @@
#ifndef __ETRIGGERCOMMANDTYPE__H__
#define __ETRIGGERCOMMANDTYPE__H__
// For info about Trigger Command see:
// https://docs.lu-dev.net/en/latest/file-structures/lutriggers.html?highlight=trigger#possible-values-commands
enum class eTriggerCommandType {
INVALID,
ZONE_PLAYER,
FIRE_EVENT,
DESTROY_OBJ,
TOGGLE_TRIGGER,
RESET_REBUILD,
SET_PATH,
SET_PICK_TYPE,
MOVE_OBJECT,
ROTATE_OBJECT,
PUSH_OBJECT,
REPEL_OBJECT,
SET_TIMER,
CANCEL_TIMER,
PLAY_CINEMATIC,
TOGGLE_BBB,
UPDATE_MISSION,
SET_BOUNCER_STATE,
BOUNCE_ALL_ON_BOUNCER,
TURN_AROUND_ON_PATH,
GO_FORWARD_ON_PATH,
GO_BACKWARD_ON_PATH,
STOP_PATHING,
START_PATHING,
LOCK_OR_UNLOCK_CONTROLS,
PLAY_EFFECT,
STOP_EFFECT,
ACTIVATE_MUSIC_CUE,
DEACTIVATE_MUSIC_CUE,
FLASH_MUSIC_CUE,
SET_MUSIC_PARAMETER,
PLAY_2D_AMBIENT_SOUND,
STOP_2D_AMBIENT_SOUND,
PLAY_3D_AMBIENT_SOUND,
STOP_3D_AMBIENT_SOUND,
ACTIVATE_MIXER_PROGRAM,
DEACTIVATE_MIXER_PROGRAM,
CAST_SKILL,
DISPLAY_ZONE_SUMMARY,
SET_PHYSICS_VOLUME_EFFECT,
SET_PHYSICS_VOLUME_STATUS,
SET_MODEL_TO_BUILD,
SPAWN_MODEL_BRICKS,
ACTIVATE_SPAWNER_NETWORK,
DEACTIVATE_SPAWNER_NETWORK,
RESET_SPAWNER_NETWORK,
DESTROY_SPAWNER_NETWORK_OBJECTS,
GO_TO_WAYPOINT,
ACTIVATE_PHYSICS
};
class TriggerCommandType {
public:
static eTriggerCommandType StringToTriggerCommandType(std::string commandString) {
const std::map<std::string, eTriggerCommandType> TriggerCommandMap = {
{ "zonePlayer", eTriggerCommandType::ZONE_PLAYER},
{ "fireEvent", eTriggerCommandType::FIRE_EVENT},
{ "destroyObj", eTriggerCommandType::DESTROY_OBJ},
{ "toggleTrigger", eTriggerCommandType::TOGGLE_TRIGGER},
{ "resetRebuild", eTriggerCommandType::RESET_REBUILD},
{ "setPath", eTriggerCommandType::SET_PATH},
{ "setPickType", eTriggerCommandType::SET_PICK_TYPE},
{ "moveObject", eTriggerCommandType::MOVE_OBJECT},
{ "rotateObject", eTriggerCommandType::ROTATE_OBJECT},
{ "pushObject", eTriggerCommandType::PUSH_OBJECT},
{ "repelObject", eTriggerCommandType::REPEL_OBJECT},
{ "setTimer", eTriggerCommandType::SET_TIMER},
{ "cancelTimer", eTriggerCommandType::CANCEL_TIMER},
{ "playCinematic", eTriggerCommandType::PLAY_CINEMATIC},
{ "toggleBBB", eTriggerCommandType::TOGGLE_BBB},
{ "updateMission", eTriggerCommandType::UPDATE_MISSION},
{ "setBouncerState", eTriggerCommandType::SET_BOUNCER_STATE},
{ "bounceAllOnBouncer", eTriggerCommandType::BOUNCE_ALL_ON_BOUNCER},
{ "turnAroundOnPath", eTriggerCommandType::TURN_AROUND_ON_PATH},
{ "goForwardOnPath", eTriggerCommandType::GO_FORWARD_ON_PATH},
{ "goBackwardOnPath", eTriggerCommandType::GO_BACKWARD_ON_PATH},
{ "stopPathing", eTriggerCommandType::STOP_PATHING},
{ "startPathing", eTriggerCommandType::START_PATHING},
{ "LockOrUnlockControls", eTriggerCommandType::LOCK_OR_UNLOCK_CONTROLS},
{ "PlayEffect", eTriggerCommandType::PLAY_EFFECT},
{ "StopEffect", eTriggerCommandType::STOP_EFFECT},
{ "activateMusicCue", eTriggerCommandType::ACTIVATE_MUSIC_CUE},
{ "deactivateMusicCue", eTriggerCommandType::DEACTIVATE_MUSIC_CUE},
{ "flashMusicCue", eTriggerCommandType::FLASH_MUSIC_CUE},
{ "setMusicParameter", eTriggerCommandType::SET_MUSIC_PARAMETER},
{ "play2DAmbientSound", eTriggerCommandType::PLAY_2D_AMBIENT_SOUND},
{ "stop2DAmbientSound", eTriggerCommandType::STOP_2D_AMBIENT_SOUND},
{ "play3DAmbientSound", eTriggerCommandType::PLAY_3D_AMBIENT_SOUND},
{ "stop3DAmbientSound", eTriggerCommandType::STOP_3D_AMBIENT_SOUND},
{ "activateMixerProgram", eTriggerCommandType::ACTIVATE_MIXER_PROGRAM},
{ "deactivateMixerProgram", eTriggerCommandType::DEACTIVATE_MIXER_PROGRAM},
{ "CastSkill", eTriggerCommandType::CAST_SKILL},
{ "displayZoneSummary", eTriggerCommandType::DISPLAY_ZONE_SUMMARY},
{ "SetPhysicsVolumeEffect", eTriggerCommandType::SET_PHYSICS_VOLUME_EFFECT},
{ "SetPhysicsVolumeStatus", eTriggerCommandType::SET_PHYSICS_VOLUME_STATUS},
{ "setModelToBuild", eTriggerCommandType::SET_MODEL_TO_BUILD},
{ "spawnModelBricks", eTriggerCommandType::SPAWN_MODEL_BRICKS},
{ "ActivateSpawnerNetwork", eTriggerCommandType::ACTIVATE_SPAWNER_NETWORK},
{ "DeactivateSpawnerNetwork", eTriggerCommandType::DEACTIVATE_SPAWNER_NETWORK},
{ "ResetSpawnerNetwork", eTriggerCommandType::RESET_SPAWNER_NETWORK},
{ "DestroySpawnerNetworkObjects", eTriggerCommandType::DESTROY_SPAWNER_NETWORK_OBJECTS},
{ "Go_To_Waypoint", eTriggerCommandType::GO_TO_WAYPOINT},
{ "ActivatePhysics", eTriggerCommandType::ACTIVATE_PHYSICS}
};
auto intermed = TriggerCommandMap.find(commandString);
return (intermed != TriggerCommandMap.end()) ? intermed->second : eTriggerCommandType::INVALID;
};
};
#endif //!__ETRIGGERCOMMANDTYPE__H__

View File

@@ -0,0 +1,53 @@
#ifndef __ETRIGGEREVENTTYPE__H__
#define __ETRIGGEREVENTTYPE__H__
enum class eTriggerEventType {
INVALID,
DESTROY,
CUSTOM_EVENT,
ENTER,
EXIT,
CREATE,
HIT,
TIMER_DONE,
REBUILD_COMPLETE,
ACTIVATED,
DEACTIVATED,
ARRIVED,
ARRIVED_AT_END_OF_PATH,
ZONE_SUMMARY_DISMISSED,
ARRIVED_AT_DESIRED_WAYPOINT,
PET_ON_SWITCH,
PET_OFF_SWITCH,
INTERACT
};
class TriggerEventType {
public:
static eTriggerEventType StringToTriggerEventType(std::string commandString) {
const std::map<std::string, eTriggerEventType> TriggerEventMap = {
{"OnDestroy", eTriggerEventType::DESTROY},
{"OnCustomEvent", eTriggerEventType::CUSTOM_EVENT},
{"OnEnter", eTriggerEventType::ENTER},
{"OnExit", eTriggerEventType::EXIT},
{"OnCreate", eTriggerEventType::CREATE},
{"OnHit", eTriggerEventType::HIT},
{"OnTimerDone", eTriggerEventType::TIMER_DONE},
{"OnRebuildComplete", eTriggerEventType::REBUILD_COMPLETE},
{"OnActivated", eTriggerEventType::ACTIVATED},
{"OnDeactivated", eTriggerEventType::DEACTIVATED},
{"OnArrived", eTriggerEventType::ARRIVED},
{"OnArrivedAtEndOfPath", eTriggerEventType::ARRIVED_AT_END_OF_PATH},
{"OnZoneSummaryDismissed", eTriggerEventType::ZONE_SUMMARY_DISMISSED},
{"OnArrivedAtDesiredWaypoint", eTriggerEventType::ARRIVED_AT_DESIRED_WAYPOINT},
{"OnPetOnSwitch", eTriggerEventType::PET_ON_SWITCH},
{"OnPetOffSwitch", eTriggerEventType::PET_OFF_SWITCH},
{"OnInteract", eTriggerEventType::INTERACT},
};
auto intermed = TriggerEventMap.find(commandString);
return (intermed != TriggerEventMap.end()) ? intermed->second : eTriggerEventType::INVALID;
};
};
#endif //!__ETRIGGEREVENTTYPE__H__