import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javafx.scene.paint.Color;
import me.stieglmaier.sphereMiners.model.ai.SphereMiners2015;
import me.stieglmaier.sphereMiners.model.util.Position;
import me.stieglmaier.sphereMiners.model.util.Sphere;
public class Pacifist extends SphereMiners2015 {
@Override
protected void init() {
setColor(Color.RED);
}
@Override
protected void playTurn() {
// first check if we could split
List<Sphere> splits = new ArrayList<>();
for (Sphere s : ownSpheres) {
if (s.getSize() > getConstants().getMinSplittingsize()) {
splits.add(s);
}
}
split(splits);
// then change directions
Sphere ownSphere = null;
Iterator<Sphere> ownIt = ownSpheres.iterator();
Map<Sphere, Position> newDirections = new HashMap<>();
while (ownIt.hasNext()) {
ownSphere = ownIt.next();
Iterator<Sphere> dotsIt = dots.iterator();
Sphere nextDot = dotsIt.next();
double minDist = ownSphere.getPosition().dist(nextDot.getPosition());
while (dotsIt.hasNext()) {
Sphere tmpSphere = dotsIt.next();
double tmpDist = ownSphere.getPosition().dist(tmpSphere.getPosition());
if (tmpDist < minDist) {
minDist = tmpDist;
nextDot = tmpSphere;
}
}
final Position moveTo = nextDot.getPosition().sub(ownSphere.getPosition());
newDirections.put(ownSphere, moveTo);
}
changeMoveDirection(newDirections);
}
}