Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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;
        }