Example #1
0
 /// <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;
     }
 }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }