private bool UpdateWincountRecord(Guid managerId, int leagueId, int starNumber, ref LeagueWincountrecordEntity leagueWincountRecord) { if (leagueWincountRecord == null) { leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); } leagueWincountRecord.MaxWinCount += starNumber; var winConfig = CacheFactory.LeagueCache.GetLeagueStar(leagueId); var prizeStatus = leagueWincountRecord.PrizeStep.Split(','); for (int i = 0; i < winConfig.Count; i++) { if (prizeStatus.Length < i + 1) { prizeStatus[i] = "0"; } if (leagueWincountRecord.MaxWinCount >= winConfig[i].StarNumber) { if (prizeStatus[i] == "0") { prizeStatus[i] = "1"; } } } leagueWincountRecord.PrizeStep = string.Join(",", prizeStatus); leagueWincountRecord.UpdateTime = DateTime.Now; return(true); }
/// <summary> /// 获取联赛情况 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <param name="currectLeague"></param> /// <returns></returns> public GetLeagueInfoResponse GetLeagueInfo(Guid managerId, int leagueId, LeagueManagerrecordEntity currectLeague) { try { if (currectLeague == null) { currectLeague = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId); } if (currectLeague == null) { SystemlogMgr.Error("获取联赛信息", "经理联赛记录未找到ManagerId:" + managerId); return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>()); } var leagueRecord = LeagueRecordMgr.GetById(currectLeague.LeagueRecordId); //获取胜场 var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, currectLeague.LaegueId); var winConfig = CacheFactory.LeagueCache.GetLeagueStar(leagueId); var winList = new List <LeagueWinCountInfo>(); var prizeStatus = leagueWincountRecord.PrizeStep.Split(','); foreach (var item in winConfig) { LeagueWinCountInfo entity = new LeagueWinCountInfo(); entity.PrizeLevel = item.PrizeLevel; if (prizeStatus.Length >= item.PrizeLevel) { entity.PrizeStatus = ConvertHelper.ConvertToInt(prizeStatus[item.PrizeLevel - 1]); } winList.Add(entity); } //获取排名 var leagueFightMap = new LeagueFightMapFrame(managerId); int myRank = 0; int myScore = 0; var rankList = leagueFightMap.GetRank(ref myRank, ref myScore); var response = ResponseHelper.CreateSuccess <GetLeagueInfoResponse>(); response.Data = new LeagueInfoEntity(); if (leagueRecord.Schedule > currectLeague.MaxWheelNumber) { response.Data.IsHaveReturnMain = true; leagueRecord.Schedule = currectLeague.MaxWheelNumber; } response.Data.LeagueInfo = currectLeague; response.Data.MyWinCount = leagueWincountRecord.MaxWinCount; response.Data.LeagueRecord = leagueRecord; response.Data.LeagueWincountRecord = winList; response.Data.MyRank = myRank; response.Data.RankList = rankList; response.Data.IsHaveStartLeague = true; return(response); } catch (Exception ex) { SystemlogMgr.Error("联赛-获取联赛信息", ex); return(ResponseHelper.InvalidParameter <GetLeagueInfoResponse>()); } }
public LeagueWincountrecordResponse GetWincountPrizeInfo(Guid managerId, int leagueId) { var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); if (leagueWincountRecord == null) { return(ResponseHelper.InvalidParameter <LeagueWincountrecordResponse>()); } var response = ResponseHelper.CreateSuccess <LeagueWincountrecordResponse>(); response.Data = leagueWincountRecord; return(response); }
/// <summary> /// 重置联赛 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <returns></returns> public MessageCodeResponse ResetLeague(Guid managerId, int leagueId) { var currectLeague = LeagueManagerrecordMgr.GetManagerMarkInfo(managerId, leagueId); if (currectLeague == null) { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError)); } var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); if (leagueWincountRecord != null) { //获取所有奖励 var winPrize = CacheFactory.LeagueCache.GetLeagueStar(leagueId); if (winPrize == null || winPrize.Count <= 0) { return(ResponseHelper.InvalidParameter <MessageCodeResponse>()); } var prizeStatus = leagueWincountRecord.PrizeStep.Split(','); foreach (var item in prizeStatus) { if (item == "1") { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.LeaguePrizeNotGet)); } } } int price = 50; if (currectLeague.IsPass) { price = 0; } int point = PayCore.Instance.GetPoint(managerId); if (point < price) //重置联赛消耗点券数 { return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbPointShortage)); } var code = LeagueProcess.Instance.ResetLeague(managerId, leagueId, price); return(ResponseHelper.Create <MessageCodeResponse>(code)); }
/// <summary> /// 开启一个新的联赛 /// </summary> /// <param name="managerId"></param> /// <param name="leagueId"></param> /// <param name="leagueManagerRecord"></param> /// <returns></returns> public MessageCode StartLeague(Guid managerId, int leagueId, ref LeagueManagerrecordEntity leagueManagerRecord) { var recordList = LeagueManagerrecordMgr.GetManagerAllMark(managerId); foreach (var record in recordList) { if (record.LaegueId == leagueId) { leagueManagerRecord = record; } if (record.IsStart) { return(MessageCode.LeagueHasStart); } } if (leagueManagerRecord == null) { return(MessageCode.NbParameterError); } if (leagueManagerRecord.IsLock) { return(MessageCode.LeagueIdMarkNotLock); } #region 去掉等级限制 //var openLevel= LeagueCache.Instance.GetLeagueOpenLevel(leagueId); //if (openLevel == -1) // return MessageCode.NbParameterError; //var manager = ManagerCore.Instance.GetManager(managerId); //if(manager==null) // return MessageCode.NbParameterError; //if(manager.Level<openLevel) // return MessageCode.LeagueIdMarkNotLock; #endregion DateTime date = DateTime.Now; var leagueRecordId = ShareUtil.GenerateComb(); leagueManagerRecord.LeagueRecordId = leagueRecordId; //info.LastPrizeLeagueRecordId = new Guid(); leagueManagerRecord.IsPass = false; leagueManagerRecord.IsStart = true; leagueManagerRecord.MatchNumber = 0; leagueManagerRecord.Score = 0; leagueManagerRecord.WinNumber = 0; leagueManagerRecord.FlatNumber = 0; leagueManagerRecord.LoseNumber = 0; leagueManagerRecord.GoalsNumber = 0; leagueManagerRecord.FumbleNumber = 0; leagueManagerRecord.UpdateTime = date; var npcCount = CacheFactory.LeagueCache.GetTeamCount(leagueId); var templateId = CacheFactory.LeagueCache.GetTemplateId(npcCount + 1); leagueManagerRecord.MaxWheelNumber = npcCount * 2;//总轮数 leagueManagerRecord.FightDicId = templateId; LeagueRecordEntity entity = new LeagueRecordEntity(leagueRecordId, managerId, leagueId, 1, 0, 0, false, date, date, ShareUtil.BaseTime); entity.Idx = leagueRecordId; entity.ManagerId = managerId; entity.LaegueId = leagueId; entity.IsSend = false; entity.Rank = -1; entity.RowTime = date; entity.Schedule = 1; entity.UpdateTime = date; entity.Score = 0; var leagueWinCount = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); if (leagueWinCount != null) { if (leagueWinCount.PrizeDate.Date != DateTime.Now.Date) { leagueWinCount.WinCount1Status = 0; leagueWinCount.WinCount2Status = 0; leagueWinCount.WinCount3Status = 0; leagueWinCount.UpdateTime = DateTime.Now; leagueWinCount.PrizeDate = DateTime.Now; leagueWinCount.PrizeStep = "0,0,0,0,0"; } leagueWinCount.MaxWinCount = 0; } //更新当前联赛记录 if (!LeagueManagerrecordMgr.Update(leagueManagerRecord)) { return(MessageCode.FailUpdate); } if (!LeagueRecordMgr.Insert(entity)) { return(MessageCode.FailUpdate); } var figMap = new LeagueFightMapFrame(managerId); figMap.ClearFightMapStartLeague(npcCount + 1); if (leagueWinCount != null) { if (!LeagueWincountrecordMgr.Update(leagueWinCount)) { return(MessageCode.FailUpdate); } } return(MessageCode.Success); }
public LeaguePrizeResponse GetWincountPrize(Guid managerId, int leagueId, int countType) { var leagueWincountRecord = LeagueWincountrecordMgr.GetRecord(managerId, leagueId); if (leagueWincountRecord == null) { return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>()); } //获取所有奖励 var winPrize = CacheFactory.LeagueCache.GetLeagueStar(leagueId); if (winPrize == null || winPrize.Count <= 0) { return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>()); } //获取这一档的奖励 var prizeInfo = winPrize.Find(r => r.PrizeLevel == countType); if (prizeInfo == null) { return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>()); } var prizeStatus = leagueWincountRecord.PrizeStep.Split(','); if (prizeStatus.Length < countType || prizeStatus[countType - 1] == "0") { return(ResponseHelper.Create <LeaguePrizeResponse>(MessageCode.LeagueWincountPrizeCannotReceive)); } if (prizeStatus[countType - 1] == "2") { return(ResponseHelper.Create <LeaguePrizeResponse>(MessageCode.LeagueWincountPrizeReceived)); } prizeStatus[countType - 1] = "2"; var package = ItemCore.Instance.GetPackage(managerId, EnumTransactionType.LeaguePrize); if (package == null) { return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>()); } int point = 0; int coin = 0; NbManagerEntity manager = null; if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Item) //道具 { var result = package.AddItems(prizeInfo.SubType, prizeInfo.Count, 1, false, false); if (result != MessageCode.Success) { return(ResponseHelper.Create <LeaguePrizeResponse>(result)); } } else if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Point) { point = prizeInfo.Count; } else if (prizeInfo.PrizeType == (int)EnumActivityExPrizeType.Coin) { coin += prizeInfo.Count; manager = ManagerCore.Instance.GetManager(managerId); if (manager == null) { return(ResponseHelper.InvalidParameter <LeaguePrizeResponse>()); } } leagueWincountRecord.PrizeStep = string.Join(",", prizeStatus); leagueWincountRecord.UpdateTime = DateTime.Now; //获取奖励 var prizeInfoResponse = new LeaguePrizeEntity() { PrizeType = prizeInfo.PrizeType, Count = prizeInfo.Count }; var code = SaveWincountPrize(manager, leagueWincountRecord, package, point, coin); if (code != MessageCode.Success) { return(ResponseHelper.Create <LeaguePrizeResponse>(code)); } var response = ResponseHelper.CreateSuccess <LeaguePrizeResponse>(); response.Data = new LeaguePrizes() { PrizeList = new List <LeaguePrizeEntity>() }; response.Data.PrizeList.Add(prizeInfoResponse); return(response); }