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

import android.os.CountDownTimer;

/**
 * Stellt einen Timer dar, der in der SpielbrettActivty verwendet wird.
 * Verwendet dabei die Klasse CountDownTimer.
 */
public class BaoTimer {

    private long zeitInMillis;
    private long ausgangsZeit;
    private CountDownTimer timer;
    private TimerListener timerListener;

    /**
     * Repräsentiert einen Timer für das Spiel Bao.
     * @param millis die Startzeit des Timers
     * @param timerListener hört auf die Callbacks des Timers
     */
    public BaoTimer(long millis, TimerListener timerListener) {
        this.zeitInMillis = millis + 1;
        this.ausgangsZeit = zeitInMillis;
        this.timerListener = timerListener;
        timerListener.onTick(zeitInMillis);
        this.timer =  new CountDownTimer(zeitInMillis, 1000) {
            @Override
            public void onTick(long l) {
                zeitInMillis = l;
                timerListener.onTick(zeitInMillis);
            }

            @Override
            public void onFinish() {
                timerListener.onFinish();
            }
        };
    }


    /**
     * Startet den Timer
     */
    public void start() {
        timerListener.onTimerStart();
        timer = new CountDownTimer(zeitInMillis, 1000) {
            @Override
            public void onTick(long l) {
                zeitInMillis = l;
                timerListener.onTick(zeitInMillis);
            }

            @Override
            public void onFinish() {
                timerListener.onFinish();

            }
        };
        this.timer.start();
    }

    /**
     * Stoppt den Timer
     */
    public void stop() {
        this.timer.cancel();
    }

    /**
     * Setzt den Timer auf die urspruengliche Laenge zurueck.
     */
    public void reset() {
        this.zeitInMillis = this.ausgangsZeit;
    }
}
