@Override
 public String toString() {
   StringBuilder sb = new StringBuilder();
   for (Tile t : this.map.values()) {
     sb.append("x: " + t.getPoint().x);
     sb.append("y: " + t.getPoint().y);
     sb.append(" obs: " + t.isObstacle());
     sb.append(" dirty: " + t.isDirty());
     sb.append(" base: " + t.isBase());
     sb.append("\n");
   }
   return sb.toString();
 }
 public boolean isDirty(Point p) {
   Tile t = getTile(p);
   if (t == null) return false;
   return t.isDirty();
 }