/// <summary> /// 获取阵型,计算阵型等级,和球员位置,技能 /// </summary> /// <param name="arenaTeammemberFrame"></param> /// <returns></returns> public static NbSolutionEntity GetArenaSolution(ArenaTeammemberFrame arenaTeammemberFrame) { var cacheKey = arenaTeammemberFrame.ArenaType.ToString() + arenaTeammemberFrame.ManagerId.ToString(); var entity = MemcachedFactory.ArenaSolutionClient.Get <NbSolutionEntity>(cacheKey); if (entity == null) { entity = NbSolutionMgr.GetById(arenaTeammemberFrame.ManagerId, arenaTeammemberFrame.ZoneName); if (entity == null) { return(null); } entity.FormationId = arenaTeammemberFrame.SolutionId; var formationData = new FormationDataListEntity(entity.FormationData); entity.FormationLevel = formationData.GetLevel(entity.FormationId); var formationDetails = CacheFactory.FormationCache.GetFormationDetail(entity.FormationId); var playerIdList = arenaTeammemberFrame.PlayerList; var skillList = arenaTeammemberFrame.SkillList; entity.PlayerDic = new Dictionary <int, SolutionPlayerEntity>(playerIdList.Count); for (int i = 0; i < playerIdList.Count; i++) { if (playerIdList[i] == 0) { continue; } entity.PlayerDic.Add(playerIdList[i], MatchDataUtil.BuildSolutionPlayer(playerIdList, formationDetails, playerIdList[i], skillList[i])); } entity.PlayerString = arenaTeammemberFrame.PlayerString; entity.SkillString = arenaTeammemberFrame.SkillString; MemcachedFactory.ArenaSolutionClient.Set(cacheKey, entity); } return(entity); }
void BindData() { var accountData = Master.GetAccount(); if (accountData == null) { Master.ShowMessage("请先选择经理."); return; } ClearData(); var solution = NbSolutionMgr.GetById(accountData.ManagerId, accountData.ZoneId); if (solution == null) { Master.ShowMessage("没有数据."); return; } var teammembers = TeammemberMgr.GetByManager(accountData.ManagerId, accountData.Mod, accountData.ZoneId); if (teammembers != null) { foreach (var teammember in teammembers) { teammember.Name = AdminCache.Instance.GetPlayerName(teammember.PlayerId); teammember.IsMain = solution.PlayerString.Contains(teammember.PlayerId.ToString()); } datagrid1.DataSource = teammembers; datagrid1.DataBind(); } }
/// <summary> /// 获取阵型,计算阵型等级,和球员位置,技能 /// </summary> /// <param name="managerId"></param> /// <returns></returns> public static NbSolutionEntity GetSolution(Guid managerId, string siteId = "") { bool memFlag = string.IsNullOrEmpty(siteId); NbSolutionEntity entity = null; if (memFlag) { entity = MemcachedFactory.SolutionClient.Get <NbSolutionEntity>(managerId); } if (entity == null) { entity = NbSolutionMgr.GetById(managerId, siteId); if (entity == null) { return(null); } var formationData = new FormationDataListEntity(entity.FormationData); entity.FormationLevel = formationData.GetLevel(entity.FormationId); var formationDetails = CacheFactory.FormationCache.GetFormationDetail(entity.FormationId); var playerIdList = FrameUtil.CastIntList(entity.PlayerString, ','); ////获取租借球员str,如果与实际阵容的str不同,就用虚拟的替换当前的,不改变实际阵容的str //var virtualPlayerIdList = FrameUtil.CastIntList(entity.HirePlayerString, ','); //for (int i = 0; i < playerIdList.Count; i++) //{ // for (int j = 0; j < virtualPlayerIdList.Count; j++) // { // if (playerIdList[i] != virtualPlayerIdList[j] && virtualPlayerIdList[j] != 0) // { // playerIdList[i] = virtualPlayerIdList[j]; // } // } //} var skillList = new string[11]; if (!string.IsNullOrEmpty(entity.SkillString)) { skillList = entity.SkillString.Split(','); } entity.PlayerDic = new Dictionary <int, SolutionPlayerEntity>(playerIdList.Count); for (int i = 0; i < playerIdList.Count; i++) { entity.PlayerDic.Add(playerIdList[i], MatchDataUtil.BuildSolutionPlayer(playerIdList, formationDetails, playerIdList[i], skillList[i])); } if (memFlag) { MemcachedFactory.SolutionClient.Set(managerId, entity); } } return(entity); }
public List <NbManagerbuffpoolEntity> CheckTeamBuffPools(Guid mid, string siteId = "") { var form = MemcachedFactory.SolutionClient.Get <NbSolutionEntity>(mid); if (null == form) { form = NbSolutionMgr.GetById(mid, siteId); } if (null == form) { return(null); } var pids = FrameUtil.CastIntList(form.PlayerString, ','); string club = string.Empty; string nation = string.Empty; DicPlayerEntity cfg = null; foreach (int pid in pids) { cfg = PlayersdicCache.Instance.GetPlayer(pid); if (null == cfg) { continue; } if (club == string.Empty) { club = cfg.Club; } if (nation == string.Empty) { nation = cfg.Nationality; } if (null != club && cfg.Club != club) { club = null; } if (null != nation && cfg.Nationality != nation) { nation = null; } } if (null != club || null != nation) { return(BuffCache.Instance().GenManagerPoolList(SKILLTeamBuff)); } return(null); }
/// <summary> /// 设置阵型id /// </summary> /// <param name="managerId"></param> /// <param name="formationId"></param> /// <returns></returns> public SetFormationResponse SetFormation(Guid managerId, int formationId) { var response = new SetFormationResponse(); response.Data = new Entity.SetFormation(); var solution = GetSolution(managerId); solution.FormationId = formationId; if (NbSolutionMgr.Update(solution)) { MatchDataCacheHelper.DeleteSolutionCache(managerId, true); response.Data.SolutionInfo = SolutionAndTeammemberResponse(managerId).Data; response.Data.Package = ItemCore.Instance.GetPackageResponse(managerId).Data; } else { return(ResponseHelper.Create <SetFormationResponse>(MessageCode.NbUpdateFail)); } return(response); }
/// <summary> /// 替换上场 /// </summary> /// <param name="managerId"></param> /// <param name="teammemberId"></param> /// <param name="byTeammemberId"></param> /// <returns></returns> public NBSolutionInfoResponse ReplacePlayer(Guid managerId, Guid teammemberId, Guid byTeammemberId) { bool isChanagePlayer = false; try { ItemPackageFrame package = null; MessageCode messCode = MessageCode.Success; var soluti = MatchDataHelper.GetSolution(managerId); if (soluti == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } var byteammember = GetTeammember(managerId, byTeammemberId); if (byteammember == null || !soluti.PlayerDic.ContainsKey(byteammember.PlayerId)) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.TeammemberNotMain)); } var teammember = GetTeammember(managerId, teammemberId); var playerString = ""; var playerIdList = FrameUtil.CastIntList(soluti.PlayerString, ','); if (teammember != null) { ExchangePlayer(playerIdList, teammember.PlayerId, byteammember.PlayerId, false, ref playerString); soluti.PlayerString = playerString; if (!NbSolutionMgr.Update(soluti)) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.NbUpdateFail)); } MemcachedFactory.SolutionClient.Delete(managerId); KpiHandler.Instance.RebuildKpi(managerId, true); var manager = MatchDataHelper.GetManager(managerId, true, true); if (manager == null) { return(ResponseHelper.Create <NBSolutionInfoResponse>((int)MessageCode.NbParameterError)); } var response1 = SolutionAndTeammemberResponse(managerId); return(response1); //换位置 } else //换替补 { isChanagePlayer = true; package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.TeammemberTrans); if (package == null) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.NbNoPackage)); } var player = package.GetPlayer(teammemberId); if (player.ItemType != (int)EnumItemType.PlayerCard) { return(ResponseHelper.Exception <NBSolutionInfoResponse>()); } player.IsDeal = false; var itemInfo = CacheFactory.ItemsdicCache.GetItem(player.ItemCode); //限制金卡 if (itemInfo != null && itemInfo.ItemType == (int)EnumItemType.PlayerCard && itemInfo.PlayerCardLevel == (int)EnumPlayerCardLevel.Gold) { var solution = MatchDataHelper.GetSolutionInfo(managerId); if (solution == null) { return(ResponseHelper.InvalidParameter <NBSolutionInfoResponse>()); } if (solution.MaxVeteranCount <= solution.VeteranCount) { return (ResponseHelper.Create <NBSolutionInfoResponse>( (int)MessageCode.TeammemberVeteranCountOver)); } } var pid = player.ItemCode % 100000; //检查是否已有相同pid的球员 var linkList = CacheFactory.PlayersdicCache.GetLinkPlayerList(pid); if (linkList != null) { foreach (var link in linkList) { if (playerIdList.Exists(d => d == link)) { return(ResponseHelper.Create <NBSolutionInfoResponse>(MessageCode.TeammemberSolutionPlayerRepeat)); } } } int teammemberCount = 0; int returnCode = 0; TeammemberMgr.GetForTransCheck(managerId, pid, ShareUtil.GetTableMod(managerId), (int)MessageCode.TeammemberRepeat, ref teammemberCount, ref returnCode); if (returnCode != (int)MessageCode.Success) { return(ResponseHelper.Create <NBSolutionInfoResponse>(returnCode)); } messCode = package.ReplacePlayerCard(100000 + byteammember.PlayerId, false, byteammember.Strength, byteammember.Idx, byteammember.Equipment, player.ItemId, byteammember.Level); ExchangePlayer(playerIdList, pid, byteammember.PlayerId, true, ref playerString); soluti.PlayerString = playerString; if (messCode != MessageCode.Success) { return(ResponseHelper.Create <NBSolutionInfoResponse>(messCode)); } } using (var transactionManager = new TransactionManager(Dal.ConnectionFactory.Instance.GetDefault())) { transactionManager.BeginTransaction(); messCode = MessageCode.NbUpdateFail; do { if (package != null) { if (!package.SavePlayer(transactionManager.TransactionObject)) { break; } } if (!NbSolutionMgr.Update(soluti, transactionManager.TransactionObject)) { break; } messCode = MessageCode.Success; } while (false); if (messCode == MessageCode.Success) { transactionManager.Commit(); MemcachedFactory.TeammembersClient.Delete(managerId); MemcachedFactory.SolutionClient.Delete(managerId); package.Shadow.Save(); int orangeCount = 0; string[] pIds = playerString.Split(','); foreach (var pId in pIds) { int id = ConvertHelper.ConvertToInt(pId); var player = CacheFactory.PlayersdicCache.GetPlayer(id); if (player.CardLevel == (int)EnumPlayerCardLevel.Orange) { orangeCount++; } } ActivityExThread.Instance.TememberColect(managerId, 3, orangeCount); } else { transactionManager.Rollback(); return(ResponseHelper.Create <NBSolutionInfoResponse>(messCode)); } } } catch (Exception ex) { SystemlogMgr.Error("替换球员上场", ex); } KpiHandler.Instance.RebuildKpi(managerId, true); var response = SolutionAndTeammemberResponse(managerId); if (isChanagePlayer) { var pop = TaskHandler.Instance.SolutionChangePlayer(managerId); if (response.Data != null) { response.Data.PopMsg = pop; } } return(response); }
void BindData() { var accountData = Master.GetAccount(); if (accountData == null) { Master.ShowMessage("请先选择经理."); return; } var manager = NbManagerMgr.GetById(accountData.ManagerId, accountData.ZoneId); if (manager == null) { Master.ShowMessage("获取经理信息失败."); return; } ClearData(); lblCoin.Text = manager.Coin.ToString(); lblExp.Text = manager.EXP.ToString(); lblLevel.Text = manager.Level.ToString(); lblLogo.Text = manager.Logo.ToString(); lblName.Text = manager.Name; lblReiki.Text = manager.Reiki.ToString(); lblSophisticate.Text = manager.Sophisticate.ToString(); lblStatus.Text = CacheDataHelper.Instance.GetEnumDescription("EnumManagerStatus", manager.Status); lblSubstitute.Text = (manager.TeammemberMax - 11).ToString(); lblVipLevel.Text = manager.VipLevel.ToString(); var payAccount = PayUserMgr.GetById(accountData.Account, accountData.ZoneId); if (payAccount != null) { lblCash.Text = payAccount.TotalCash.ToString(); lblPoint.Text = string.Format("{0}+{1}(赠送)={2}", payAccount.Point, payAccount.Bonus, payAccount.TotalPoint); } var user = NbUserMgr.GetById(accountData.Account, accountData.ZoneId); if (user != null) { lblLastLoginTime.Text = user.LastLoginTime.ToString(AdminMgr.TimeFormat); lblRegisterTime.Text = user.RowTime.ToString(AdminMgr.TimeFormat); lblLoginday.Text = user.ContinuingLoginDay.ToString(); } var onlineEntity = OnlineInfoMgr.GetById(accountData.ManagerId, accountData.ZoneId); if (onlineEntity != null) { lblOnlineStatus.Text = onlineEntity.IsOnline ? "在线" : "不在线"; var total = onlineEntity.RealTotalMinutes; var day = total / 1440; var hour = (total % 1440) / 60; var minute = ((total % 1440) % 60); lblOnlineTotal.Text = string.Format("{0} 天 {1} 小时 {2} 分钟", day, hour, minute); lblOnlineCur.Text = onlineEntity.TodayMinutes + " 分钟"; } else { lblOnlineStatus.Text = "无记录"; } var solution = NbSolutionMgr.GetById(accountData.ManagerId, accountData.ZoneId); string playerString = ""; if (solution != null) { var formation = CacheFactory.FormationCache.GetFormation(solution.FormationId); lblSolution.Text = formation == null?solution.FormationId.ToString() : formation.Name; lblSolutionPlayer.Text = solution.PlayerString; lblSolutionSkill.Text = solution.SkillString; playerString = solution.PlayerString; } var managerExtra = NbManagerextraMgr.GetById(accountData.ManagerId, accountData.ZoneId); if (managerExtra != null) { ManagerUtil.CalCurrentStamina(managerExtra, manager.Level, manager.VipLevel); lblStamina.Text = managerExtra.Stamina.ToString(); } var teammembers = TeammemberMgr.GetByManager(accountData.ManagerId, accountData.Mod, accountData.ZoneId); if (teammembers != null) { foreach (var teammember in teammembers) { teammember.Name = AdminCache.Instance.GetPlayerName(teammember.PlayerId); teammember.IsMain = playerString.Contains(teammember.PlayerId.ToString()); } datagrid1.DataSource = teammembers; datagrid1.DataBind(); } var list = FriendinviteMgr.InviteManagerList(manager.Account, accountData.ZoneId); if (list != null) { var friendInviteString = ""; foreach (var item in list) { friendInviteString += item.Name + ","; } lblFriendInvite.Text = friendInviteString; } }