Beispiel #1
0
        internal void HandleAcceptedDare(ulong userGuid, string challenger)
        {
            DareInfo info = new DareInfo();

            info.defence = userGuid;
            info.offense = LobbyServer.Instance.DataProcessScheduler.GetGuidByNickname(challenger);
            bool ret = CanStart(info);

            if (ret)
            {
                StartDare(info);
            }
        }
Beispiel #2
0
        internal bool StartDare(DareInfo info)
        {
            if (null == info)
            {
                return(false);
            }
            List <ulong> guidList = new List <ulong>();

            guidList.Add(info.offense);
            guidList.Add(info.defence);
            RoomProcessThread roomProcess = LobbyServer.Instance.RoomProcessThread;

            roomProcess.QueueAction(roomProcess.AllocLobbyRoom, guidList.ToArray(), (int)MatchSceneEnum.Dare);
            return(true);
        }
Beispiel #3
0
        private bool CanStart(DareInfo info)
        {
            UserInfo offense_user = LobbyServer.Instance.DataProcessScheduler.GetUserInfo(info.offense);

            if (null == offense_user)
            {
                return(false);
            }
            UserInfo defence_user = LobbyServer.Instance.DataProcessScheduler.GetUserInfo(info.defence);

            if (null == defence_user)
            {
                return(false);
            }
            GeneralOperationResult ret = GeneralOperationResult.LC_Failure_NotUnLock;

            if (offense_user.Level < UNLOCK_LEVEL)
            {
                NotifyRequestDareResult(offense_user.Guid, offense_user.Nickname, ret);
                NotifyRequestDareResult(defence_user.Guid, offense_user.Nickname, ret);
                return(false);
            }
            if (defence_user.Level < UNLOCK_LEVEL)
            {
                NotifyRequestDareResult(offense_user.Guid, defence_user.Nickname, ret);
                NotifyRequestDareResult(defence_user.Guid, defence_user.Nickname, ret);
                return(false);
            }
            ret = GeneralOperationResult.LC_Failuer_Busy;
            if (UserState.Online != offense_user.CurrentState)
            {
                NotifyRequestDareResult(defence_user.Guid, offense_user.Nickname, ret);
                return(false);
            }
            if (UserState.Online != defence_user.CurrentState)
            {
                NotifyRequestDareResult(offense_user.Guid, defence_user.Nickname, ret);
                return(false);
            }
            if (offense_user.Guid == defence_user.Guid)
            {
                return(false);
            }
            return(true);
        }