123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using CommonLang.Property;
- using CommonAI.Zone.Attributes;
- using CommonAI.Zone.ZoneEditor;
- using CommonLang.Formula;
- using CommonAI.Zone.Instance;
- using CommonAI.RTS; using CommonLang.Vector;
- using CommonLang;
- using CommonAI.Zone.EventTrigger;
- namespace CommonAI.Zone.ZoneEditor.EventTrigger
- {
- [DescAttribute("布尔型")]
- public abstract class BooleanValue : AbstractValue<Boolean>
- {
- [DescAttribute("值", "值")]
- public class VALUE : BooleanValue
- {
- [DescAttribute("值")]
- public bool Value;
- public VALUE() { this.Value = true; }
- public VALUE(bool value) { this.Value = value; }
- public override string ToString()
- {
- return Value + "";
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return Value;
- }
- }
- [DescAttribute("百分比几率", "几率")]
- public class RandomPercent : BooleanValue
- {
- [DescAttribute("百分比几率")]
- public RealValue Percent = new RealValue.VALUE(50);
- public override string ToString()
- {
- return string.Format("{0}%几率", Percent);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- float pct = Percent.GetValue(api, args);
- if (pct > 0)
- {
- return CUtils.RandomPercent(api.ZoneAPI.RandomN, pct);
- }
- return false;
- }
- }
- [DescAttribute("布尔运算", "比较")]
- public class BooleanOperator : BooleanValue
- {
- [DescAttribute("值1")]
- public BooleanValue Condition1 = new VALUE();
- [DescAttribute("运算符")]
- public BooleanOP Op = BooleanOP.EQUAL;
- [DescAttribute("值2")]
- public BooleanValue Condition2 = new VALUE();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Condition1, FormulaHelper.ToString(Op), Condition2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- Boolean c1 = Condition1.GetValue(api, args);
- Boolean c2 = Condition2.GetValue(api, args);
- return FormulaHelper.Calculate(c1, Op, c2);
- }
- }
- [DescAttribute("布尔比较", "比较")]
- public class BooleanComparison : BooleanValue
- {
- [DescAttribute("值1")]
- public BooleanValue Condition1 = new VALUE();
- [DescAttribute("比较符")]
- public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
- [DescAttribute("值2")]
- public BooleanValue Condition2 = new VALUE();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Condition1, FormulaHelper.ToString(Op), Condition2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- Boolean c1 = Condition1.GetValue(api, args);
- Boolean c2 = Condition2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("字符串比较", "比较")]
- public class StringComparison : BooleanValue
- {
- [DescAttribute("字符串1")]
- public StringValue String1 = new StringValue.VALUE();
- [DescAttribute("比较符")]
- public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
- [DescAttribute("字符串2")]
- public StringValue String2 = new StringValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", String1, FormulaHelper.ToString(Op), String2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string c1 = String1.GetValue(api, args);
- string c2 = String2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("字符串是否包含", "比较")]
- public class StringContains : BooleanValue
- {
- [DescAttribute("字符串")]
- public StringValue String = new StringValue.VALUE();
- [DescAttribute("子字符串")]
- public StringValue SubString = new StringValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}).Contains({1})", String, SubString);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string c1 = String.GetValue(api, args);
- string c2 = SubString.GetValue(api, args);
- return c1.Contains(c2);
- }
- }
- [DescAttribute("字符串前缀比较", "比较")]
- public class StringStartsWith : BooleanValue
- {
- [DescAttribute("字符串")]
- public StringValue String = new StringValue.VALUE();
- [DescAttribute("前缀")]
- public StringValue Prefix = new StringValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}).StartsWith({1})", String, Prefix);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string c1 = String.GetValue(api, args);
- string c2 = Prefix.GetValue(api, args);
- return c1.StartsWith(c2);
- }
- }
- [DescAttribute("字符串后缀比较", "比较")]
- public class StringEndsWith : BooleanValue
- {
- [DescAttribute("字符串")]
- public StringValue String = new StringValue.VALUE();
- [DescAttribute("后缀")]
- public StringValue Suffix = new StringValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}).EndsWith({1})", String, Suffix);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string c1 = String.GetValue(api, args);
- string c2 = Suffix.GetValue(api, args);
- return c1.EndsWith(c2);
- }
- }
- [DescAttribute("小数比较", "比较")]
- public class RealComparison : BooleanValue
- {
- [DescAttribute("值1")]
- public RealValue Value1 = new RealValue.VALUE();
- [DescAttribute("比较符")]
- public NumericComparisonOP Op = NumericComparisonOP.EQUAL;
- [DescAttribute("值2")]
- public RealValue Value2 = new RealValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- Single c1 = Value1.GetValue(api, args);
- Single c2 = Value2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("整数比较", "比较")]
- public class IntegerComparison : BooleanValue
- {
- [DescAttribute("值1")]
- public IntegerValue Value1 = new IntegerValue.VALUE();
- [DescAttribute("比较符")]
- public NumericComparisonOP Op = NumericComparisonOP.EQUAL;
- [DescAttribute("值2")]
- public IntegerValue Value2 = new IntegerValue.VALUE();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- Int32 c1 = Value1.GetValue(api, args);
- Int32 c2 = Value2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("单位比较", "比较")]
- public class UnitComparison : BooleanValue
- {
- [DescAttribute("单位1")]
- public UnitValue Value1 = new UnitValue.NA();
- [DescAttribute("比较符")]
- public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
- [DescAttribute("单位2")]
- public UnitValue Value2 = new UnitValue.NA();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit c1 = Value1.GetValue(api, args);
- InstanceUnit c2 = Value2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("物品比较", "比较")]
- public class ItemComparison : BooleanValue
- {
- [DescAttribute("物品1")]
- public ItemValue Value1 = new ItemValue.NA();
- [DescAttribute("比较符")]
- public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
- [DescAttribute("物品2")]
- public ItemValue Value2 = new ItemValue.NA();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceItem c1 = Value1.GetValue(api, args);
- InstanceItem c2 = Value2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("Flag比较", "比较")]
- public class FlagComparison : BooleanValue
- {
- [DescAttribute("Flag1")]
- public FlagValue Value1 = new FlagValue.NA();
- [DescAttribute("比较符")]
- public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL;
- [DescAttribute("Flag2")]
- public FlagValue Value2 = new FlagValue.NA();
- public override string ToString()
- {
- return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceFlag c1 = Value1.GetValue(api, args);
- InstanceFlag c2 = Value2.GetValue(api, args);
- return FormulaHelper.Compare(c1, Op, c2);
- }
- }
- [DescAttribute("Flag是否开启", "Flag状态")]
- public class FlagEnabled : BooleanValue
- {
- [DescAttribute("Flag")]
- public FlagValue Flag = new FlagValue.NA();
- public override string ToString()
- {
- return string.Format("({0}).Enable", Flag);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceFlag flag = Flag.GetValue(api, args);
- if (flag != null)
- {
- return flag.Enable;
- }
- return false;
- }
- }
- [DescAttribute("区域刷新点是否刷新完毕", "Flag状态")]
- public class FlagIsSpawnOver : BooleanValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- public override string ToString()
- {
- return string.Format("({0})刷新完毕", Region);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- return region.IsSpawnOver;
- }
- return false;
- }
- }
- [DescAttribute("区域刷新点是否没有存活单位", "Flag状态")]
- public class FlagIsSpawnNoneAlive : BooleanValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- public override string ToString()
- {
- return string.Format("({0})没有存活单位", Region);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- return region.IsSpawnNoneAlive;
- }
- return false;
- }
- }
- [DescAttribute("场景用户自定义属性", "场景")]
- public class ZoneBooleanAttribute : BooleanValue
- {
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("场景键值[{0}]", Key);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- try
- {
- return Boolean.Parse(api.ZoneAPI.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("ZoneBooleanAttribute : " + Key + ", catch: " + err);
- }
- return false;
- }
- }
- #region __UNIT__
- [DescAttribute("单位用户自定义属性", "单位")]
- public class UnitBooleanAttribute : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("单位({0})键值[{1}]", Unit, Key);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- try
- {
- return Boolean.Parse(unit.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("UnitBooleanAttribute : " + Key + ", catch: " + err);
- }
- }
- return false;
- }
- }
- [DescAttribute("单位存活", "单位")]
- public class UnitIsAlived : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0})活着", Unit);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return !unit.IsDead();
- }
- return false;
- }
- }
- [DescAttribute("单位是否在区域", "单位")]
- public class UnitIsInArea : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("区域")]
- public FlagValue.EditorRegion Region = new FlagValue.EditorRegion();
- public override string ToString()
- {
- return string.Format("单位({0})在区域({1})", Unit, Region);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (unit != null && region != null)
- {
- bool isIn = region.IsUnitInRegion(unit);
- //Console.WriteLine("IsInRegin : " + isIn + ", " + region.Name);
- return isIn;
- }
- return false;
- }
- }
- [DescAttribute("单位死亡", "单位")]
- public class UnitIsDead : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0})死亡", Unit);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.IsDead();
- }
- //不存在则认为死亡
- return true;
- }
- }
- [DescAttribute("单位存在", "单位")]
- public class UnitExist : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0})存在", Unit);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- return (unit != null);
- }
- }
- [DescAttribute("单位是否拥有道具", "单位")]
- public class UnitHasInventoryItem : BooleanValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("物品ID")]
- public ItemTemplateValue Item = new ItemTemplateValue.Template();
- public override string ToString()
- {
- return string.Format("单位({0})是否拥有道具{1}", Unit, Item);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- ItemTemplate temp = Item.GetValue(api, args);
- if (unit != null && temp != null)
- {
- return unit.ContainsItemInInventory(temp.ID);
- }
- return false;
- }
- }
- [DescAttribute("玩家是否自动战斗", "玩家")]
- public class PlayerIsGuard : BooleanValue
- {
- [DescAttribute("玩家单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("玩家单位({0})是否自动战斗", Unit);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit is InstancePlayer)
- {
- return (unit as InstancePlayer).IsGuard;
- }
- return false;
- }
- }
- #endregion
- #region __TRIGGER__
- [DescAttribute("当前触发器是否已开启", "触发器")]
- public class CurrentEventTriggerIsActive : BooleanValue
- {
- public override string ToString()
- {
- return string.Format("当前触发器是否已开启");
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return api.IsActive;
- }
- }
- [DescAttribute("指定触发器是否已开启", "触发器")]
- public class SpecifyEventTriggerIsActive : BooleanValue
- {
- [DescAttribute("事件触发器名字")]
- [SceneEventIDAttribute]
- public string EventName;
- public override string ToString()
- {
- return string.Format("触发器:({0})是否已开启", EventName);
- }
- public override Boolean GetValue(IEditorValueAdapter api, EventArguments args)
- {
- EventTriggerAdapter evt = api.Group.GetEditEvent(EventName);
- if (evt != null)
- {
- return evt.IsActive;
- }
- return false;
- }
- }
- #endregion
- }
- }
|