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); }
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); }
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); }
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)); } }