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); } }
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); }
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); }