diff -r 867e4fda496e -r 3f2e130f9715 project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java Tue Jul 17 22:27:16 2012 +0200 @@ -0,0 +1,51 @@ +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(); + 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); + } + + 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); + } +}