test commit
parent
94bb556288
commit
5d45348c03
|
@ -0,0 +1,51 @@
|
||||||
|
package de.hs_mannheim.informatik.chess.controller;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import javax.swing.Timer;
|
||||||
|
|
||||||
|
public class CountdownTimer {
|
||||||
|
private Timer timer;
|
||||||
|
private int secondsLeft;
|
||||||
|
private Runnable onTimeout;
|
||||||
|
private Consumer<Integer> onTick; // <- neue Callback-Funktion
|
||||||
|
|
||||||
|
public CountdownTimer(int minutes, int seconds) {
|
||||||
|
this.secondsLeft = minutes * 60 + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnTimeout(Runnable onTimeout) {
|
||||||
|
this.onTimeout = onTimeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOnTick(Consumer<Integer> onTick) {
|
||||||
|
this.onTick = onTick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
if (timer != null) timer.stop();
|
||||||
|
timer = new Timer(1000, e -> {
|
||||||
|
secondsLeft--;
|
||||||
|
if (onTick != null) onTick.accept(secondsLeft); // <- tick callback
|
||||||
|
if (secondsLeft <= 0) {
|
||||||
|
stop();
|
||||||
|
if (onTimeout != null) onTimeout.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
timer.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void stop() {
|
||||||
|
if (timer != null) {
|
||||||
|
timer.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reset(int minutes, int seconds) {
|
||||||
|
stop();
|
||||||
|
this.secondsLeft = minutes * 60 + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue