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); }); }
public void RefreshRooms() { RoomsChanged?.Invoke(_rooms); }