You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.5 KiB

package fr.uca.iut.clfreville2.gui.thread;
import fr.uca.iut.clfreville2.model.shared.Tickable;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
public class Ticker extends Thread {
private final Tickable tickable;
private final IntegerProperty millisPerTick = new SimpleIntegerProperty(250);
private final BooleanProperty running = new SimpleBooleanProperty(true);
public Ticker(Tickable tickable) {
this.tickable = tickable;
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(millisPerTick.getValue());
if (running.get()) {
Platform.runLater(tickable::tick);
}
} catch (InterruptedException e) {
break;
}
}
}
public int getMillisPerTick() {
return millisPerTick.get();
}
public void setMillisPerTick(int millisPerTick) {
this.millisPerTick.set(millisPerTick);
}
public IntegerProperty millisPerTickProperty() {
return millisPerTick;
}
public void setRunning(boolean running) {
this.running.setValue(running);
}
public boolean getRunning() {
return running.getValue();
}
public BooleanProperty runningProperty() {
return running;
}
}