/// <summary> /// 合区所需的提前发放天梯赛奖励 /// </summary> /// <returns></returns> public MessageCode ScoreToHonorJobMergeZone() { var season = CacheFactory.SeasonCache.GetCurrentSeason(); if (season == null) { return(MessageCode.LadderNoSeason); } var curDate = DateTime.Today; if (season.Idx == 1 && curDate == season.Startdate) { return(MessageCode.LadderSeasonDonotNeedSend); } int isNewSeason = 1; int curSeason = season.Idx; if (season.Startdate == curDate && season.Idx > 1) { isNewSeason = 1; curSeason = curSeason - 1; } LadderInfoMgr.ScoreToHonorMergeZone(DateTime.Today, curSeason); if (isNewSeason == 1) { try { var curSeasonEntity = CacheFactory.SeasonCache.GetEntity(curSeason); var managers = LadderManagerhistoryMgr.GetPrizeManager(curSeason); if (managers != null) { List <MailBuilder> mails = new List <MailBuilder>(managers.Count); foreach (var manager in managers) { SendPrize(manager, curSeasonEntity.Status, ref mails); if (manager.Rank < 3) { NbManagerhonorMgr.Add(manager.ManagerId, (int)EnumMatchType.Ladder, 0, manager.Season, manager.Rank); } } var mailDataTable = MailCore.BuildMailBulkTable(mails); LadderSqlHelper.SaveManagerPrize(managers, mailDataTable); } } catch (Exception ex) { SystemlogMgr.Error("ScoreToHonorJob SendPrize", ex); return(MessageCode.Exception); } } return(MessageCode.Success); }
/// <summary> /// Runs the arena match. /// </summary> void RunMatch() { if (_fightDic == null) { return; } foreach (var item in _fightDic.Values) { var matchHome = new MatchManagerInfo(item.HomeId, false, item.HomeIsBot); var matchAway = new MatchManagerInfo(item.AwayId, false, item.AwayIsBot); if (isGuide)//引导。 必胜 { matchHome.BuffScale = 200; matchAway.BuffScale = 50; } var matchData = new BaseMatchData((int)EnumMatchType.Ladder, item.Idx, matchHome, matchAway); matchData.ErrorCode = (int)MessageCode.MatchWait; MemcachedFactory.MatchClient.Set(matchData.MatchId, matchData); //使用多线程 _nbThreadPool.Add(() => Fight(matchData, item)); } _nbThreadPool.WaitAll(); _ladderInfo.Groups = _fightDic.Count; _ladderInfo.RowTime = DateTime.Now; _ladderInfo.Season = 1; _ladderInfo.Status = 2; _ladderInfo.UpdateTime = DateTime.Now; _ladderInfo.FightList = null; _fightDic = null; LadderInfoMgr.Insert(_ladderInfo); _ladderInfo = null; }