package edu.whs.spin2018.baoapp.model.spiel;

/**
 * Diese Klasse repräsentiert eine Mulde und erlaubt es Aktionen auf ihr auszuführen, wie z.B.
 * Steine entfernen oder einen Stein zu setzen.
 */

public class Mulde {

    private int steine;
    private Position position;

    /**
     * Erzeugt ein Objekt der Klasse Mulde mit einer Anzahl an Steinen und ihrer Position im Array.
     *
     * @param position - Position der Mulde in dem Array, in dem sie verwaltet wird
     * @param steine   - Anzahl der Steine, die die Mulde beim erstellt werden haben soll
     */
    public Mulde(Position position, int steine) {
        this.steine = steine;
        this.position = position;
    }

    /**
     * Gibt die Anzahl der Steine, die sich in der Mulde befinden
     *
     * @return Anzahl der Steine
     */
    public int gibAnzahlSteine() {
        return this.steine;
    }

    /**
     * Entfernt alle Steine aus der Mulde
     */
    public void entferneSteine() {
        this.steine = 0;
    }


    /**
     * Setzt einen Stein in die Mulde
     */
    public void fuegeSteinHinzu() {
        this.steine++;
    }

    /**
     * Liefert die Position der Mulde in dem Array, in dem die Mulden verwaltet werden.
     *
     * @return Position der Mulde im Array
     */
    public Position gibPosition() {
        return position;
    }

    /**
     * Gibt die Anzahl der Steine als String aus
     *
     * @return anzahl der Steine als String
     */
    @Override
    public String toString() {
        return position + " " + String.valueOf(steine);
    }

    @Override
    public boolean equals(Object obj) {
        boolean istGleich = false;
        if(obj instanceof Mulde) {
            istGleich = (this.steine == ((Mulde) obj).steine) && this.position.equals(((Mulde) obj).position);
        }
        return istGleich;
    }
}
