using System; using System.Collections.Generic; using System.Linq; using System.Text; using CommonLang.Property; using CommonAI.Zone.Attributes; using CommonLang.Formula; using CommonAI.Zone.EventTrigger; using CommonAI.Zone.Instance; namespace CommonAI.Zone.ZoneEditor.EventTrigger { //----------------------------------------------------------------------------- #region __BUFF模板__ [DescAttribute("BUFF模板")] public abstract class BuffTemplateValue : AbstractValue { [DescAttribute("BUFF模板", "编辑器")] public class Template : BuffTemplateValue { [DescAttribute("BUFF模板ID")] [TemplateIDAttribute(typeof(BuffTemplate))] public int BuffTemplateID; public override string ToString() { return string.Format("BUFF模板:{0}", BuffTemplateID); } public override BuffTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.Templates.getBuff(BuffTemplateID); } } [DescAttribute("触发的BUFF", "功能")] public class Trigging : BuffTemplateValue { public override string ToString() { return string.Format("触发的BUFF"); } public override BuffTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingBuffTemplate; } } } [DescAttribute("BUFF模板", "比较")] public class BuffTemplateComparison : BooleanValue { [DescAttribute("物品1")] public BuffTemplateValue Value1 = new BuffTemplateValue.Trigging(); [DescAttribute("比较符")] public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL; [DescAttribute("物品2")] public BuffTemplateValue Value2 = new BuffTemplateValue.Trigging(); public override string ToString() { return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2); } public override Boolean GetValue(IEditorValueAdapter api, EventArguments args) { BuffTemplate c1 = Value1.GetValue(api, args); BuffTemplate c2 = Value2.GetValue(api, args); if (c1 == c2) { return true; } if (c1 != null && c2 != null) { return FormulaHelper.Compare(c1.ID, Op, c2.ID); } return FormulaHelper.Compare(c1, Op, c2); } } [DescAttribute("BUFF编辑器模板", "模板ID")] public class BuffTemplateID : IntegerValue { [DescAttribute("模板ID")] [TemplateIDAttribute(typeof(BuffTemplate))] public int ID; public override string ToString() { return string.Format("BUFF模板:{0}", ID); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { return ID; } } [DescAttribute("BUFF模板", "模板ID")] public class ValueBuffTemplateID : IntegerValue { [DescAttribute("BUFF")] public BuffTemplateValue Buff = new BuffTemplateValue.Trigging(); public override string ToString() { return string.Format("BUFF({0})", Buff); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { BuffTemplate buff = Buff.GetValue(api, args); if (buff != null) { return buff.ID; } return 0; } } #endregion //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- #region __物品模板__ [DescAttribute("物品模板")] public abstract class ItemTemplateValue : AbstractValue { [DescAttribute("物品模板", "编辑器")] public class Template : ItemTemplateValue { [DescAttribute("物品模板ID")] [TemplateIDAttribute(typeof(ItemTemplate))] public int ItemTemplateID; public override string ToString() { return string.Format("物品模板:{0}", ItemTemplateID); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.Templates.getItem(ItemTemplateID); } } [DescAttribute("物品实体模板", "编辑器")] public class Instance : ItemTemplateValue { [DescAttribute("物品实体")] public ItemValue Item = new ItemValue.NA(); public override string ToString() { return string.Format("物品实体模板:{0}", Item); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { InstanceItem item = Item.GetValue(api, args); if (item != null) { return item.Info; } return null; } } [DescAttribute("触发的物品模板", "功能")] public class Trigging : ItemTemplateValue { public override string ToString() { return string.Format("触发的物品模板"); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingItemTemplate; } } [DescAttribute("最后创建的物品模板", "功能")] public class LastCreatedItem : ItemTemplateValue { public override string ToString() { return string.Format("最后创建的物品模板"); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { if (api.ZoneAPI.LastCreatedInstanceItem != null) { return api.ZoneAPI.LastCreatedInstanceItem.Info; } return null; } } [DescAttribute("最后使用的物品模板", "功能")] public class LastUsedItem : ItemTemplateValue { public override string ToString() { return string.Format("最后使用的物品模板"); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastUnitUseItem; } } [DescAttribute("单位最后进入背包的物品模板", "功能")] public class LastGotInventoryItem : ItemTemplateValue { public override string ToString() { return string.Format("单位最后进入背包的物品模板"); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastUnitGotInventoryItem; } } [DescAttribute("单位最后从场景检取物品模板", "功能")] public class LastGotInstanceItem : ItemTemplateValue { public override string ToString() { return string.Format("单位最后从场景检取物品模板"); } public override ItemTemplate GetValue(IEditorValueAdapter api, EventArguments args) { if (api.ZoneAPI.LastUnitGotInstanceItem != null) { return api.ZoneAPI.LastUnitGotInstanceItem.Info; } return null; } } } [DescAttribute("物品模板", "比较")] public class ItemTemplateComparison : BooleanValue { [DescAttribute("物品1")] public ItemTemplateValue Value1 = new ItemTemplateValue.Trigging(); [DescAttribute("比较符")] public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL; [DescAttribute("物品2")] public ItemTemplateValue Value2 = new ItemTemplateValue.Trigging(); public override string ToString() { return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2); } public override Boolean GetValue(IEditorValueAdapter api, EventArguments args) { ItemTemplate c1 = Value1.GetValue(api, args); ItemTemplate c2 = Value2.GetValue(api, args); if (c1 == c2) { return true; } if (c1 != null && c2 != null) { return FormulaHelper.Compare(c1.ID, Op, c2.ID); } return FormulaHelper.Compare(c1, Op, c2); } } [DescAttribute("物品编辑器模板", "模板ID")] public class ItemTemplateID : IntegerValue { [DescAttribute("模板ID")] [TemplateIDAttribute(typeof(ItemTemplate))] public int ID; public override string ToString() { return string.Format("物品模板:{0}", ID); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { return ID; } } [DescAttribute("物品模板", "模板ID")] public class ValueItemTemplateID : IntegerValue { [DescAttribute("物品")] public ItemTemplateValue Item = new ItemTemplateValue.Trigging(); public override string ToString() { return string.Format("物品({0})", Item); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { ItemTemplate item = Item.GetValue(api, args); if (item != null) { return item.ID; } return 0; } } [DescAttribute("物品单位模板", "模板ID")] public class InstanceItemTemplateID : IntegerValue { [DescAttribute("物品")] public ItemValue Item = new ItemValue.Trigging(); public override string ToString() { return string.Format("物品单位({0})", Item); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { InstanceItem item = Item.GetValue(api, args); if (item != null) { return item.Info.ID; } return 0; } } #endregion //----------------------------------------------------------------------------- #region __技能模板__ [DescAttribute("技能模板")] public abstract class SkillTemplateValue : AbstractValue { [DescAttribute("技能模板", "编辑器")] public class Template : SkillTemplateValue { [DescAttribute("技能模板ID")] [TemplateIDAttribute(typeof(SkillTemplate))] public int SkillTemplateID; public override string ToString() { return string.Format("技能模板:{0}", SkillTemplateID); } public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.Templates.getSkill(SkillTemplateID); } } [DescAttribute("触发的技能", "功能")] public class Trigging : SkillTemplateValue { public override string ToString() { return string.Format("触发的技能"); } public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingSkillTemplate ; } } [DescAttribute("最后释放的技能", "功能")] public class LastLaunchSkill : SkillTemplateValue { public override string ToString() { return string.Format("最后释放的技能"); } public override SkillTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastLaunchSkill; } } } [DescAttribute("技能模板", "比较")] public class SkillTemplateComparison : BooleanValue { [DescAttribute("技能1")] public SkillTemplateValue Value1 = new SkillTemplateValue.Trigging(); [DescAttribute("比较符")] public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL; [DescAttribute("技能2")] public SkillTemplateValue Value2 = new SkillTemplateValue.Trigging(); public override string ToString() { return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2); } public override Boolean GetValue(IEditorValueAdapter api, EventArguments args) { SkillTemplate c1 = Value1.GetValue(api, args); SkillTemplate c2 = Value2.GetValue(api, args); if (c1 == c2) { return true; } if (c1 != null && c2 != null) { return FormulaHelper.Compare(c1.ID, Op, c2.ID); } return FormulaHelper.Compare(c1, Op, c2); } } [DescAttribute("技能编辑器模板", "模板ID")] public class SkillTemplateID : IntegerValue { [DescAttribute("模板ID")] [TemplateIDAttribute(typeof(SkillTemplate))] public int ID; public override string ToString() { return string.Format("技能模板:{0}", ID); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { return ID; } } [DescAttribute("技能模板", "模板ID")] public class ValueSkillTemplateID : IntegerValue { [DescAttribute("技能")] public SkillTemplateValue Skill = new SkillTemplateValue.Trigging(); public override string ToString() { return string.Format("技能({0})", Skill); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { SkillTemplate skill = Skill.GetValue(api, args); if (skill != null) { return skill.ID; } return 0; } } #endregion //----------------------------------------------------------------------------- #region __法术模板__ [DescAttribute("法术模板")] public abstract class SpellTemplateValue : AbstractValue { [DescAttribute("法术模板", "编辑器")] public class Template : SpellTemplateValue { [DescAttribute("法术模板ID")] [TemplateIDAttribute(typeof(SpellTemplate))] public int SpellTemplateID; public override string ToString() { return string.Format("法术模板:{0}", SpellTemplateID); } public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.Templates.getSpell(SpellTemplateID); } } [DescAttribute("触发的法术", "功能")] public class Trigging : SpellTemplateValue { public override string ToString() { return string.Format("触发的Spell"); } public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return args.TriggingSpellTemplate; } } [DescAttribute("最后释放的法术", "功能")] public class LastLaunchSpell : SpellTemplateValue { public override string ToString() { return string.Format("最后释放的法术"); } public override SpellTemplate GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.LastLaunchSpell; } } } [DescAttribute("法术模板", "比较")] public class SpellTemplateComparison : BooleanValue { [DescAttribute("法术1")] public SpellTemplateValue Value1 = new SpellTemplateValue.Trigging(); [DescAttribute("比较符")] public ObjectComparisonOP Op = ObjectComparisonOP.EQUAL; [DescAttribute("法术2")] public SpellTemplateValue Value2 = new SpellTemplateValue.Trigging(); public override string ToString() { return string.Format("({0}){1}({2})", Value1, FormulaHelper.ToString(Op), Value2); } public override Boolean GetValue(IEditorValueAdapter api, EventArguments args) { SpellTemplate c1 = Value1.GetValue(api, args); SpellTemplate c2 = Value2.GetValue(api, args); if (c1 == c2) { return true; } if (c1 != null && c2 != null) { return FormulaHelper.Compare(c1.ID, Op, c2.ID); } return FormulaHelper.Compare(c1, Op, c2); } } [DescAttribute("法术编辑器模板", "模板ID")] public class SpellTemplateID : IntegerValue { [DescAttribute("模板ID")] [TemplateIDAttribute(typeof(SpellTemplate))] public int ID; public override string ToString() { return string.Format("法术模板:{0}", ID); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { return ID; } } [DescAttribute("法术模板", "模板ID")] public class ValueSpellTemplateID : IntegerValue { [DescAttribute("法术")] public SpellTemplateValue Spell = new SpellTemplateValue.Trigging(); public override string ToString() { return string.Format("法术({0})", Spell); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { SpellTemplate spell = Spell.GetValue(api, args); if (spell != null) { return spell.ID; } return 0; } } #endregion //----------------------------------------------------------------------------- #region __单位模板__ [DescAttribute("单位模板", "模板ID")] public class UnitTemplateID : IntegerValue { [DescAttribute("模板ID")] [TemplateIDAttribute(typeof(UnitInfo))] public int ID; public override string ToString() { return string.Format("单位模板:{0}", ID); } public override Int32 GetValue(IEditorValueAdapter api, EventArguments args) { return ID; } } #endregion }