123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using CommonLang.Property;
- using CommonAI.Zone.Attributes;
- using CommonAI.Zone;
- using CommonAI.Zone.ZoneEditor;
- using CommonAI.RTS; using CommonLang.Vector;
- using CommonAI.Zone.Instance;
- using CommonAI.Zone.EventTrigger;
- namespace CommonAI.Zone.ZoneEditor.EventTrigger
- {
- [DescAttribute("关闭Flag(包括空气墙)", "Flag")]
- public class FlagCloseAction : AbstractAction
- {
- [DescAttribute("Flag")]
- public FlagValue Flag = new FlagValue.EditorPoint();
- public override string ToString()
- {
- return string.Format("关闭({0})", Flag);
- }
- override public void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- InstanceFlag flag = Flag.GetValue(api, args);
- if (flag != null)
- {
- flag.set_enable(false);
- }
- }
- }
- [DescAttribute("开启Flag(包括空气墙)", "Flag")]
- public class FlagOpenAction : AbstractAction
- {
- [DescAttribute("Flag")]
- public FlagValue Flag = new FlagValue.EditorPoint();
- public override string ToString()
- {
- return string.Format("开启({0})", Flag);
- }
- override public void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- InstanceFlag flag = Flag.GetValue(api, args);
- if (flag != null)
- {
- flag.set_enable(true);
- }
- }
- }
- [DescAttribute("设置Flag的Tag", "Flag")]
- public class FlagTagAction : AbstractAction
- {
- [DescAttribute("Flag")]
- public FlagValue Flag = new FlagValue.EditorPoint();
- [DescAttribute("Tag")]
- public StringValue Tag = new StringValue.NULL();
- public override string ToString()
- {
- return string.Format("{0}.Tag={1}", Flag, Tag);
- }
- override public void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- var flag = Flag.GetValue(api, args);
- var tag = Tag.GetValue(api, args);
- if (flag != null)
- {
- flag.Tag = tag;
- }
- }
- }
- [DescAttribute("当指定单位进入区域一次DO", "Flag")]
- public class WhenUnitEnterRegionOnceDo : AbstractAction
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- [DescAttribute("动作")]
- public AbstractAction Action = new DoNoting();
- public override string ToString()
- {
- return string.Format("WHEN ({0})进入({1})一次 DO ({2})", Unit, Region, Action);
- }
- public override void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- InstanceUnit unit = Unit.GetValue(api, args);
- if (region != null && unit != null)
- {
- var args2 = args.Clone();
- region.ListenUnitEnterOnce(unit, (r, u) =>
- {
- args2.TriggingFlag = r;
- args2.TriggingUnit = u;
- Action.DoAction(api, args2);
- });
- }
- }
- }
- [DescAttribute("当指定单位离开区域一次DO", "Flag")]
- public class WhenUnitLeaveRegionOnceDo : AbstractAction
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- [DescAttribute("动作")]
- public AbstractAction Action = new DoNoting();
- public override string ToString()
- {
- return string.Format("WHEN ({0})离开({1})一次 DO ({2})", Unit, Region, Action);
- }
- public override void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- InstanceUnit unit = Unit.GetValue(api, args);
- if (region != null && unit != null)
- {
- var args2 = args.Clone();
- region.ListenUnitLeaveOnce(unit, (r, u) =>
- {
- args2.TriggingFlag = r;
- args2.TriggingUnit = u;
- Action.DoAction(api, args2);
- });
- }
- }
- }
- [DescAttribute("当指定单位进入Area一次DO", "Flag")]
- public class WhenUnitEnterAreaOnceDo : AbstractAction
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("Area")]
- public FlagValue Area = new FlagValue.EditorArea();
- [DescAttribute("动作")]
- public AbstractAction Action = new DoNoting();
- public override string ToString()
- {
- return string.Format("WHEN ({0})进入({1})一次 DO ({2})", Unit, Area, Action);
- }
- public override void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- var area = Area.GetValue(api, args) as ZoneArea;
- var unit = Unit.GetValue(api, args);
- if (area != null && unit != null)
- {
- var args2 = args.Clone();
- area.ListenUnitEnterOnce(unit, (r, u) =>
- {
- args2.TriggingFlag = r;
- args2.TriggingUnit = u;
- Action.DoAction(api, args2);
- });
- }
- }
- }
- [DescAttribute("当指定单位离开Area一次DO", "Flag")]
- public class WhenUnitLeaveAreaOnceDo : AbstractAction
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("Area")]
- public FlagValue Area = new FlagValue.EditorArea();
- [DescAttribute("动作")]
- public AbstractAction Action = new DoNoting();
- public override string ToString()
- {
- return string.Format("WHEN ({0})离开({1})一次 DO ({2})", Unit, Area, Action);
- }
- public override void DoAction(EventTriggerAdapter api, EventArguments args)
- {
- var area = Area.GetValue(api, args) as ZoneArea;
- var unit = Unit.GetValue(api, args);
- if (area != null && unit != null)
- {
- var args2 = args.Clone();
- area.ListenUnitLeaveOnce(unit, (r, u) =>
- {
- args2.TriggingFlag = r;
- args2.TriggingUnit = u;
- Action.DoAction(api, args2);
- });
- }
- }
- }
- }
|