project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/Roomlist.java
changeset 7491 d954c1a36e51
parent 7476 2fb781bbdd51
child 7508 763d3961400b
--- /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<String, Pair<RoomlistRoom, Long>> {
+	private long nextId = 1;
+	
+	public void updateList(RoomlistRoom[] newRooms) {
+		Map<String, Pair<RoomlistRoom, Long>> newMap = new TreeMap<String, Pair<RoomlistRoom, Long>>();
+		for(RoomlistRoom room : newRooms) {
+			Pair<RoomlistRoom, Long> 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<RoomlistRoom, Long> oldEntry = get(name);
+		if(oldEntry == null) {
+			addRoomWithNewId(room);
+		} else {
+			remove(name);
+			put(room.name, Pair.create(room, oldEntry.second));
+		}
+	}
+}