diff -r 7e09947b6aa5 -r d954c1a36e51 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/Roomlist.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/Roomlist.java Sun Aug 12 23:20:34 2012 +0200 @@ -0,0 +1,39 @@ +package org.hedgewars.hedgeroid.netplay; + +import java.util.Map; +import java.util.TreeMap; + +import org.hedgewars.hedgeroid.Datastructures.RoomlistRoom; + +import android.util.Pair; + +public class Roomlist extends ObservableTreeMap> { + private long nextId = 1; + + public void updateList(RoomlistRoom[] newRooms) { + Map> newMap = new TreeMap>(); + for(RoomlistRoom room : newRooms) { + Pair oldEntry = get(room.name); + if(oldEntry == null) { + newMap.put(room.name, Pair.create(room, nextId++)); + } else { + newMap.put(room.name, Pair.create(room, oldEntry.second)); + } + } + replaceContent(newMap); + } + + public void addRoomWithNewId(RoomlistRoom room) { + put(room.name, Pair.create(room, nextId++)); + } + + public void updateRoom(String name, RoomlistRoom room) { + Pair oldEntry = get(name); + if(oldEntry == null) { + addRoomWithNewId(room); + } else { + remove(name); + put(room.name, Pair.create(room, oldEntry.second)); + } + } +}