/*
* $Id$
*
* Copyright (c) 2000-2003 by Rodney Kinney
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License (LGPL) as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, copies are available
* at http://www.opensource.org.
*/
package VASSAL.chat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* A simple Room bean
*/
public class SimpleRoom implements Room {
private String name;
private List<Player> players = new ArrayList<Player>();
public SimpleRoom() {
}
public SimpleRoom(String name) {
this(name, new Player[0]);
}
public SimpleRoom(String name, Player[] players) {
this.name = name;
setPlayers(players);
}
public SimpleRoom(Room copy) {
this.name = copy.getName();
players.addAll(copy.getPlayerList());
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setPlayers(Player[] players) {
this.players.clear();
for (Player p : players) {
addPlayer(p);
}
}
public void addPlayer(Player p) {
int index = players.indexOf(p);
if (index < 0) {
players.add(p);
}
else {
players.set(index, p);
}
}
public Player getPlayer(String id) {
for (Player player : players) {
if (player.getId().equals(id)) {
return player;
}
}
return null;
}
public void removePlayer(Player p) {
players.remove(p);
}
public boolean contains(Player p) {
return players.contains(p);
}
public String toString() {
return name;
}
public int numPlayers() {
return players.size();
}
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object o) {
if (o instanceof SimpleRoom) {
return name == null ? false : name.equals(((SimpleRoom) o).name);
}
else {
return false;
}
}
/** @deprecated Use {@link #getPlayerList()} instead. */
@Deprecated
public Iterator<Player> getPlayers() {
return players.iterator();
}
public List<Player> getPlayerList() {
return Collections.unmodifiableList(players);
}
}