diff -r 62043f5f7c67 -r 0e29eec2df5c project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java --- 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 list = new LinkedList(); - private List observers = new LinkedList(); +public class PlayerList extends ObservableLinkedHashMap { private long nextId = 1; - public List 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 unmodifiableList = Collections.unmodifiableList(list); - for(Observer o : observers) { - o.itemAdded(unmodifiableList, p); - } - } - - void removePlayer(String name) { - for(Iterator iter = list.iterator(); iter.hasNext();) { - Player p = iter.next(); - if(name.equals(p.name)) { - iter.remove(); - List unmodifiableList = Collections.unmodifiableList(list); - for(Observer o : observers) { - o.itemDeleted(unmodifiableList, p); - } - } - } - } - - public static interface Observer { - void itemAdded(List newList, Player added); - void itemDeleted(List newList, Player deleted); - } + public interface Observer extends ObservableLinkedHashMap.Observer {} }