project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java
changeset 7342 0e29eec2df5c
parent 7332 3f2e130f9715
child 7352 641f11cdd319
--- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java	Thu Jul 19 18:31:58 2012 +0200
+++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java	Thu Jul 19 18:58:18 2012 +0200
@@ -1,51 +1,12 @@
 package org.hedgewars.hedgeroid.netplay;
 
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-public class PlayerList {
-	private List<Player> list = new LinkedList<Player>();
-	private List<Observer> observers = new LinkedList<Observer>();
+public class PlayerList extends ObservableLinkedHashMap<String, Player> {
 	private long nextId = 1;
 	
-	public List<Player> getList() {
-		return Collections.unmodifiableList(list);
-	}
-	
-	public void observePlayerList(Observer plo) {
-		observers.add(plo);
-	}
-	
-	public void unobservePlayerList(Observer plo) {
-		observers.remove(plo);
+	public void addPlayerWithNewId(String name) {
+		Player p = new Player(name, nextId++);
+		put(name, p);
 	}
 	
-	void addPlayer(String name) {
-		Player p = new Player(name, nextId++);
-		list.add(p);
-		List<Player> unmodifiableList = Collections.unmodifiableList(list);
-		for(Observer o : observers) {
-			o.itemAdded(unmodifiableList, p);
-		}
-	}
-	
-	void removePlayer(String name) {
-		for(Iterator<Player> iter = list.iterator(); iter.hasNext();) {
-			Player p = iter.next();
-			if(name.equals(p.name)) {
-				iter.remove();
-				List<Player> unmodifiableList = Collections.unmodifiableList(list);
-				for(Observer o : observers) {
-					o.itemDeleted(unmodifiableList, p);
-				}
-			}
-		}
-	}
-
-	public static interface Observer {
-		void itemAdded(List<Player> newList, Player added);
-		void itemDeleted(List<Player> newList, Player deleted);
-	}
+	public interface Observer extends ObservableLinkedHashMap.Observer<String, Player> {}
 }