SotilasEstettyEval.java

package datastructureproject.luokat.evaluointi.osat;

import chess.model.Side;
import datastructureproject.luokat.Pelilauta;
import datastructureproject.luokat.nappulat.Nappula;
import datastructureproject.luokat.nappulat.Sotilas;

public class SotilasEstettyEval implements OsaEvaluaattori {
    private static final double PAINOARVO = 0.5d;
    private Pelilauta lauta;
    private Side puoli;
    private double arvo;

    public SotilasEstettyEval(Pelilauta lauta, Side puoli) {
        this.lauta = lauta;
        this.puoli = puoli;
    }

    @Override
    public void prosessoiNappula(Nappula n) {
        //Katsotaan onko suoraan sotilaan edessä olevassa ruudussa jokin nappula, 
        //joka estää sotilaan etenemisen
        int eteenYksiY = n.getRuutu().getEteenpainY(n.getPuoli(), 1);
        if (eteenYksiY >= 0 
                && eteenYksiY < Pelilauta.ALKUTILANNE.length
                && n instanceof Sotilas
                && lauta.getNappula(n.getX(), eteenYksiY) != null) {
            arvo -= (n.getPuoli() == puoli ? +1 : -1) * PAINOARVO;
        }
    }

    @Override
    public double getArvo() {
        return arvo;
    }
    
}