|
@@ -0,0 +1,117 @@
|
|
|
+using System.Collections;
|
|
|
+using System.Linq;
|
|
|
+using System.Collections.Generic;
|
|
|
+using UnityEngine;
|
|
|
+using Sirenix.OdinInspector;
|
|
|
+using KairoEngine.Core;
|
|
|
+
|
|
|
+namespace KairoEngine.Core.GameActions
|
|
|
+{
|
|
|
+ public enum GameActionStringType
|
|
|
+ {
|
|
|
+ String,
|
|
|
+ Variable
|
|
|
+ }
|
|
|
+
|
|
|
+ [System.Serializable, HideReferenceObjectPicker]
|
|
|
+ public class TriggerGenericEventGameAction : GameActionBase
|
|
|
+ {
|
|
|
+ public override string name
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ return "Trigger Generic Event";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public override GameActionsController controller {
|
|
|
+ get => _controller;
|
|
|
+ set
|
|
|
+ {
|
|
|
+ _controller = value;
|
|
|
+ typeName = "TriggerGenericEventGameAction";
|
|
|
+ className = this.GetType().AssemblyQualifiedName;
|
|
|
+ GetCompatibleVariablenames();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public override string GetTypeName() => "TriggerGenericEventGameAction";
|
|
|
+ public override string GetActionName() => "Core/Trigger Generic Event";
|
|
|
+
|
|
|
+ [FoldoutGroup("@name")]
|
|
|
+ public GameActionStringType actionType = GameActionStringType.String;
|
|
|
+
|
|
|
+ [FoldoutGroup("@name"), ShowIf("@actionType == GameActionStringType.String")]
|
|
|
+ public string eventName = "EventName";
|
|
|
+
|
|
|
+ [FoldoutGroup("@name"), ShowIf("@actionType == GameActionStringType.Variable")]
|
|
|
+ [ValueDropdown("possibleVariables", IsUniqueList = false)]
|
|
|
+ public string eventNameVariable;
|
|
|
+
|
|
|
+ private IEnumerable possibleVariables = new ValueDropdownList<string>();
|
|
|
+
|
|
|
+ public TriggerGenericEventGameAction(GameActionsController controller) : base(controller)
|
|
|
+ {
|
|
|
+ this.controller = controller;
|
|
|
+ className = this.GetType().AssemblyQualifiedName;
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void Start()
|
|
|
+ {
|
|
|
+ string targetEvent = "";
|
|
|
+ if(actionType == GameActionStringType.String) targetEvent = eventName;
|
|
|
+ else if(actionType == GameActionStringType.Variable) targetEvent = GetVariable(eventNameVariable);
|
|
|
+ GenericEvents.Trigger(targetEvent);
|
|
|
+ _done = true;
|
|
|
+ _started = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void Update() { }
|
|
|
+
|
|
|
+ public override void Restart()
|
|
|
+ {
|
|
|
+ _done = false;
|
|
|
+ _started = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void GetCompatibleVariablenames()
|
|
|
+ {
|
|
|
+ if(_controller == null) return;
|
|
|
+ if(_controller.context == null) return;
|
|
|
+ possibleVariables = _controller.context.variables
|
|
|
+ //.Where(x => x.data is GameActionContextString)
|
|
|
+ .Select(x => new ValueDropdownItem(x.name, x.name));
|
|
|
+ }
|
|
|
+
|
|
|
+ public static TriggerGenericEventGameAction JSONToTriggerGenericEventGameAction(string data)
|
|
|
+ {
|
|
|
+ return JsonUtility.FromJson<TriggerGenericEventGameAction>(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ private TriggerGenericEventGameAction Duplicate(GameActionsController controller = null)
|
|
|
+ {
|
|
|
+ TriggerGenericEventGameAction action = new TriggerGenericEventGameAction(controller == null ? this.controller : controller);
|
|
|
+ action.controller = controller;
|
|
|
+ action.actionType = actionType;
|
|
|
+ action.eventName = eventName;
|
|
|
+ action.eventNameVariable = eventNameVariable;
|
|
|
+ return action;
|
|
|
+ }
|
|
|
+
|
|
|
+ private string GetVariable(string title)
|
|
|
+ {
|
|
|
+ if(controller == null) return "";
|
|
|
+ if(controller.context == null) return "";
|
|
|
+ for (int i = 0; i < controller.context.variables.Count; i++)
|
|
|
+ {
|
|
|
+ if(controller.context.variables[i].name == title)
|
|
|
+ {
|
|
|
+ string value = controller.context.variables[i].GetValue<string>("");
|
|
|
+ if(value != "") return value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+
|