package org.codecranachan.asteroidpush.base.workshop;
import java.util.Collection;
import java.util.LinkedList;
import org.codecranachan.asteroidpush.base.workshop.tokenboard.Board;
import org.codecranachan.asteroidpush.base.workshop.tokenboard.Token;
import org.codecranachan.asteroidpush.utils.OrthogonalCoordinate;
public class Blueprint {
private String name;
private Board plan;
public Blueprint() {
name = new String();
plan = new Board();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Board getPlan() {
return plan;
}
public boolean canPlace(Token token) {
return getConflictingCoordinates(token).isEmpty();
}
public void place(Token token) {
plan.place(token);
}
public Token pick(OrthogonalCoordinate location) {
return plan.pick(location);
}
public Collection<OrthogonalCoordinate> getConflictingCoordinates(Token token) {
Collection<OrthogonalCoordinate> conflicts = new LinkedList<OrthogonalCoordinate>();
for (OrthogonalCoordinate coord : token.getOccupiedCoordinates()) {
if (plan.inspect(coord) != null) {
conflicts.add(coord);
}
}
return conflicts;
}
public Collection<Token> getTokens() {
return plan.getTokens();
}
public OrthogonalCoordinate getBottomLeftCorner() {
return plan.getBottomLeftCorner();
}
public OrthogonalCoordinate getTopRightCorner() {
return plan.getTopRightCorner();
}
}