////////////////////////////////////// 响应 //////////////////////////////////// private void LoginResponse(bool send, DecodeRspResult res, Action <ResponseEvent> callback) { if (send) { UserStatus.SetStatus(UserStatus.StatusType.Logout); } var rsp = (LoginRsp)res.Body; var eve = new ResponseEvent(res.RspWrap1.ErrCode, res.RspWrap1.ErrMsg, res.RspWrap1.Seq, rsp); Debugger.Log("LoginResponse {0}", eve); NetClient.HandleSuccess(eve.Code, () => { if (eve.Code == ErrCode.EcOk) { RequestHeader.AuthKey = rsp.Token; RequestHeader.PlayerId = rsp.PlayerId; var messageData = rsp; // 更新状态 UserStatus.SetStatus(UserStatus.StatusType.Login); // 设置 PlayerInfo if (string.IsNullOrEmpty(GamePlayerInfo.GetInfo().Id)) { GamePlayerInfo.SetInfo(messageData.PlayerId); } } }); UserStatus.SetErrCode(eve.Code, eve.Msg); callback?.Invoke(eve); }
private int GetReadyCode(ProtoCmd subcmd) { if (!SdkStatus.IsInited() && subcmd != ProtoCmd.ECmdLoginReq) { // 发送失败: 没有初始化 (login不需要初始化) var info = new PlayerInfo { Id = "" }; GamePlayerInfo.SetInfo(info); UserStatus.SetStatus(UserStatus.StatusType.Logout); return(ErrCode.EcSdkUninit); } // 检测 socket if (Socket == null || string.IsNullOrEmpty(Socket.Url)) { return((int)QAppProtoErrCode.EcSdkSendFail); } if (!UserStatus.IsStatus(UserStatus.StatusType.Login) && subcmd != ProtoCmd.ECmdLoginReq && subcmd != ProtoCmd.ECmdLogoutReq) { return((int)QAppProtoErrCode.EcSdkNoLogin); } if (Socket.Id == (int)ConnectionType.Relay && !CheckLoginStatus.IsChecked() && (subcmd == ProtoCmd.ECmdRelaySendFrameReq || subcmd == ProtoCmd.ECmdRelayRequestFrameReq || subcmd == ProtoCmd.ECmdHeartBeatReq || subcmd == ProtoCmd.ECmdRelayClientSendtoGamesvrReq)) { return((int)QAppProtoErrCode.EcSdkNoCheckLogin); } // 发送消息 return(0); }
public void SetRoomInfo(RoomInfo roomInfo) { // if(roomInfo!=null) Debugger.Log("setRoomInfo {0}", roomInfo.PlayerList); if (roomInfo == null) { roomInfo = new RoomInfo(); } var oldRoomInfo = _room.RoomInfo ?? new RoomInfo(); _room.RoomInfo = roomInfo; // 更新玩家信息 if (_room.IsInRoom()) { foreach (var info in _room.RoomInfo.PlayerList.Where(info => info.Id == RequestHeader.PlayerId)) { GamePlayerInfo.SetInfo((PlayerInfo)info); break; } } // 重置帧广播信息: // 1 切换房间 // 2 不存在房间id // 3 不在房间中 // 4 房间的开始帧同步时间发生变化 if (!oldRoomInfo.Id.Equals(_room.RoomInfo.Id) || string.IsNullOrEmpty(_room.RoomInfo.Id) || !_room.IsInRoom() || oldRoomInfo.StartGameTime != this._room.RoomInfo.StartGameTime) { _room.RoomBroadcast?.FrameBroadcastFrameIdReset(0); } // 激活第二条链接 if (_room.RoomInfo != null && _room.RoomInfo.PlayerList != null) { if (_room.RoomInfo.PlayerList.Any(info => Listener.IsMe(info.Id))) { this.ActiveFrame(); } } _room.OnUpdate(this._room); }
private static void LogoutResponse(bool send, DecodeRspResult res, Action <ResponseEvent> callback) { var wrap1 = res.RspWrap1; var eve = new ResponseEvent(wrap1.ErrCode, wrap1.ErrMsg, wrap1.Seq, null); Debugger.Log("LogoutResponse {0}", eve); void HandleSuccess() { RequestHeader.AuthKey = null; RequestHeader.PlayerId = null; UserStatus.SetStatus(UserStatus.StatusType.Logout); var playerInfo = new PlayerInfo { Id = null }; GamePlayerInfo.SetInfo(playerInfo); } NetClient.HandleSuccess(eve.Code, HandleSuccess); callback?.Invoke(eve); }