Пример #1
0
    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}"); // 找到空余的房间服务器,可以创建房间
        }
    }
Пример #2
0
    /// <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);
        }