package squidpony.squidgrid.zone;
import squidpony.squidgrid.zone.Zone.Skeleton;
import squidpony.squidmath.Coord;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* A zone defined by a {@link List}.
*
* @author smelC
*/
public class ListZone extends Skeleton {
protected final List<Coord> coords;
private static final long serialVersionUID = 1166468942544595692L;
public ListZone(List<Coord> coords) {
this.coords = coords;
}
public ListZone(Coord[] coords) {
this.coords = new ArrayList<Coord>(coords.length);
Collections.addAll(this.coords, coords);
}
public ListZone(Collection<Coord> coordCollection)
{
this.coords = new ArrayList<>(coordCollection);
}
@Override
public boolean isEmpty() {
return coords.isEmpty();
}
@Override
public int size() {
return coords.size();
}
@Override
public boolean contains(Coord c) {
return coords.contains(c);
}
@Override
public boolean contains(int x, int y) {
return coords.contains(Coord.get(x, y));
}
@Override
public List<Coord> getAll() {
return coords;
}
/**
* @return The list that backs up {@code this}. Use at your own risks.
*/
public List<Coord> getState() {
return coords;
}
@Override
public String toString() {
return coords.toString();
}
}