project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java
changeset 7342 0e29eec2df5c
parent 7332 3f2e130f9715
child 7352 641f11cdd319
equal deleted inserted replaced
7340:62043f5f7c67 7342:0e29eec2df5c
     1 package org.hedgewars.hedgeroid.netplay;
     1 package org.hedgewars.hedgeroid.netplay;
     2 
     2 
     3 import java.util.Collections;
     3 public class PlayerList extends ObservableLinkedHashMap<String, Player> {
     4 import java.util.Iterator;
       
     5 import java.util.LinkedList;
       
     6 import java.util.List;
       
     7 
       
     8 public class PlayerList {
       
     9 	private List<Player> list = new LinkedList<Player>();
       
    10 	private List<Observer> observers = new LinkedList<Observer>();
       
    11 	private long nextId = 1;
     4 	private long nextId = 1;
    12 	
     5 	
    13 	public List<Player> getList() {
     6 	public void addPlayerWithNewId(String name) {
    14 		return Collections.unmodifiableList(list);
     7 		Player p = new Player(name, nextId++);
       
     8 		put(name, p);
    15 	}
     9 	}
    16 	
    10 	
    17 	public void observePlayerList(Observer plo) {
    11 	public interface Observer extends ObservableLinkedHashMap.Observer<String, Player> {}
    18 		observers.add(plo);
       
    19 	}
       
    20 	
       
    21 	public void unobservePlayerList(Observer plo) {
       
    22 		observers.remove(plo);
       
    23 	}
       
    24 	
       
    25 	void addPlayer(String name) {
       
    26 		Player p = new Player(name, nextId++);
       
    27 		list.add(p);
       
    28 		List<Player> unmodifiableList = Collections.unmodifiableList(list);
       
    29 		for(Observer o : observers) {
       
    30 			o.itemAdded(unmodifiableList, p);
       
    31 		}
       
    32 	}
       
    33 	
       
    34 	void removePlayer(String name) {
       
    35 		for(Iterator<Player> iter = list.iterator(); iter.hasNext();) {
       
    36 			Player p = iter.next();
       
    37 			if(name.equals(p.name)) {
       
    38 				iter.remove();
       
    39 				List<Player> unmodifiableList = Collections.unmodifiableList(list);
       
    40 				for(Observer o : observers) {
       
    41 					o.itemDeleted(unmodifiableList, p);
       
    42 				}
       
    43 			}
       
    44 		}
       
    45 	}
       
    46 
       
    47 	public static interface Observer {
       
    48 		void itemAdded(List<Player> newList, Player added);
       
    49 		void itemDeleted(List<Player> newList, Player deleted);
       
    50 	}
       
    51 }
    12 }