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 StringValue : AbstractValue { [DescAttribute("空", "值")] public class NULL : StringValue { public NULL() { } public override string ToString() { return "NULL"; } public override string GetValue(IEditorValueAdapter api, EventArguments args) { return null; } } [DescAttribute("值", "值")] public class VALUE : StringValue { [LocalizationTextAttribute] [DescAttribute("值")] public string Value = ""; public VALUE() { } public VALUE(string value) { this.Value = value; } public override string ToString() { return Value + ""; } public override string GetValue(IEditorValueAdapter api, EventArguments args) { return Value; } } //--------------------------------------------------------------------------------------------------------------------- #region __游戏__ [DescAttribute("场景用户自定义属性", "场景")] public class ZoneTextAttribute : StringValue { [DescAttribute("键值")] public string Key; public override string ToString() { return string.Format("场景键值[{0}]", Key); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { return api.ZoneAPI.GetAttribute(Key) as string; } } [DescAttribute("最后接收到的消息(从服务器)", "场景")] public class ZoneLastRecvMessage : StringValue { public override string ToString() { return string.Format("最后从服务器接收到的消息"); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { if (api.ZoneAPI.LastRecvMessageR2B != null) { return api.ZoneAPI.LastRecvMessageR2B.Message; } return null; } } [DescAttribute("最后发送到的消息(到服务器)", "场景")] public class ZoneLastSentMessage : StringValue { public override string ToString() { return string.Format("最后发送到服务器的消息"); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { if (api.ZoneAPI.LastSentMessageB2R != null) { return api.ZoneAPI.LastSentMessageB2R.Message; } return null; } } [DescAttribute("单位用户自定义属性", "单位")] public class UnitTextAttribute : StringValue { [DescAttribute("单位")] public UnitValue Unit = new UnitValue.Trigging(); [DescAttribute("键值")] public string Key; public override string ToString() { return string.Format("单位({0})键值[{1}]", Unit, Key); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { InstanceUnit unit = Unit.GetValue(api, args); if (unit != null) { return unit.GetAttribute(Key) as string; } return null; } } [DescAttribute("单位名字", "单位")] public class UnitName : StringValue { [DescAttribute("单位")] public UnitValue Unit = new UnitValue.Trigging(); public override string ToString() { return string.Format("单位({0})名字", Unit); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { InstanceUnit unit = Unit.GetValue(api, args); if (unit != null) { return unit.Name; } return null; } } [DescAttribute("物品名字", "物品")] public class ItemName : StringValue { [DescAttribute("物品")] public ItemValue Item = new ItemValue.NA(); public override string ToString() { return string.Format("物品({0})名字", Item); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { InstanceItem item = Item.GetValue(api, args); if (item != null) { return item.Name; } return null; } } [DescAttribute("玩家UUID", "单位")] public class PlayerUUID : StringValue { [DescAttribute("玩家单位")] public UnitValue Unit = new UnitValue.Trigging(); public override string ToString() { return string.Format("玩家单位({0})UUID", Unit); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { var unit = Unit.GetValue(api, args); InstancePlayer retUnit = null; if (unit is InstancePlayer) { retUnit = unit as InstancePlayer; } else if (unit is InstancePet) { retUnit = (unit as InstancePet).Master as InstancePlayer; } else if (unit is InstanceSummon) { retUnit = (unit as InstanceSummon).SummonerUnit as InstancePlayer; } if (retUnit != null) { return retUnit.PlayerUUID; } return null; } } [DescAttribute("单位模板ID", "单位")] public class UnitTemplateID : StringValue { [DescAttribute("单位")] public UnitValue Unit = new UnitValue.Trigging(); public override string ToString() { return string.Format("单位({0})模板ID", Unit); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { InstanceUnit unit = Unit.GetValue(api, args); if (unit != null) { return unit.Info.TemplateID.ToString(); } return null; } } #endregion //--------------------------------------------------------------------------------------------------------------------- #region __转换__ [DescAttribute("整形转换为字符串", "转换")] public class IntegerToString : StringValue { [DescAttribute("值")] public IntegerValue Value = new IntegerValue.VALUE(1); public override string ToString() { return string.Format("({0})转换为字符串", Value); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { int value = Value.GetValue(api, args); return value.ToString(); } } [DescAttribute("小数转换为字符串", "转换")] public class RealToString : StringValue { [DescAttribute("值")] public RealValue Value = new RealValue.VALUE(1); public override string ToString() { return string.Format("({0})转换为字符串", Value); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { float value = Value.GetValue(api, args); return value.ToString(); } } #endregion //--------------------------------------------------------------------------------------------------------------------- #region __字符串方法__ [DescAttribute("字符串拼接", "字符串方法")] public class StringConcat : StringValue { [DescAttribute("串0")] public StringValue str0 = new StringValue.VALUE(); [DescAttribute("串1")] public StringValue str1 = new StringValue.VALUE(); [DescAttribute("串2")] public StringValue str2 = new StringValue.VALUE(); [DescAttribute("串3")] public StringValue str3 = new StringValue.VALUE(); public override string ToString() { return string.Format("{0}{1}{2}{3}", str0, str1, str2, str3); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { string[] array = new string[] { str0.GetValue(api, args), str1.GetValue(api, args), str2.GetValue(api, args), str3.GetValue(api, args), }; StringBuilder sb = new StringBuilder(); foreach (string c in array) { if (c != null) sb.Append(c); } return sb.ToString(); } } [DescAttribute("字符串拼接(组)", "字符串方法")] public class StringConcatArray : StringValue { [DescAttribute("串0")] [ListAttribute(typeof(StringValue))] public List array = new List(); public override string ToString() { StringBuilder sb = new StringBuilder(); foreach (StringValue sv in array) { sb.Append(sv.ToString()); } return sb.ToString(); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { StringBuilder sb = new StringBuilder(); foreach (StringValue sv in array) { string c = sv.GetValue(api, args); if (c != null) sb.Append(c); } return sb.ToString(); } } [DescAttribute("字符串格式化", "字符串方法")] public class StringFormat4 : StringValue { [DescAttribute("格式化文本(最多4个参数)")] [LocalizationTextAttribute] public string FormatString = "{0}{1}{2}{3}"; [DescAttribute("串0")] public StringValue str0 = new StringValue.VALUE(); [DescAttribute("串1")] public StringValue str1 = new StringValue.VALUE(); [DescAttribute("串2")] public StringValue str2 = new StringValue.VALUE(); [DescAttribute("串3")] public StringValue str3 = new StringValue.VALUE(); public override string ToString() { return string.Format(FormatString, str0, str1, str2, str3); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { return string.Format(FormatString, str0.GetValue(api, args), str1.GetValue(api, args), str2.GetValue(api, args), str3.GetValue(api, args)); } } [DescAttribute("字符串格式化(组)", "字符串方法")] public class StringFormatArray : StringValue { [DescAttribute("格式化文本")] [LocalizationTextAttribute] public string FormatString = "{0}"; [DescAttribute("参数")] [ListAttribute(typeof(StringValue))] public List array = new List(); public override string ToString() { return string.Format(FormatString, array.ToArray()); } public override string GetValue(IEditorValueAdapter api, EventArguments args) { object[] param = new object[array.Count]; for (int i = 0; i < param.Length;i++ ) { string c = array[i].GetValue(api, args); param[i] = c; } return string.Format(FormatString, param); } } #endregion //--------------------------------------------------------------------------------------------------------------------- } }