using CommonAI.Zone.ZoneEditor.EventTrigger; using CommonLang.Property; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommonAI.Zone.EventTrigger { public interface IEditorValue { object GetEnvValue(IEditorValueAdapter api); } public interface IEventDataNode { /// <summary> /// 触发器名字 /// </summary> string EventName { get; set; } /// <summary> /// 启用 /// </summary> bool EventIsActive { get; set; } /// <summary> /// 注释 /// </summary> string EventComment { get; set; } /// <summary> /// 保存 /// </summary> string EventTreePath { get; set; } /// <summary> /// 延迟执行 /// </summary> int EventDelayTimeMS { get; set; } /// <summary> /// 临时变量 /// </summary> List<LocalVar> EventLocalVars { get; } /// <summary> /// 事件触发 /// </summary> List<AbstractTrigger> EventTriggers { get; } /// <summary> /// 条件 /// </summary> List<AbstractCondition> EventConditions { get; } /// <summary> /// 动作 /// </summary> List<AbstractAction> EventActions { get; } /// <summary> /// 功能文本 /// </summary> /// <returns></returns> string FunctionText(); } [DescAttribute("临时变量")] [Expandable] public abstract class LocalVar { [DescAttribute("变量名")] public string Key = "LocalVarName"; public abstract object GetValue(IEditorValueAdapter api, EventArguments args); public abstract object GetAbstractValue(); } [DescAttribute("触发事件")] [Expandable] public abstract class AbstractTrigger : IDisposable { abstract public void Listen(EventTriggerAdapter api, EventArguments args); virtual public void Dispose() { } } [DescAttribute("条件")] [Expandable] public abstract class AbstractCondition : IDisposable { abstract public bool Test(EventTriggerAdapter api, EventArguments args); virtual public void Dispose() { } } [DescAttribute("动作")] [Expandable] public abstract class AbstractAction : IDisposable { abstract public void DoAction(EventTriggerAdapter api, EventArguments args); virtual public void Dispose() { } } [DescAttribute("抽象值")] [Expandable] public abstract class AbstractValue<T> : IEditorValue { abstract public T GetValue(IEditorValueAdapter api, EventArguments args); public object GetEnvValue(IEditorValueAdapter api) { return GetValue(api, new EventArguments()); } } }