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

import android.widget.ImageView;

import java.util.ArrayList;

/**
 * Repraesentiert die Hand des Spielers, in dem die Steine abgelegt werden
 */
public class HandView {

    private ImageView handBild;
    private ArrayList<SteinView> steineInHand;
    private boolean gedreht;

    //zaehlt wie viele Positionen seit dem letzten Leeren der Hand vergeben wurden
    private int counter;

    public HandView(ImageView handBild, boolean drehen) {
        this.gedreht = drehen;
        this.handBild = handBild;
        steineInHand = new ArrayList<>();
    }

    public PositionAufBildschirm gibNaechstePositionInHand(float offset) {
        float steinbreite = 2 * offset;
        float maxsteine = handBild.getWidth() / steinbreite - 1;
        float x_pos = offset + counter * steinbreite
                - (int)((counter / maxsteine)) // "if counter => maxsteine" lege Steine wieder an den Anfang der (naechsten) Zeile
                * (steinbreite * counter - (counter % maxsteine) * steinbreite);
        float y_pos = offset + (int)(counter / maxsteine) * steinbreite;
        float x_base = handBild.getX();
        float y_base = handBild.getY();
        if(gedreht) {
            x_base += handBild.getWidth();
            y_base += handBild.getHeight();
            x_pos *= -1;
            y_pos *= -1;
        }

        counter++;
        return new PositionAufBildschirm(x_base + x_pos, y_base + y_pos);
    }

    public void setzeSteineInHand(ArrayList<SteinView> steine) {
        this.steineInHand = steine;
        counter = 0;
    }

    public ArrayList<SteinView> gibSteineInHand() {
        return this.steineInHand;
    }

    public int gibAnzahlSteineInHand() {
        return steineInHand.size();
    }

    public void entferneSteine() {
        this.steineInHand.clear();
    }
}
