project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/netplay/PlayerList.java
author Medo <smaxein@googlemail.com>
Tue, 17 Jul 2012 22:27:16 +0200
changeset 7332 3f2e130f9715
child 7342 0e29eec2df5c
permissions -rw-r--r--
Hedgeroid: Chat and player list work now, but everything is very much WIP

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>();
	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);
	}
	
	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);
	}
}