123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- 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 IntegerValue : AbstractValue<Int32>
- {
- [DescAttribute("值", "值")]
- public class VALUE : IntegerValue
- {
- [DescAttribute("值")]
- public int Value = 0;
- public VALUE() { }
- public VALUE(int v)
- {
- this.Value = v;
- }
- public override string ToString()
- {
- return Value + "";
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return Value;
- }
- }
- [DescAttribute("整形计算", "数学")]
- public class IntegerOP : IntegerValue
- {
- [DescAttribute("值1")]
- public IntegerValue Value1 = new IntegerValue.VALUE();
- [DescAttribute("运算符")]
- public NumericOP OP = NumericOP.ADD;
- [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 Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- int ret = FormulaHelper.Calculate(Value1.GetValue(api, args), OP, Value2.GetValue(api, args));
- return ret;
- }
- }
- [DescAttribute("函数-返回最小值", "数学")]
- public class MinFunction : IntegerValue
- {
- [DescAttribute("值1")]
- public IntegerValue Value1 = new IntegerValue.VALUE();
- [DescAttribute("值2")]
- public IntegerValue Value2 = new IntegerValue.VALUE();
- public override string ToString()
- {
- return string.Format("取{0}和{1}最小值", Value1, Value2);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- int v1 = Value1.GetValue(api, args);
- int v2 = Value2.GetValue(api, args);
- return Math.Min(v1, v2);
- }
- }
- [DescAttribute("函数-返回最大值", "数学")]
- public class MaxFunction : IntegerValue
- {
- [DescAttribute("值1")]
- public IntegerValue Value1 = new IntegerValue.VALUE();
- [DescAttribute("值2")]
- public IntegerValue Value2 = new IntegerValue.VALUE();
- public override string ToString()
- {
- return string.Format("取{0}和{1}最大值", Value1, Value2);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- int v1 = Value1.GetValue(api, args);
- int v2 = Value2.GetValue(api, args);
- return Math.Max(v1, v2);
- }
- }
- [DescAttribute("随机整形", "数学")]
- public class RandomInt : IntegerValue
- {
- [DescAttribute("最小值")]
- public IntegerValue Min = new IntegerValue.VALUE(0);
- [DescAttribute("最大值(小于)")]
- public IntegerValue Max = new IntegerValue.VALUE(10);
- public override string ToString()
- {
- return string.Format("{0}~{1}(不包括)随机数", Min, Max);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- int max = Max.GetValue(api, args);
- int min = Min.GetValue(api, args);
- return api.ZoneAPI.RandomN.Next(min, max);
- }
- }
- [DescAttribute("从小数转换", "转换")]
- public class ConvertFromReal : IntegerValue
- {
- [DescAttribute("值")]
- public RealValue Value = new RealValue.VALUE();
- public override string ToString()
- {
- return string.Format("从{0}转换", Value);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- float value = Value.GetValue(api, args);
- return (int)value;
- }
- }
- [DescAttribute("从字符串转换", "转换")]
- public class ParseFromString : IntegerValue
- {
- [DescAttribute("值")]
- public StringValue Value = new StringValue.VALUE("1");
- public override string ToString()
- {
- return string.Format("从{0}转换", Value);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- string value = Value.GetValue(api, args);
- int ret = 0;
- int.TryParse(value, out ret);
- return ret;
- }
- }
- [DescAttribute("迭代中的整形", "循环迭代")]
- public class PickingIteratorInt32 : IntegerValue
- {
- public override string ToString()
- {
- return "迭代中的整形";
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return args.IteratingInt32;
- }
- }
-
- #region __场景__
- [DescAttribute("游戏运行时间(秒)", "场景")]
- public class TotalTimeSEC : IntegerValue
- {
- public override string ToString()
- {
- return string.Format("游戏运行时间(秒)");
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return api.ZoneAPI.PassTimeSEC;
- }
- }
- [DescAttribute("阵营总共死亡数量", "场景")]
- public class TotalForceDeadCount : IntegerValue
- {
- [DescAttribute("阵营")]
- public IntegerValue SelectForce = new IntegerValue.VALUE(0);
- public override string ToString()
- {
- return string.Format("{0}阵营总共死亡数量", SelectForce);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- byte force = (byte)SelectForce.GetValue(api, args);
- return api.ZoneAPI.GetTotalForceDead(force); ;
- }
- }
- [DescAttribute("场景内所有单位数量", "场景")]
- public class ZoneTotalUnitCount : IntegerValue
- {
- public override string ToString()
- {
- return string.Format("场景内所有单位数量");
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- return api.ZoneAPI.GetAllUnitsCount();
- }
- }
- [DescAttribute("场景内某阵营单位数量", "场景")]
- public class ZoneTotalForceUnitCount : IntegerValue
- {
- [DescAttribute("阵营")]
- public IntegerValue SelectForce = new IntegerValue.VALUE(0);
- public override string ToString()
- {
- return string.Format("场景内阵营{0}单位数量", SelectForce);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- byte force = (byte)SelectForce.GetValue(api, args);
- return api.ZoneAPI.GetForceUnitsCount(force); ;
- }
- }
- [DescAttribute("场景用户自定义属性", "场景")]
- public class ZoneIntegerAttribute : IntegerValue
- {
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("场景键值[{0}]", Key);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- try
- {
- return int.Parse(api.ZoneAPI.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("ZoneIntegerAttribute : " + Key + ", catch: " + err);
- }
- return 0;
- }
- }
- #endregion
-
- #region __单位__
- [DescAttribute("单位用户自定义属性", "单位 - 属性")]
- public class UnitIntegerAttribute : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- [DescAttribute("键值")]
- public string Key;
- public override string ToString()
- {
- return string.Format("单位({0})键值[{1}]", Unit, Key);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- try
- {
- return int.Parse(unit.GetAttribute(Key) as string);
- }
- catch (Exception err)
- {
- Console.WriteLine("UnitIntegerAttribute : " + Key + ", catch: " + err);
- }
- return 0;
- }
- return 0;
- }
- }
- [DescAttribute("单位模板ID", "单位 - 属性")]
- public class UnitTemplateID : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0})模板ID", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Info.TemplateID;
- }
- return 0;
- }
- }
- [DescAttribute("单位血量", "单位 - 属性")]
- public class UnitHP : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0}).HP", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.CurrentHP;
- }
- return 0;
- }
- }
- [DescAttribute("单位最大血量", "单位 - 属性")]
- public class UnitMaxHP : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0}).MaxHP", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.MaxHP;
- }
- return 0;
- }
- }
- [DescAttribute("单位等级", "单位 - 属性")]
- public class UnitLevel : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0}).Level", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Level;
- }
- return 0;
- }
- }
- [DescAttribute("单位阵营", "单位 - 属性")]
- public class UnitForce : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("单位({0}).阵营", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Force;
- }
- return 0;
- }
- }
-
- [DescAttribute("单位-死亡次数", "单位 - 统计")]
- public class UnitDeadCount : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("({0})死亡次数", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Statistic.DeadCount;
- }
- return 0;
- }
- }
- [DescAttribute("单位-总共杀死怪物数量", "单位 - 统计")]
- public class UnitKillUnitCount : IntegerValue
- {
- [DescAttribute("杀死的单位类型")]
- public UnitInfo.UnitType KillType = UnitInfo.UnitType.TYPE_MONSTER;
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("({0})总共杀死怪物数量", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Statistic.GetKillUnitCount(KillType);
- }
- return 0;
- }
- }
- [DescAttribute("单位-总共杀死玩家数量", "单位 - 统计")]
- public class UnitKillPlayerCount : IntegerValue
- {
- [DescAttribute("单位")]
- public UnitValue Unit = new UnitValue.Trigging();
- public override string ToString()
- {
- return string.Format("{0}总共杀死玩家数量", Unit);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- if (unit != null)
- {
- return unit.Statistic.KillPlayerCount;
- }
- return 0;
- }
- }
- [DescAttribute("单位拥有道具数量", "单位 - 属性")]
- public class UnitInventoryItemCount : IntegerValue
- {
- [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 Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- InstanceUnit unit = Unit.GetValue(api, args);
- ItemTemplate temp = Item.GetValue(api, args);
- if (unit != null && temp != null)
- {
- return unit.GetItemCountInInventory(temp.ID);
- }
- return 0;
- }
- }
- #endregion
-
- #region __FLAGS__
-
-
- [DescAttribute("区域内单位数量", "区域")]
- public class RegionUnitCount : IntegerValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- public override string ToString()
- {
- return string.Format("区域({0})内单位数量", Region);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- return region.getObjectsCountInRegion<InstanceUnit>();
- }
- return 0;
- }
- }
- [DescAttribute("区域内指定阵营单位数量", "区域")]
- public class RegionForceUnitCount : IntegerValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- [DescAttribute("阵营")]
- public IntegerValue Force = new IntegerValue.VALUE(0);
- public override string ToString()
- {
- return string.Format("区域({0})内阵营{1}的单位数量", Region, Force);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- int force = Force.GetValue(api, args);
- int ret = region.getObjectsCountInRegion<InstanceUnit>((InstanceUnit unit) =>
- {
- return (unit.IsPlayer && !unit.IsDead() && unit.Force == force);
- });
- return ret;
- }
- return 0;
- }
- }
- [DescAttribute("区域内指定阵营和类型单位数量", "区域")]
- public class RegionForceTypeUnitCount : IntegerValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- [DescAttribute("阵营")]
- public IntegerValue Force = new IntegerValue.VALUE(0);
- [DescAttribute("类型")]
- public UnitInfo.UnitType ObjType = UnitInfo.UnitType.TYPE_PLAYER;
- public override string ToString()
- {
- return string.Format("区域({0})内阵营{1}的类型为{2}单位数量", Region, Force, ObjType);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- byte force = (byte)Force.GetValue(api, args);
- int ret = region.getObjectsCountInRegion<InstanceUnit>((InstanceUnit unit) =>
- {
- if (unit.Info.UType == ObjType && unit.Force == force)
- {
- return true;
- }
- return false;
- });
- return ret;
- }
- return 0;
- }
- }
- [DescAttribute("遍历区域内满足条件单位数量", "区域")]
- public class RegionExpectUnitCount : IntegerValue
- {
- [DescAttribute("区域")]
- public FlagValue Region = new FlagValue.EditorRegion();
- [DescAttribute("条件")]
- public BooleanValue Condition = new BooleanValue.UnitIsAlived();
- public override string ToString()
- {
- return string.Format("遍历区域({0})内满足({1})的单位数量", Region, Condition);
- }
- public override Int32 GetValue(IEditorValueAdapter api, EventArguments args)
- {
- EventTriggerAdapter evtapi = api as EventTriggerAdapter;
- if (evtapi != null)
- {
- ZoneRegion region = Region.GetValue(api, args) as ZoneRegion;
- if (region != null)
- {
- int ret = 0;
- using (var units = ListObjectPool<InstanceUnit>.AllocAutoRelease())
- {
- args = args.Clone();
- region.getObjectsInRegion<InstanceUnit>(units);
- foreach (InstanceUnit u in units)
- {
- args.IteratingUnit = (u);
- bool coodi = Condition.GetValue(api, args);
- if (coodi)
- {
- ret++;
- }
- args.IteratingUnit = (null);
- }
- }
- return ret;
- }
- }
- return 0;
- }
- }
- #endregion
-
-
-
- }
- }
|