Beispiel #1
0
        public CrosscrowdMatchResponse GetMatch(Guid managerId, Guid matchId)
        {
            var match = MemcachedFactory.CrowdMatchClient.Get <CrosscrowdMatchEntity>(matchId);

            if (match == null)
            {
                match = CrosscrowdMatchMgr.GetById(matchId);
                if (match == null)
                {
                    return(ResponseHelper.InvalidParameter <CrosscrowdMatchResponse>());
                }
            }
            var pop = MemcachedFactory.CrowdMessageClient.Get <string>(managerId);

            if (pop == null)
            {
                pop = "";
            }
            //LogHelper.Insert(pop,LogType.Info);
            match.Pop = pop;
            var response = ResponseHelper.CreateSuccess <CrosscrowdMatchResponse>();

            response.Data = match;
            return(response);
        }
Beispiel #2
0
        void SavePrize(CrosscrowdMatchEntity crowdMatch)
        {
            try
            {
                crowdMatch.HomePrizeScore = CacheFactory.CrowdCache.GetCrowdScore(crowdMatch.HomeScore);
                var costMorale  = CacheFactory.CrowdCache.GetCostMorela(crowdMatch.AwayScore);
                var winType     = ShareUtil.CalWinType(crowdMatch.HomeScore, crowdMatch.AwayScore);
                var matchPrize  = CacheFactory.CrowdCache.GetMatchPrize(winType);
                var homeManager = _managerDic[crowdMatch.HomeId];
                homeManager.Morale -= costMorale;
                if (homeManager.Morale < 0)
                {
                    homeManager.Morale = 0;
                }

                int homecoin  = matchPrize.Coin;
                int homehonor = matchPrize.Honor;
                OnlineCore.Instance.CalIndulgePrize(crowdMatch.HomeId, ref homecoin, ref homehonor, crowdMatch.HomeSiteId);
                crowdMatch.HomeMorale     = homeManager.Morale;
                crowdMatch.HomePrizeCoin  = homecoin;
                crowdMatch.HomePrizeHonor = homehonor;
                crowdMatch.HomeCostMorale = costMorale;

                crowdMatch.AwayPrizeScore = CacheFactory.CrowdCache.GetCrowdScore(crowdMatch.AwayScore);
                costMorale = CacheFactory.CrowdCache.GetCostMorela(crowdMatch.HomeScore);
                winType    = ShareUtil.CalWinType(crowdMatch.AwayScore, crowdMatch.HomeScore);
                matchPrize = CacheFactory.CrowdCache.GetMatchPrize(winType);
                var awayManager = _managerDic[crowdMatch.AwayId];
                awayManager.Morale -= costMorale;
                if (awayManager.Morale < 0)
                {
                    awayManager.Morale = 0;
                }
                int awaycoin  = matchPrize.Coin;
                int awayhonor = matchPrize.Honor;
                OnlineCore.Instance.CalIndulgePrize(crowdMatch.AwayId, ref awaycoin, ref awayhonor, crowdMatch.AwaySiteId);
                crowdMatch.AwayMorale     = awayManager.Morale;
                crowdMatch.AwayPrizeCoin  = awaycoin;
                crowdMatch.AwayPrizeHonor = awayhonor;
                crowdMatch.AwayCostMorale = costMorale;

                DateTime resurrectionTime = DateTime.Now.AddSeconds(_crowdResurrectionCd);
                DateTime nextMatchTime    = DateTime.Now.AddSeconds(_crowdCd);
                CrosscrowdMatchMgr.Save(crowdMatch, resurrectionTime, nextMatchTime);

                SavePrizeAfter(crowdMatch, homeManager, awayManager);
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdProcess-SavePrize", ex);
            }
        }
Beispiel #3
0
 static void doSendKillPrize(CrosscrowdInfoEntity crowd, CrosscrowdSendKillPrizeEntity entity, int maxPoint, int maxLegendCount)
 {
     try
     {
         if (entity.Status != 0)
         {
             return;
         }
         if (entity.HomeMorale <= 0)
         {
             doSendKillPrize(crowd, entity.Idx, entity.AwayId, entity.HomeName, entity.AwaySiteId, maxPoint, maxLegendCount);
         }
         if (entity.AwayMorale <= 0)
         {
             doSendKillPrize(crowd, entity.Idx, entity.HomeId, entity.AwayName, entity.HomeSiteId, maxPoint, maxLegendCount);
         }
         entity.Status = 1;
         CrosscrowdMatchMgr.SaveKillPrizeStatus(entity.Idx, entity.Status);
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("CrossCrowd-doSendKillPrize", ex);
     }
 }