using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonLang.Property; using CommonAI.Zone.Instance; using CommonAI.Zone.Attributes; using CommonAI.Zone.EventTrigger; namespace CommonAI.Zone.ZoneEditor.EventTrigger { [DescAttribute("Flag")] public abstract class FlagValue : AbstractValue { [DescAttribute("值 - 没有Flag", "值")] public class NA : FlagValue { public override string ToString() { return "没有Flag"; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return null; } } //--------------------------------------------------------------------------------------- #region Editor [DescAttribute("编辑器 - 区域", "编辑器")] public class EditorRegion : FlagValue { [DescAttribute("场景中的名字")] [SceneObjectIDAttribute(typeof(RegionData))] public string EditorName; public override string ToString() { return "区域:" + EditorName; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.get_edit_flag(EditorName) as ZoneRegion; } } [DescAttribute("编辑器 - 路点", "编辑器")] public class EditorPoint : FlagValue { [DescAttribute("场景中的名字")] [SceneObjectIDAttribute(typeof(PointData))] public string EditorName; public override string ToString() { return "路点:" + EditorName; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.get_edit_flag(EditorName) as ZoneWayPoint; } } [DescAttribute("编辑器 - 装饰物", "编辑器")] public class EditorDecoration : FlagValue { [DescAttribute("场景中的名字")] [SceneObjectIDAttribute(typeof(DecorationData))] public string EditorName; public override string ToString() { return "装饰物:" + EditorName; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.get_edit_flag(EditorName) as ZoneDecoration; } } [DescAttribute("编辑器 - Area", "编辑器")] public class EditorArea : FlagValue { [DescAttribute("场景中的名字")] [SceneObjectIDAttribute(typeof(AreaData))] public string EditorName; public override string ToString() { return "Area:" + EditorName; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.get_edit_flag(EditorName) as ZoneArea; } } #endregion //--------------------------------------------------------------------------------------- #region Trigging [DescAttribute("功能 - 触发的区域", "功能")] public class TriggingRegion : FlagValue { public override string ToString() { return "触发的区域"; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingRegion; } } [DescAttribute("功能 - 触发的装饰物", "功能")] public class TriggingDecoration : FlagValue { public override string ToString() { return "触发的装饰物"; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingDecoration; } } [DescAttribute("功能 - 触发的Area", "功能")] public class TriggingArea : FlagValue { public override string ToString() { return "触发的Area"; } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingArea; } } #endregion //--------------------------------------------------------------------------------------- #region Field [DescAttribute("单位当前Area", "Area")] public class UnitCurrentArea : FlagValue { [DescAttribute("单位")] public UnitValue Unit = new UnitValue.Trigging(); public override string ToString() { return string.Format("单位({0})当前Area", Unit); } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { var unit = Unit.GetValue(api, args); if (unit != null) { return unit.CurrentArea; } return null; } } [DescAttribute("坐标所在Area", "Area")] public class PositionArea : FlagValue { [DescAttribute("坐标")] public PositionValue Pos = new PositionValue.VALUE(); public override string ToString() { return string.Format("坐标({0})位置Area", Pos); } public override InstanceFlag GetValue(IEditorValueAdapter api, EventArguments args) { var pos = Pos.GetValue(api, args); if (pos != null) { return api.ZoneAPI.GetArea(pos.X, pos.Y); } return null; } } #endregion //--------------------------------------------------------------------------------------- } }