示例#1
0
        public static List <string>[] GetManagerSkillList(Guid managerId, ManagerSkillUseWrap use, string siteId = "")
        {
            var lstAll = new List <string>();
            var lib    = ManagerUtil.GetSkillLibWrap(managerId, siteId);

            FixTalents(use, lib, siteId);
            lstAll.AddRange(lib.LowWills.Keys);
            lstAll.AddRange(use.SetWills.Keys);
            lstAll.AddRange(lib.NodoTalents.Keys);
            if (!string.IsNullOrEmpty(use.Raw.CoachSkill))
            {
                lstAll.Add(use.Raw.CoachSkill);
            }
            //var combs = ManagerSkillCache.Instance().CheckCombs(use.SetWills.Keys, use.OnPids);
            //var combs = ManagerSkillCache.Instance().CheckCombs(use.OnPids);
            //if (null != combs)
            //    lstAll.AddRange(combs);
            var clubSkills = ManagerSkillCache.Instance().CheckClubSkills(use.OnPids);

            if (null != clubSkills)
            {
                lstAll.AddRange(clubSkills);
            }
            var rankSkills = BuffCache.Instance().GetRankedSkillList(lstAll);
            //if (null != combs)
            //    rankSkills[1].AddRange(combs);
            var skills = use.ManagerSkills;

            skills[0] = rankSkills[0];
            skills[1] = rankSkills[1];
            skills[2] = rankSkills[2];
            return(skills);
        }
示例#2
0
        DTOBuffMemberView GetMembers4Db(Guid managerId, ManagerSkillUseWrap use, ArenaTeammemberFrame arenaFrame)
        {
            if (!FrameConfig.SWAPBuffDataReadDb ||
                null == use || use.Raw.SyncFlag != 0)
            {
                return(null);
            }
            var rawMembers = BuffUtil.GetRawMembers(managerId, true, arenaFrame);
            var members    = NbManagerbuffmemberMgr.GetByMid(managerId, ShareUtil.GetTableMod(managerId));
            //var extra = NbManagerextraMgr.GetById(managerId);
            var             dic = new Dictionary <Guid, NbManagerbuffmemberEntity>(members.Count);
            DicPlayerEntity cfg = null;

            foreach (var item in members)
            {
                cfg = PlayersdicCache.Instance.GetPlayer(Math.Abs(item.Pid));
                if (null == cfg)
                {
                    continue;
                }
                FillBuffMemberProp(item, cfg);
                item.ReadySkillList = item.ReadySkills.Split(',').ToList();
                item.LiveSkillList  = item.LiveSkills.Split(',').ToList();
            }
            var data = CreateBuffView(managerId, use, rawMembers.ToDictionary(i => i.Idx, i => i));

            data.Kpi          = arenaFrame.Kpi;
            data.SyncIdleFlag = false;
            data.BuffMembers  = dic;
            return(data);
        }
示例#3
0
        DTOBuffMemberView GetMembers4Mem(out ManagerSkillUseWrap use, out DTOBuffPoolView poolView, Guid managerId, string siteId, ArenaTeammemberFrame arenaFrame)
        {
            use      = ManagerUtil.GetSkillUseWrap(managerId, siteId);
            poolView = BuffPoolCore.Instance().GetRawPools(managerId, siteId, true);
            bool syncFlag = true;

            if (FrameConfig.SWAPBuffDisableCrossCache && !string.IsNullOrEmpty(siteId))
            {
                syncFlag = false;
            }
            ulong    verNo = use.VersionNo;
            DateTime dtNow = DateTime.Now;

            if (verNo == 0 || dtNow >= poolView.SyncTime)
            {
                if (syncFlag)
                {
                    s_buffSync.SyncBuffPools(managerId, siteId);
                }
                return(null);
            }
            var data = s_memBuffMember.Get <DTOBuffMemberView>(arenaFrame.ArenaType.ToString() + managerId.ToString());

            if (null != data &&
                data.UseSyncVersion == verNo &&
                data.PoolSyncTime == poolView.SyncTime &&
                data.PoolSyncVersion == poolView.SyncVersion)
            {
                return(data);
            }
            return(null);
        }
示例#4
0
        static void FixTalents(ManagerSkillUseWrap use, ManagerSkillLibWrap lib, string siteId)
        {
            bool needFix = false;

            foreach (var item in lib.NodoTalents)
            {
                if (!item.Key.Contains('_'))
                {
                    needFix = true;
                    break;
                }
            }
            if (!needFix)
            {
                foreach (var item in lib.TodoTalents)
                {
                    if (!item.Key.Contains('_'))
                    {
                        needFix = true;
                        break;
                    }
                }
            }
            if (needFix)
            {
                var skills = NbManagertreeMgr.GetByManagerId(use.Raw.ManagerId, siteId);
                foreach (var item in skills)
                {
                    if (lib.NodoTalents.ContainsKey(item.SkillCode))
                    {
                        lib.NodoTalents.Remove(item.SkillCode);
                        lib.NodoTalents[item.SkillCode + "_" + item.Points] = 0;
                    }
                    if (lib.TodoTalents.ContainsKey(item.SkillCode))
                    {
                        lib.TodoTalents.Remove(item.SkillCode);
                        lib.TodoTalents[item.SkillCode + "_" + item.Points] = 0;
                    }
                }
            }
            for (int i = 0; i < use.SetTalents.Length; i++)
            {
                if (string.IsNullOrEmpty(use.SetTalents[i]))
                {
                    continue;
                }
                foreach (var todoSkill in lib.TodoTalents)
                {
                    if (todoSkill.Key.StartsWith(use.SetTalents[i], true, System.Globalization.CultureInfo.InvariantCulture))
                    {
                        use.SetTalents[i] = todoSkill.Key;
                        break;
                    }
                }
            }
        }
示例#5
0
        public static void FillLiveSkillList(ManagerSkillUseWrap use, List <string> liveSkills)
        {
            if (null == use || null == liveSkills || liveSkills.Count == 0)
            {
                return;
            }
            var skills = use.ManagerSkills;

            skills[1].AddRange(liveSkills);
        }
示例#6
0
        DTOBuffMemberView CreateBuffView(Guid managerId, ManagerSkillUseWrap use, Dictionary <Guid, TeammemberEntity> rawMembers)
        {
            var mSkills = use.ManagerSkills;
            var obj     = new DTOBuffMemberView();

            obj.CreateTime     = DateTime.Now;
            obj.SyncIdleFlag   = true;
            obj.UseSyncVersion = use.VersionNo;
            obj.ReadySkillList = mSkills[0];
            obj.LiveSkillList  = mSkills[1];
            obj.FirmSkillList  = mSkills[2];
            obj.SubSkills      = use.SetTalents;
            obj.RawMembers     = rawMembers;
            return(obj);
        }