project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java
changeset 7332 3f2e130f9715
child 7342 0e29eec2df5c
equal deleted inserted replaced
7330:867e4fda496e 7332:3f2e130f9715
       
     1 package org.hedgewars.hedgeroid.netplay;
       
     2 
       
     3 import java.util.Collections;
       
     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;
       
    12 	
       
    13 	public List<Player> getList() {
       
    14 		return Collections.unmodifiableList(list);
       
    15 	}
       
    16 	
       
    17 	public void observePlayerList(Observer plo) {
       
    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 }