Select Git revision
Controller.java
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
-
CHAHINE Rami authoredCHAHINE Rami authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Controller.java 2.10 KiB
package controller;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.ToggleButton;
import javafx.util.Duration;
import model.FirefighterBoard;
import view.FirefighterGrid;
public class Controller {
private FirefighterBoard board;
private Timeline timeline;
@FXML
private Label generationNumberLabel;
@FXML
private Button restartButton;
@FXML
private Button oneStepButton;
@FXML
private ToggleButton playToggleButton;
@FXML
private ToggleButton pauseToggleButton;
@FXML
private FirefighterGrid grid;
public void initialize(int boxWidth, int boxHeight, int columns, int rows, int fireCount, int firefighterCount) {
// Initialize the simulation board and connect it to the grid
board = new FirefighterBoard(columns, rows, fireCount, firefighterCount);
grid.initialize(columns, rows, boxWidth, boxHeight, board);
// Initialize timeline for automatic progression
timeline = new Timeline(new KeyFrame(Duration.seconds(1), event -> updateGame()));
timeline.setCycleCount(Timeline.INDEFINITE);
// Ensure initial UI state is consistent
updateGenerationLabel();
pauseToggleButton.setSelected(true);
stopSimulation();
board.reset();
grid.repaint();
updateGenerationLabel();
}
@FXML
private void restartButtonAction() {
stopSimulation();
board.reset();
grid.repaint();
updateGenerationLabel();
}
@FXML
private void oneStepButtonAction() {
stopSimulation();
updateGame();
}
@FXML
private void playToggleButtonAction() {
startSimulation();