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(); }
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); }