OmaEvaluaattori.java

package datastructureproject.luokat.evaluointi;

import chess.model.Side;
import datastructureproject.luokat.Pelilauta;
import datastructureproject.luokat.nappulat.Nappula;
import datastructureproject.luokat.evaluointi.osat.*;

public class OmaEvaluaattori implements Evaluaattori {
    public double getLaudanArvo(Pelilauta lauta, Side vuoro) {
        OsaEvaluaattori[] evaluaattorit = new OsaEvaluaattori[]{
            new MateriaaliEval(vuoro), 
            new SotilasRivitEval(vuoro),
            new SotilasEstettyEval(lauta, vuoro),
            new LahettiParitEval(vuoro),
            new RuutuPainotEval(vuoro),
        };

        for (int y = 0; y < lauta.getKoko(); y++) {
            for (int x = 0; x < lauta.getKoko(); x++) {
                Nappula nappula = lauta.lauta[y][x];
                if (nappula == null) {
                    continue;
                }

                for (OsaEvaluaattori eval: evaluaattorit) {
                    eval.prosessoiNappula(nappula);
                }
            }
        }
        
        double arvo = 0;

        for (OsaEvaluaattori eval: evaluaattorit) {
            arvo += eval.getArvo();
        }

        return arvo;
    }
}