/// <summary> /// 移除Buff,自动提交事务 /// </summary> /// <param name="managerId">经理Id</param> /// <param name="srcType">来源类型</param> /// <param name="skillCode">技能Code</param> /// <param name="srcId">来源Id</param> /// <param name="tranMgr">事务对象</param> /// <returns></returns> public bool RemovePools(Guid managerId, EnumSkillSrcType srcType, string skillCode = "", string srcId = "", TransactionManager tranMgr = null) { try { int managerHash = ShareUtil.GetTableMod(managerId); if (null == tranMgr) { tranMgr = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault()); } using (tranMgr) { if (!tranMgr.IsOpen) { tranMgr.BeginTransaction(); } NbManagerbuffpoolMgr.Exclude(managerId, managerHash, (int)srcType, srcId, skillCode, tranMgr.TransactionObject); tranMgr.Commit(); } s_buffSync.SyncBuffPools(managerId); return(true); } catch (Exception ex) { LogHelper.Insert(ex, "BuffPoolCore:AddBuffPools"); throw ex; } }
public static XElement WrapSaveXml(XElement root) { var nRoot = new XElement(root); XAttribute memoXa = null; EnumSkillSrcType srcType = EnumSkillSrcType.PlayerAction; var lstRoot = nRoot.Descendants(KEYSkill).OrderBy(i => { Enum.TryParse(i.Attribute(KEYSkillSrcType).Value, out srcType); return((int)srcType); }).ThenBy(i => i.Attribute(KEYSkillCode).Value).ToList(); var dicRoot = new Dictionary <EnumSkillSrcType, List <XElement> >(); foreach (var item in lstRoot) { Enum.TryParse(item.Attribute(KEYSkillSrcType).Value, out srcType); if (!dicRoot.ContainsKey(srcType)) { dicRoot[srcType] = new List <XElement>(); } dicRoot[srcType].Add(item); foreach (var xe in item.Descendants(KEYSkillEffects)) { foreach (var xe2 in xe.Elements(KEYAdd).ToArray()) { memoXa = xe2.Attribute(SharedData.KEYMemo); if (null == memoXa) { continue; } xe2.AddBeforeSelf(new XComment(memoXa.Value)); xe2.SetAttributeValue(SharedData.KEYMemo, null); } } item.SetAttributeValue(SharedData.KEYMemo, null); item.SetAttributeValue(SharedData.KEYModelId, null); item.SetAttributeValue(SharedData.KEYClipId, null); } nRoot.RemoveAll(); foreach (var kvp in dicRoot) { nRoot.Add(new XElement(KEYSkillSet, kvp.Value.ToArray())); } nRoot.Add(InnerTypesConfig()); lstRoot.Clear(); dicRoot.Clear(); return(nRoot); }
public static XElement WrapLoadXml(XElement root) { string skillMemo = string.Empty; string effectMemo = string.Empty; string modelId = string.Empty; string clipId = string.Empty; EnumSkillSrcType srcType = EnumSkillSrcType.PlayerAction; var lstRoot = root.Descendants(KEYSkill).OrderBy(i => { Enum.TryParse(i.Attribute(KEYSkillSrcType).Value, out srcType); return((int)srcType); }).ThenBy(i => i.Attribute(KEYSkillCode).Value).ToList(); foreach (var item in lstRoot) { skillMemo = string.Empty; foreach (var xe in item.Descendants(KEYSkillEffects)) { effectMemo = string.Empty; foreach (var node in xe.Nodes().ToArray()) { if (node.NodeType == System.Xml.XmlNodeType.Comment) { effectMemo = ((XComment)node).Value; skillMemo += (string.IsNullOrEmpty(skillMemo) ? "" : ";") + effectMemo; node.Remove(); continue; } if (string.IsNullOrEmpty(effectMemo)) { continue; } if (node.NodeType == System.Xml.XmlNodeType.Element) { ((XElement)node).Add(new XAttribute(SharedData.KEYMemo, effectMemo)); } } } modelId = string.Empty; foreach (var xe in item.Descendants(KEYModelSeting)) { modelId += (string.IsNullOrEmpty(modelId) ? "" : ";") + xe.Attribute(KEYModelId).Value; } clipId = string.Empty; foreach (var xe in item.Descendants(KEYClipSetting)) { clipId += (string.IsNullOrEmpty(clipId) ? "" : ";") + xe.Attribute(KEYClipId).Value; } if (!string.IsNullOrEmpty(skillMemo)) { item.Add(new XAttribute(SharedData.KEYMemo, skillMemo)); } if (!string.IsNullOrEmpty(modelId)) { item.Add(new XAttribute(SharedData.KEYModelId, modelId)); } if (!string.IsNullOrEmpty(clipId)) { item.Add(new XAttribute(SharedData.KEYClipId, clipId)); } } root.RemoveAll(); root.Add(lstRoot.ToArray()); lstRoot.Clear(); return(root); }
public static XElement GenClientXml(XElement root) { var lstModels = new List <XElement>(); var lstClips = new List <XElement>(); int modelId = 0; int clipId = 0; EnumSkillSrcType asSkillType = EnumSkillSrcType.PlayerStar; string skillType = string.Empty; string skillCode = string.Empty; string skillName = string.Empty; int last = 0; foreach (var skill in root.Descendants(KEYSkill)) { skillType = GetAttributeValue(skill, KEYSkillSrcType); if (Enum.TryParse(skillType, out asSkillType)) { skillType = ((int)asSkillType).ToString(); } skillCode = GetAttributeValue(skill, KEYSkillCode); skillName = GetAttributeValue(skill, KEYSkillName); int.TryParse(GetAttributeValue(skill, "p.OpenClipId"), out clipId); if (clipId > 0) { lstClips.Add(GenClipElement(clipId, skillType, skillCode, skillName, clipId, string.Empty)); } foreach (var model in skill.Descendants("p.SrcModelSetting")) { if (!int.TryParse(GetAttributeValue(model, "p.ModelId"), out modelId)) { continue; } int.TryParse(GetAttributeValue(model, "p.ModelLast"), out last); lstModels.Add(GenModelElement(modelId, skillCode, skillName, modelId, last)); } foreach (var clip in skill.Descendants("p.ClipSetting")) { if (!int.TryParse(GetAttributeValue(clip, "p.ClipId"), out clipId)) { continue; } lstClips.Add(GenClipElement(clipId, skillType, skillCode, skillName, clipId, string.Empty)); } } lstModels.Add(GenModelElement(240, "root", "致命陷阱", 240, 0)); lstModels.Add(GenModelElement(241, "root", "致残", 241, 0)); lstModels.Add(GenModelElement(242, "root", "致伤", 242, 0)); lstModels.Add(GenModelElement(243, "root", "静止", 243, 0)); lstModels.Add(GenModelElement(244, "root", "倒地", 244, 0)); lstModels.Add(GenModelElement(245, "root", "困惑", 245, 0)); lstModels.Add(GenModelElement(246, "root", "晕眩", 246, 0)); lstModels.Add(GenModelElement(247, "root", "脱手", 247, 0)); lstModels.Add(GenModelElement(248, "root", "迷惑", 248, 0)); lstModels.Add(GenModelElement(249, "root", "沉默", 249, 0)); lstModels.Add(GenModelElement(251, "root", "复活", 251, 0)); var models = new XElement("Models", lstModels.OrderBy(i => Convert.ToInt32(GetAttributeValue(i, "ModelId"))).ToArray()); var clips = new XElement("Skills", lstClips.OrderBy(i => Convert.ToInt32(GetAttributeValue(i, "SkillId"))).ToArray()); return(new XElement("SkillClient", //new XComment("***模型列表***\r\nSkillName:技能名\r\nResId:动作资源Id\r\n" // + "Last:持续回合数,AS端备用,服务端有维护,即过了持续回合模型会消失;此处如有特殊模型的持续回合需要AS端写死,则可在此配置其他属性\r\n" // + "AS端可自行添加其他编程需要的属性"), models, //new XComment("***动画列表***\r\nSkillType:技能来源类型(天赋-7;意志-8;教练-9)\r\nSkillName:技能名\r\n" // + "ResId:动画资源Id\r\nMeta:意志组合的球员列表"), clips)); }