/// <summary> /// 处理玩家的准备请求,成功则通过广播推送给全部玩家,失败则单独响应GetquestError消息 /// </summary> /// <param name="session"></param> /// <param name="data"></param> private void _onReady(Session session, Ready data) { if (!LoginFilter(session, "游戏准备")) { return; } try { Room room = _searchRoomByID(data.RoomID); if (room != default(Room)) { Room.PlayerInfo playerInfo = Room.SearchInfoByUID(session.UID, room); if (playerInfo != default(Room.PlayerInfo)) { room.Gamemanager.Ready(playerInfo.Side, data.CheLayout); return; } } _connector.SendDataAsync(session, new GetquestError() { ClientMsgType = "Ready", ErrorInfo = "找不到该房间" }); } catch (GameManagerException e) { _connector.SendDataAsync(session, new GetquestError() { ClientMsgType = "Ready", ErrorInfo = e.Message }); //log.... } }
/// <summary> /// 寻找玩家所在房间,输出该房间的引用和该玩家在房间中的信息。 ///若该玩家不在房间中,则返回响应 /// </summary> /// <param name="session"></param> /// <param name="room"></param> /// <param name="playerInfo"></param> private bool _roomFilter(Session session, UInt64 roomid, out Room room, out Room.PlayerInfo playerInfo) { room = _searchRoomByID(roomid); if (room != default(Room)) { playerInfo = Room.SearchInfoByUID(session.UID, room); if (playerInfo != default(Room.PlayerInfo)) { return(true); } } //玩家不在房间中 _connector.SendDataAsync(session, new GetquestError() { ClientMsgType = string.Empty, ErrorInfo = "玩家不在指定的房间中" }); room = default(Room); playerInfo = default(Room.PlayerInfo); return(false); }