package edu.whs.spin2018.baoapp.utilities;

import java.util.ArrayList;
import java.util.List;

import edu.whs.spin2018.baoapp.model.spiel.MuldenVeraenderung;
import edu.whs.spin2018.baoapp.model.spiel.Position;
import edu.whs.spin2018.baoapp.views.spiel.MuldenView;

public final class MuldenUtils {

    private MuldenUtils() {
        //private Konstruktor zum verhindern einer direkten Instanziierung
    }

    /**
     * Liefert die MuldenViews, die von den Veränderungen betroffen sind
     *
     * @param muldenViews
     * @param veraenderungen
     * @return Liste mit den MuldenViews, die von den Veraenderungen betroffen sind
     */
    public static ArrayList<MuldenView> gibMuldenViewsVonVereanderungen(MuldenView[][] muldenViews,
                                                                        List<MuldenVeraenderung> veraenderungen) {
        ArrayList<MuldenView> mViews = new ArrayList<>(veraenderungen.size());
        Position muldenPos;

        for (MuldenVeraenderung veraenderung : veraenderungen) {
            muldenPos = veraenderung.gibMulde().gibPosition();
            mViews.add(muldenViews[muldenPos.gibZeile()][muldenPos.gibSpalte()]);
        }

        return mViews;
    }

    /**
     * Liefert die MuldenView zur Position in der internen Datenstruktur.
     *
     * @param muldenViews
     * @param position    - Position von der die MuldenView geholt werden soll.
     * @return die MuldenView an der angegebenen Position
     */
    public static MuldenView gibMuldenViewVonPosition(MuldenView[][] muldenViews, Position position) {
        return muldenViews[position.gibZeile()][position.gibSpalte()];
    }
}
