示例#1
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);
            });
        }
示例#2
0
 public void RefreshRooms()
 {
     RoomsChanged?.Invoke(_rooms);
 }