コード例 #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
ファイル: TeammemberCore.cs プロジェクト: cool8868/H5Nball
        public MessageCode BackSaveSolution(Guid managerId, NbSolutionEntity solution, int[] newPids, List <TeammemberEntity> members)
        {
            if (null == solution)
            {
                return(MessageCode.Success);
            }
            if (newPids.Length != SystemConstants.TeammemberCount)
            {
                return(MessageCode.TeammemberInvalidCount);
            }
            if (null == members)
            {
                members = MatchDataHelper.GetTeammembers(managerId, null, true);
            }
            List <int> tempPids     = new List <int>(newPids.Length);
            int        veteranCount = 0;
            int        orangeCount  = 0;
            int        combCount    = 0;

            foreach (var pId in newPids)
            {
                int id = ConvertHelper.ConvertToInt(pId);
                if (!members.Exists(d => d.PlayerId == id))
                {
                    return(MessageCode.TeammemberInvalidPlayer);
                }
                if (tempPids.Contains(id))
                {
                    return(MessageCode.TeammemberSolutionPlayerRepeat);
                }
                tempPids.Add(id);
                var player = CacheFactory.PlayersdicCache.GetPlayer(id);
                if (player.CardLevel == (int)EnumPlayerCardLevel.Gold || player.CardLevel == (int)EnumPlayerCardLevel.Silver)
                {
                    veteranCount++;
                }
                else if (player.CardLevel == (int)EnumPlayerCardLevel.Orange || player.CardLevel == (int)EnumPlayerCardLevel.BlackGold)
                {
                    orangeCount++;
                }
            }
            int veteranNumber = _maxVeteranCount;
            var manager       = NbManagerextraMgr.GetById(managerId);

            if (manager == null)
            {
                return(MessageCode.NbParameterError);
            }
            if (manager.VeteranNumber > _maxVeteranCount)
            {
                veteranNumber = manager.VeteranNumber;
            }
            if (veteranCount > veteranNumber)
            {
                return(MessageCode.TeammemberVeteranCountOver);
            }
            combCount = ManagerSkillCache.Instance().GetCombsNum(tempPids.ToArray());
            string playerString = string.Join(",", newPids);

            if (!TeammemberMgr.SaveSolution(managerId, solution.FormationId, playerString, veteranCount, orangeCount, combCount))
            {
                return(MessageCode.NbUpdateFail);
            }
            //DeleteSolutionCache(managerId, true);
            return(MessageCode.Success);
        }
コード例 #3
0
        public void GetMembers(out DTOBuffMemberView homeData, out DTOBuffMemberView awayData, string homeSiteId, Guid homeId, bool isHomeNpc, string awaySiteId, Guid awayId, ArenaTeammemberFrame homeFrame, ArenaTeammemberFrame awayFrame, bool isAwayNpc, bool syncHomeFlag = true, bool syncAwayFlag = false)
        {
            var buffPack = new DTOBuffPack();

            if (isHomeNpc)
            {
                syncHomeFlag = false;
                homeData     = CloneBuffView(NpcdicCache.Instance.GetBuffView(homeId), true);
            }
            else
            {
                homeData = GetMembersCore(buffPack, true, homeId, homeFrame, syncHomeFlag, homeSiteId);
            }
            if (isAwayNpc)
            {
                syncAwayFlag = false;
                awayData     = CloneBuffView(NpcdicCache.Instance.GetBuffView(awayId), true);
            }
            else
            {
                awayData = GetMembersCore(buffPack, false, awayId, awayFrame, syncAwayFlag, awaySiteId);
            }
            string antiTalentSkill;

            if (ManagerSkillCache.Instance().TryGetAntiTanlent(out antiTalentSkill, homeData.TalentType, awayData.TalentType))
            {
                if (null == homeData.ReadySkillList)
                {
                    homeData.ReadySkillList = new List <string>(2);
                }
                homeData.ReadySkillList.Add(antiTalentSkill);
            }
            if (ManagerSkillCache.Instance().TryGetAntiTanlent(out antiTalentSkill, awayData.TalentType, homeData.TalentType))
            {
                if (null == awayData.ReadySkillList)
                {
                    awayData.ReadySkillList = new List <string>(2);
                }
                awayData.ReadySkillList.Add(antiTalentSkill);
            }
            int cntHome = 0;
            int cntAway = 0;

            if (null != homeData.ReadySkillList)
            {
                cntHome = homeData.ReadySkillList.Count;
            }
            if (null != awayData.ReadySkillList)
            {
                cntAway = awayData.ReadySkillList.Count;
            }
            if (cntHome == 0 && cntAway == 0)
            {
                return;
            }
            if (isHomeNpc)
            {
                FillBuffPack(buffPack, true, homeData.BuffPlayers);
            }
            else
            {
                FillBuffPack(buffPack, true, homeId, homeFrame, null, homeSiteId);
            }
            if (isAwayNpc)
            {
                FillBuffPack(buffPack, false, awayData.BuffPlayers);
            }
            else
            {
                FillBuffPack(buffPack, false, awayId, awayFrame, null, awaySiteId);
            }
            BuffFlowFacade.ProcManagerBuff(buffPack, true, homeData.ReadySkillList, true);
            BuffFlowFacade.ProcManagerBuff(buffPack, false, awayData.ReadySkillList, true);
            FillBuffView(homeData, buffPack, true, true, 2);
            FillBuffView(awayData, buffPack, false, true, 2);
        }
コード例 #4
0
ファイル: TeammemberCore.cs プロジェクト: cool8868/H5Nball
        public NBSolutionInfoResponse SaveSolution(Guid managerId, int formationId, string playerString, bool hasTask)
        {
            var solution = MatchDataHelper.GetSolution(managerId);

            if (solution == null)
            {
                return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>());
            }

            bool isChangePlayer = solution.PlayerString != playerString;

            string[] pIds = playerString.Split(',');
            if (pIds.Length != SystemConstants.TeammemberCount)
            {
                return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberInvalidCount));
            }
            var formation = CacheFactory.FormationCache.GetFormation(formationId);

            if (formation == null)
            {
                return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>());
            }

            var        teammembers  = MatchDataHelper.GetTeammembers(managerId, null, true);
            List <int> tempPids     = new List <int>(pIds.Length);
            int        veteranCount = 0;
            int        orangeCount  = 0;
            int        combCount    = 0;

            foreach (var pId in pIds)
            {
                int id = ConvertHelper.ConvertToInt(pId);
                if (!teammembers.Exists(d => d.PlayerId == id))
                {
                    return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberInvalidPlayer));
                }
                if (tempPids.Contains(id))
                {
                    return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat));
                }
                tempPids.Add(id);
                var player = CacheFactory.PlayersdicCache.GetPlayer(id);
                if (player.CardLevel == (int)EnumPlayerCardLevel.Gold || player.CardLevel == (int)EnumPlayerCardLevel.Silver)
                {
                    veteranCount++;
                }
                else if (player.CardLevel == (int)EnumPlayerCardLevel.Orange || player.CardLevel == (int)EnumPlayerCardLevel.BlackGold)
                {
                    orangeCount++;
                }
            }
            foreach (var tempPid in tempPids)
            {
                var linkList = CacheFactory.PlayersdicCache.GetLinkPlayerList(tempPid);
                if (linkList != null)
                {
                    foreach (var link in linkList)
                    {
                        if (tempPids.Exists(d => d == link))
                        {
                            return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat));
                        }
                    }
                }
            }
            int veteranNumber = _maxVeteranCount;
            var manager       = NbManagerextraMgr.GetById(managerId);

            if (manager == null)
            {
                return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbParameterError));
            }
            if (manager.VeteranNumber > _maxVeteranCount)
            {
                veteranNumber = manager.VeteranNumber;
            }
            if (veteranCount > veteranNumber)
            {
                return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberVeteranCountOver));
            }
            combCount = ManagerSkillCache.Instance().GetCombsNum(tempPids.ToArray());
            if (TeammemberMgr.SaveSolution(managerId, formationId, playerString, veteranCount, orangeCount, combCount))
            {
                DeleteSolutionCache(managerId, true);
                ActivityExThread.Instance.TememberColect(managerId, 3, orangeCount);
                var response = SolutionAndTeammemberResponse(managerId);
                if (hasTask && isChangePlayer)
                {
                    var pop = TaskHandler.Instance.SolutionChangePlayer(managerId);
                    if (response.Data != null)
                    {
                        response.Data.PopMsg = pop;
                    }
                }
                return(response);
            }
            else
            {
                return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbUpdateFail));
            }
        }