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<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> {}
}