示例#1
0
    public override void OnRoomListUpdate(List <RoomInfo> roomList)
    {
        base.OnRoomListUpdate(roomList);

        foreach (RoomInfo info in roomList)
        {
            if (!info.IsVisible || info.RemovedFromList)
            {
                if (Rooms.ContainsKey(info.Name))
                {
                    Rooms.Remove(info.Name);
                }
            }
            else if (Rooms.ContainsKey(info.Name))
            {
                Rooms[info.Name] = info;
            }
            else
            {
                Rooms.Add(info.Name, info);
            }
        }

        OnRoomsChanged?.Invoke();
    }
示例#2
0
        private void RegisterLobbyHandlers()
        {
            _lobby.OnMessage <Room[]>(LobbyMessage.Rooms, message =>
            {
                foreach (var room in message)
                {
                    if (!_rooms.ContainsKey(room.roomId))
                    {
                        _rooms.Add(room.roomId, room);
                    }
                }

                RoomsChanged?.Invoke(_rooms);
            });

            _lobby.OnMessage <object[]>(LobbyMessage.Add,
                                        message => { _lobby.Send(LobbyMessage.RoomInfo, message[0]); });

            _lobby.OnMessage <Room>(LobbyMessage.RoomInfo, room =>
            {
                if (room == null)
                {
                    _rooms.Clear();
                }
                else if (_rooms.ContainsKey(room.roomId))
                {
                    _rooms[room.roomId] = room;
                }
                else
                {
                    _rooms.Add(room.roomId, room);
                }

                RoomsChanged?.Invoke(_rooms);
            });

            _lobby.OnMessage <string>(LobbyMessage.Remove, roomId =>
            {
                if (!_rooms.ContainsKey(roomId))
                {
                    return;
                }
                _rooms.Remove(roomId);
                RoomsChanged?.Invoke(_rooms);
            });
        }
示例#3
0
 public void RefreshRooms()
 {
     RoomsChanged?.Invoke(_rooms);
 }