示例#1
0
    static void ASK_ROOM_LIST(byte[] bytes)
    {
        AskRoomList input = AskRoomList.Parser.ParseFrom(bytes);

        ServerLobbyManager.Instance.Log($"LobbyMsgReply ASK_ROOM_LIST - Received!");

        // 从redis里读取房间信息
        {
            AskRoomListReply output = new AskRoomListReply();
            output.Ret = true;
            string[] tableNames = ServerLobbyManager.Instance.Redis.CSRedis.Keys("MAP:*");
            ServerLobbyManager.Instance.Log($"ASK_ROOM_LIST : RoomCount:{tableNames.Length}");
            foreach (string tableName in tableNames)
            {
                long     createrId = ServerLobbyManager.Instance.Redis.CSRedis.HGet <long>(tableName, "Creator");
                RoomInfo roomInfo  = new RoomInfo()
                {
                    RoomId         = ServerLobbyManager.Instance.Redis.CSRedis.HGet <long>(tableName, "RoomId"),
                    MaxPlayerCount = ServerLobbyManager.Instance.Redis.CSRedis.HGet <int>(tableName, "MaxPlayerCount"),
                    RoomName       = ServerLobbyManager.Instance.Redis.CSRedis.HGet <string>(tableName, "RoomName"),
                    Creator        = createrId,
                    IsRunning      = false,
                };
                roomInfo.IsRunning = ServerLobbyManager.Instance.Rooms.ContainsKey(roomInfo.RoomId);
                if (roomInfo.IsRunning)
                {
                    roomInfo.CurPlayerCount = ServerLobbyManager.Instance.Rooms[roomInfo.RoomId].CurPlayerCount;
                }

                output.Rooms.Add(roomInfo);
                ServerLobbyManager.Instance.Log($"RoomInfo : {roomInfo}");
            }

            ServerLobbyManager.Instance.SendMsg(_args, LOBBY_REPLY.AskRoomListReply, output.ToByteArray());
        }
    }