static void ASK_CREATE_ROOM(byte[] bytes) { AskCreateRoom input = AskCreateRoom.Parser.ParseFrom(bytes); RoomServerLogin theRoomServer = null; ServerLobbyManager.Instance.Log($"LobbyMsgReply ASK_CREATE_ROOM - Received!"); // foreach (var keyValue in ServerLobbyManager.Instance.RoomServers) { RoomServerInfo roomServerInfo = keyValue.Value; RoomServerLogin roomServer = roomServerInfo.Login; if (ServerLobbyManager.Instance.Rooms.Count < roomServer.MaxRoomCount && input.MaxPlayerCount < roomServer.MaxPlayerPerRoom) { theRoomServer = roomServer; } } if (theRoomServer == null) { AskCreateRoomReply output = new AskCreateRoomReply() { Ret = false, }; ServerLobbyManager.Instance.SendMsg(_args, LOBBY_REPLY.AskCreateRoomReply, output.ToByteArray()); ServerLobbyManager.Instance.Log("MSG: There is not enough free room-servers!"); // 没有空余的房间服务器! } else { AskCreateRoomReply output = new AskCreateRoomReply() { Ret = true, RoomServerAddress = theRoomServer.AddressReal, // 发给客户端的是从外部连接的地址 RoomServerPort = theRoomServer.Port, MaxPlayerCount = input.MaxPlayerCount, RoomName = input.RoomName, }; ServerLobbyManager.Instance.SendMsg(_args, LOBBY_REPLY.AskCreateRoomReply, output.ToByteArray()); ServerLobbyManager.Instance.Log($"MSG: Find a free room-server, you can create the room! - {theRoomServer.Address}:{theRoomServer.Port}"); // 找到空余的房间服务器,可以创建房间 } }
/// <summary> /// 地图网格数据保存为文件,其他数据保存到Redis /// </summary> void Save() { string mapName = _name.text; int maxPlayerCount = int.Parse(_countMax.text); _hexmapHelper.Save(mapName, maxPlayerCount); ClientManager.Instance.LobbyManager.Log($"在本地生成地图 - {mapName}"); // 向大厅服务器发送请求加入房间的的信息,让大厅确认是否可以进入 UIManager.Instance.BeginConnecting(); AskCreateRoom data = new AskCreateRoom() { MaxPlayerCount = maxPlayerCount, RoomName = mapName, }; ClientManager.Instance.LobbyManager.SendMsg(LOBBY.AskCreateRoom, data.ToByteArray()); Debug.Log("MSG: 询问大厅:是否可以加入房间?"); }
private void AskCreateRoomHandler(ClientInfo client, Object request) { AskCreateRoom pckt = (AskCreateRoom)request; RoomDealer NewRoom = Rooms.CreateRoom(client); }