Ejemplo n.º 1
0
        public MessageCode HookAttend(LadderHookEntity entity)
        {
            if (!IsManagerBusy(entity.ManagerId))
            {
                if (!CompetitorDic.ContainsKey(entity.ManagerId))
                {
                    entity.LadderManager.UpdateTime = DateTime.Now;
                    //锁住
                    lock (_competitorLock)
                    {
                        if (_playerNum == 0)
                        {
                            StartTime = DateTime.Now;
                        }

                        CompetitorDic.Add(entity.ManagerId, entity.LadderManager);
                        _playerNum++;
                    }
                }
                return(MessageCode.Success);
            }
            else
            {
                return(MessageCode.LadderBusy);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 报名天梯赛.
        /// </summary>
        /// <returns></returns>
        public MessageCodeResponse Attend(string siteId, Guid managerId)
        {
            if (!IsManagerBusy(managerId))
            {
                if (!CompetitorDic.ContainsKey(managerId))
                {
                    var response = CrossLadderCore.Instance.GetManagerInfo(siteId, managerId);
                    if (response.Code != ShareUtil.SuccessCode)
                    {
                        return(ResponseHelper.Create <MessageCodeResponse>(response.Code));
                    }
                    if (response.Data == null)
                    {
                        return(ResponseHelper.InvalidParameter <MessageCodeResponse>());
                    }
                    var ladderManager = response.Data;
                    //if (ladderManager.Stamina <= 0)
                    //{
                    //    return ResponseHelper.Create<MessageCodeResponse>(MessageCode.LadderStaminaShortage);
                    //}
                    var  kpi        = ManagerUtil.GetKpi(managerId, siteId);
                    bool needUpdate = false;
                    if (kpi != ladderManager.Kpi)
                    {
                        ladderManager.Kpi = kpi;
                        needUpdate        = true;
                    }
                    if (ladderManager.DomainId != _domainId)
                    {
                        ladderManager.DomainId = _domainId;
                        needUpdate             = true;
                    }
                    if (needUpdate)
                    {
                        CrossladderManagerMgr.Update(ladderManager);
                    }
                    response.Data.ShowName = ShareUtil.GetCrossManagerNameByZoneId(siteId, response.Data.Name);
                    //锁住
                    lock (_competitorLock)
                    {
                        if (_playerNum == 0)
                        {
                            _startTime = DateTime.Now;
                        }

                        CompetitorDic.Add(managerId, response.Data);
                        _playerNum++;
                    }
                }
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.Success));
            }
            else
            {
                return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.LadderBusy));
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 报名天梯赛.
 /// </summary>
 /// <returns></returns>
 public MessageCodeResponse AttendLadder(Guid managerId, bool hasTask, bool isGuide = false)
 {
     if (_ManagerMatchCD.ContainsKey(managerId))
     {
         if (_ManagerMatchCD[managerId] > DateTime.Now)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.LadderMatchCding));
         }
     }
     if (ManagerFightDic != null && ManagerFightDic.ContainsKey(managerId))
     {
         ManagerFightDic.Remove(managerId);
     }
     if (isGuide) //引导
     {
         var response = GuideMatch(managerId);
         if (response.Code == (int)MessageCode.Success)
         {
             return(response);
         }
     }
     if (!CompetitorDic.ContainsKey(managerId))
     {
         var manager = ManagerCore.Instance.GetManager(managerId);
         if (manager == null)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.LoginNoManager));
         }
         var arenaManager = InnerGetLadderManager(managerId);
         if (arenaManager == null)
         {
             return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.NbParameterError));
         }
         arenaManager.IsBot      = false;
         arenaManager.Name       = manager.Name;
         arenaManager.UpdateTime = DateTime.Now;
         arenaManager.HasTask    = true;
         //锁住
         lock (_competitorLock)
         {
             if (_playerNum == 0)
             {
                 StartTime = DateTime.Now;
             }
             CompetitorDic.Add(managerId, arenaManager);
             _playerNum++;
         }
     }
     return(ResponseHelper.Create <MessageCodeResponse>(MessageCode.Success));
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 将已进入比赛池的经理重新丢回排序池.
 /// </summary>
 /// <param name="arenaCompetitor">The arena competitor.</param>
 public void PushFightToCompetitor(LadderManagerEntity arenaCompetitor)
 {
     lock (_competitorLock)
     {
         if (ManagerFightDic != null && ManagerFightDic.ContainsKey(arenaCompetitor.ManagerId))
         {
             ManagerFightDic.Remove(arenaCompetitor.ManagerId);
             if (!CompetitorDic.ContainsKey(arenaCompetitor.ManagerId))
             {
                 if (_playerNum == 0)
                 {
                     StartTime = DateTime.Now;
                 }
                 CompetitorDic.Add(arenaCompetitor.ManagerId, arenaCompetitor);
                 _playerNum++;
             }
         }
     }
 }