Esempio n. 1
0
        CrosscrowdManagerResponse doAction(string siteId, Guid managerId, EnumConsumeSourceType mallDirectType, bool isClearCd)
        {
            var crowd = CrossCrowdManager.Instance.GetCurrent(siteId);

            if (crowd == null || crowd.Status != 1)
            {
                return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdNoData));
            }
            DateTime curTime = DateTime.Now;
            CrosscrowdManagerEntity crowdManager = InnerGetManager(siteId, managerId, crowd.Idx, curTime);

            if (isClearCd)
            {
                var cd = MatchCdHandler.GetCdSecondsInt(managerId, EnumMatchType.CrossCrowd);
                if (cd <= 0)
                {
                    return(GetManagerInfo(siteId, managerId, crowd.Idx, DateTime.Now));
                }
                crowdManager.ClearCdCount++;
            }
            else
            {
                if (crowdManager.Morale <= 0)
                {
                    crowdManager.Morale = _initMorale;
                    crowdManager.ResurrectionCount++;
                    //crowdManager.NextMatchTime = ShareUtil.BaseTime;
                }
                else
                {
                    return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdHasMorale));
                }
            }
            var mallDirect = new CrossMallDirectFrame(siteId, managerId, mallDirectType, 0);// crowdManager.ClearCdCount);
            var checkCode  = mallDirect.Check();

            if (checkCode != MessageCode.Success)
            {
                return(ResponseHelper.Create <CrosscrowdManagerResponse>(checkCode));
            }
            crowdManager.UpdateTime = curTime;
            if (!CrosscrowdManagerMgr.Update(crowdManager))
            {
                return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbUpdateFail));
            }

            MatchCdHandler.Delete(managerId, EnumMatchType.CrossCrowd);
            checkCode = mallDirect.Save(Guid.NewGuid().ToString());
            if (checkCode != MessageCode.Success)
            {
                SystemlogMgr.Error("CrossCrowd-doaction", string.Format("action:{0}", mallDirectType.ToString()));
            }
            return(GetManagerInfo(siteId, managerId, crowd.Idx, DateTime.Now, mallDirect.RemainPoint, false));
        }
Esempio n. 2
0
        public MatchCreateResponse Fight(Guid managerId, Guid awayId, bool hasTask)
        {
            if (managerId == awayId)
            {
                return(ResponseHelper.Create <MatchCreateResponse>(MessageCode.PlayerKillNoSelf));
            }

            var code = MatchCdHandler.CheckCd(managerId, EnumMatchType.PlayerKill);

            if (code != MessageCode.Success)
            {
                return(ResponseHelper.Create <MatchCreateResponse>(code));
            }
            return(doFight(managerId, awayId, 1, hasTask));
        }
Esempio n. 3
0
        public CrosscrowdManagerResponse GetManagerInfo(string siteId, Guid managerId, int crowdId, DateTime curTime, int curPoint = -1, bool checkStatus = true)
        {
            var crowdManager = InnerGetManager(siteId, managerId, crowdId, curTime);

            if (crowdManager == null)
            {
                return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbFunctionNotOpen));
            }
            if (checkStatus)
            {
                if (crowdManager.Morale <= 0)
                {
                    return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.CrowdNoMorale));
                }
                var code = MatchCdHandler.CheckCd(managerId, EnumMatchType.CrossCrowd);
                if (code != MessageCode.Success)
                {
                    return(ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.NbMatchCd));
                }
                crowdManager.ShowName = ShareUtil.GetCrossManagerNameByZoneId(siteId, crowdManager.Name);
            }
            else
            {
                crowdManager.CdSeconds         = MatchCdHandler.GetCdMilSecondsInt(managerId, EnumMatchType.CrossCrowd);
                crowdManager.CurPoint          = curPoint;
                crowdManager.ClearCdPoint      = CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.CrowdClearCd, 0);//crowdManager.ClearCdCount+1);
                crowdManager.ResurrectionPoint = CacheFactory.MallCache.GetDirectPoint(EnumConsumeSourceType.CrowdResurrection);
                if (crowdManager.Morale < 1)
                {
                    crowdManager.ResurrectionCdSeconds = ShareUtil.CalCountdown(crowdManager.ResurrectionTime, curTime);
                }
                else
                {
                    crowdManager.ResurrectionCdSeconds = -1;
                }
            }
            var response = ResponseHelper.Create <CrosscrowdManagerResponse>(MessageCode.Success);

            response.Data = crowdManager;
            return(response);
        }
Esempio n. 4
0
        private void BuildMatchInfo(int crowdId, int pairIndex, CrosscrowdManagerEntity home, CrosscrowdManagerEntity away, Dictionary <Guid, CrosscrowdMatchEntity> matchDic)
        {
            try
            {
                var matchId = ShareUtil.GenerateComb();
                var match   = new CrosscrowdMatchEntity(home, away, matchId, crowdId, pairIndex);
                matchDic.Add(match.Idx, match);

                MemcachedFactory.CrowdMatchClient.Set(match.Idx, match);
                //更新经理-比赛关联字典
                var homeHeart = new CrowdHeartEntity(matchId, away.ShowName, away.Logo, away.Morale, away.ManagerId, away.SiteId);
                var awayHeart = new CrowdHeartEntity(matchId, home.ShowName, home.Logo, home.Morale, home.ManagerId, home.SiteId);
                ManagerFightDic[home.ManagerId] = homeHeart;
                ManagerFightDic[away.ManagerId] = awayHeart;
                //try
                //{
                //    CrossChatHelper.SendCrowdPairPop(home.ManagerId, homeHeart, home.SiteId);
                //    CrossChatHelper.SendCrowdPairPop(away.ManagerId, awayHeart, away.SiteId);
                //}
                //catch (Exception ex)
                //{
                //    SystemlogMgr.Error("CrossCrowdThread-SendCrowdPairPop", ex);
                //}
                MatchCdHandler.SetCd(home.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                MatchCdHandler.SetCd(away.ManagerId, EnumMatchType.CrossCrowd, _crowdCd);
                try
                {
                    MemcachedFactory.CrowdHeartClient.Set(home.ManagerId, homeHeart);
                    MemcachedFactory.CrowdHeartClient.Set(away.ManagerId, awayHeart);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo-Send", ex);
                }
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowdThread-BuildMatchInfo", ex);
            }
        }