using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonLang.Property; using CommonAI.Zone.ZoneEditor.EventTrigger; using CommonAI.Zone.Instance; using CommonAI.Zone.ZoneEditor; using CommonAI.Zone.Attributes; using CommonAI.Zone.EventTrigger; namespace CommonAI.Zone.ZoneEditor.EventTrigger { [DescAttribute("单位 - 某个单位")] public abstract class UnitValue : AbstractValue { [DescAttribute("值 - 没有单位", "值")] public class NA : UnitValue { public override string ToString() { return "没有单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return null; } } [DescAttribute("(废弃)遍历迭代中的 - 单位", "(废弃)")] public class PickedUnit : UnitValue { public override string ToString() { return "遍历迭代中的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return args.IteratingUnit; } } [DescAttribute("遍历迭代中的 - 单位", "循环迭代")] public class PickingIteratingUnit : UnitValue { public override string ToString() { return "遍历迭代中的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return args.IteratingUnit; } } [DescAttribute("编辑器 - 单位", "编辑器")] public class Editor : UnitValue { [DescAttribute("场景中的名字")] [SceneObjectIDAttribute(typeof(UnitData))] public string EditorName; public override string ToString() { return "单位:" + EditorName; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.get_edit_unit(EditorName) as InstanceUnit; } } [DescAttribute("功能 - 触发的单位", "功能")] public class Trigging : UnitValue { public override string ToString() { return "触发的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingUnit; } } [DescAttribute("功能 - 最后添加的单位", "功能")] public class LastAdded : UnitValue { public override string ToString() { return "最后添加的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastAddedUnit; } } [DescAttribute("功能 - 最后激活的单位", "功能")] public class LastActivated : UnitValue { public override string ToString() { return "最后激活的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastActivatedUnit; } } [DescAttribute("功能 - 最后复活的单位", "功能")] public class LastRebirth : UnitValue { public override string ToString() { return "最后复活的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastRebirthUnit; } } [DescAttribute("功能 - 最后发动攻击的单位", "功能")] public class LastAttack : UnitValue { public override string ToString() { return "最后发动攻击的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastAttackUnit; } } [DescAttribute("功能 - 发动攻击的单位", "功能")] public class AttackUnit : UnitValue { public override string ToString() { return "发动攻击的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return args.AttackUnit; } } [DescAttribute("功能 - 最后被打的单位", "功能")] public class LastHitted : UnitValue { public override string ToString() { return "最后被打的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastHittedUnit; } } [DescAttribute("功能 - 最后被杀死的单位", "功能")] public class LastKilled : UnitValue { public override string ToString() { return "最后被杀死的单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastKilledUnit; } } [DescAttribute("场景 - 随机单位", "场景")] public class RandomUnit : UnitValue { public override string ToString() { return "随机单位"; } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.selectRandomUnit((InstanceUnit unit) => { return true; }); } } [DescAttribute("场景 - 随机阵营单位", "场景")] public class RandomForceUnit : UnitValue { [DescAttribute("阵营")] public IntegerValue Force = new IntegerValue.VALUE(0); public override string ToString() { return string.Format("阵营{0}随机单位", Force); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { int force = Force.GetValue(api, args); return api.ZoneAPI.selectRandomUnit((InstanceUnit unit) => { return unit.Force == force; }); } } [DescAttribute("检取物品中的单位", "功能")] public class LastPickingItemUnit : UnitValue { public override string ToString() { return string.Format("检取物品中的单位"); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastPickingItemUnit; } } [DescAttribute("最后被点选的单位", "功能")] public class LastPickableUnit : UnitValue { public override string ToString() { return string.Format("最后被点选的单位"); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastPickableUnit; } } [DescAttribute("最后释放的技能的单位", "功能")] public class LastLaunchSkillUnit : UnitValue { public override string ToString() { return string.Format("最后释放的技能的单位"); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastLaunchSkillUnit; } } [DescAttribute("指定名字的单位", "功能")] public class NamedUnit : UnitValue { [DescAttribute("名字")] public StringValue Name = new StringValue.VALUE(); public override string ToString() { return string.Format("名字为\"{0}\"的单位", Name); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.getUnitByName(Name.GetValue(api, args)); } } [DescAttribute("指定ID的单位", "功能")] public class PointTemplateIDUnit : UnitValue { [DescAttribute("模板ID")] public int templateIOd = 0; public override string ToString() { return string.Format("ID为\"{0}\"的单位", templateIOd); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.getUnitByTemplateID(templateIOd); } } [DescAttribute("绑定的单位", "单位触发器")] public class UnitAPI : UnitValue { public override string ToString() { return string.Format("单位触发器绑定的单位"); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.UnitAPI; } } [DescAttribute("指定阵营里最重的单位", "功能")] public class BossUnit : UnitValue { [DescAttribute("阵营force")] public int force = 0; public override string ToString() { return string.Format("阵营{0}里最重的单位", force); } public override InstanceUnit GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.getTheWeightOneAtForce(force); } } } }