package tsp.pacman;

public class PacmanAStarWithGhosts extends PacmanLimitedAStar {

    public PacmanAStarWithGhosts(int timeoutMilli) {
        super(timeoutMilli);
    }

    protected int calculateHeuristic(PacmanState state){
        int tmpScore = super.calculateHeuristic(state);
        int minDistGhost = getMinDistGhost(state);
        if (minDistGhost <= 1) minDistGhost = Integer.MAX_VALUE;
        return tmpScore - minDistGhost;
    }

    private int getMinDistGhost(PacmanState state){
        Position pacmanPosition = state.findPacman();
        int minDist = state.getHeight() * state.getWidth();
        for (Position position: state.findGhosts()){
            minDist = Math.min(minDist, position.dist(pacmanPosition));
        }
        return minDist;
    }
}
