Skip to content
Snippets Groups Projects
Select Git revision
  • 2f81946c62eee2cb4431d7b3fb61a8077c8aa347
  • master default protected
  • sdas
3 results

Image.java

Blame
  • Forked from BLAISE KAPLANSKI Teo / 1_HANOUCHE_MOHAMED_2_BLAISEKAPLANSKI_TEO
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Controller.java 4.14 KiB
    package firefighter.controller;
    
    import javafx.animation.Animation;
    import javafx.animation.KeyFrame;
    import javafx.animation.Timeline;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.ToggleButton;
    import javafx.scene.control.ToggleGroup;
    import javafx.util.Duration;
    import javafx.util.Pair;
    import firefighter.model.Board;
    import firefighter.model.ModelElement;
    import firefighter.model.FirefighterBoard;
    import firefighter.util.Position;
    import firefighter.view.FirefighterGrid;
    import firefighter.view.ViewElement;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import static java.util.Objects.requireNonNull;
    
    public class Controller {
    
      public static final int PERIOD_IN_MILLISECONDS = 50;
      @FXML
      public Button restartButton;
      @FXML
      public Button oneStepButton;
      @FXML
      public Label generationNumberLabel;
      @FXML
      private ToggleButton pauseToggleButton;
      @FXML
      private ToggleButton playToggleButton;
      @FXML
      private FirefighterGrid grid;
      private Timeline timeline;
      private Board<List<ModelElement>> board;
    
      @FXML
      private void initialize() {
        initializePlayAndPauseToggleButtons();
        initializeTimeline();
      }
    
      private void initializePlayAndPauseToggleButtons() {
        ToggleGroup toggleGroup = new PersistentToggleGroup();
        toggleGroup.getToggles().addAll(playToggleButton, pauseToggleButton);
        pauseToggleButton.setSelected(true);
      }
    
      private void setModel(FirefighterBoard firefighterBoard) {
        this.board = requireNonNull(firefighterBoard, "firefighter.model is null");
      }
    
      private void updateBoard(){
        List<Position> updatedPositions = board.updateToNextGeneration();
        List<Pair<Position, ViewElement>> updatedSquares = new ArrayList<>();
        for(Position updatedPosition : updatedPositions){
          List<ModelElement> squareState = board.getState(updatedPosition);
          ViewElement viewElement = getViewElement(squareState);
          updatedSquares.add(new Pair<>(updatedPosition, viewElement));
        }
        grid.repaint(updatedSquares);
        updateGenerationLabel(board.stepNumber());