diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index 2a60897c6eb8ba847cb8589840c16a0f175ce0a3..2450bf5f86ac60c3fabd534e28c06f6c00ed9610 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -1,5 +1,10 @@ package controller; +import static java.util.Objects.*; + +import java.util.ArrayList; +import java.util.List; + import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; @@ -13,17 +18,12 @@ import javafx.scene.control.ToggleGroup; import javafx.util.Duration; import javafx.util.Pair; import model.Board; -import model.ModelElement; -import model.FirefighterBoard; +import model.Entity; +import model.FireFighterScenario; import util.Position; import view.Grid; import 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; @@ -40,7 +40,7 @@ public class Controller { @FXML private Grid<ViewElement> grid; private Timeline timeline; - private Board<List<ModelElement>> board; + private Board<Entity> board; @FXML private void initialize() { @@ -54,15 +54,15 @@ public class Controller { pauseToggleButton.setSelected(true); } - private void setModel(FirefighterBoard firefighterBoard) { - this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); + private void setModel(Board<Entity> board) { + this.board = requireNonNull(board, "board 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); + Entity squareState = board.getState(updatedPosition); ViewElement viewElement = getViewElement(squareState); updatedSquares.add(new Pair<>(updatedPosition, viewElement)); } @@ -74,6 +74,7 @@ public class Controller { int columnCount = board.columnCount(); int rowCount = board.rowCount(); ViewElement[][] viewElements = new ViewElement[rowCount][columnCount]; + System.out.println("columnsCOunt : " + columnCount + " rowCount : " + rowCount); for(int column = 0; column < columnCount; column++) for(int row = 0; row < rowCount; row++) viewElements[row][column] = getViewElement(board.getState(new Position(row, column))); @@ -81,14 +82,8 @@ public class Controller { updateGenerationLabel(board.stepNumber()); } - private ViewElement getViewElement(List<ModelElement> squareState) { - if(squareState.contains(ModelElement.FIREFIGHTER)){ - return ViewElement.FIREFIGHTER; - } - if (squareState.contains(ModelElement.FIRE)){ - return ViewElement.FIRE; - } - return ViewElement.EMPTY; + private ViewElement getViewElement(Entity entity) { + return new ViewElement(entity.getViewColor()); } private void initializeTimeline() { @@ -126,7 +121,7 @@ public class Controller { public void initialize(int squareWidth, int squareHeight, int columnCount, int rowCount, int initialFireCount, int initialFirefighterCount) { grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); - this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); + this.setModel(new FireFighterScenario(columnCount, rowCount, initialFireCount, initialFirefighterCount)); repaintGrid(); } diff --git a/src/main/java/view/FirefighterGrid.java b/src/main/java/view/FirefighterGrid.java index 39c7075c5ff27501e6e98f9fc052b74225eeb362..ecc8129c023c3a84787bb12b7db4de3bbb7cde95 100644 --- a/src/main/java/view/FirefighterGrid.java +++ b/src/main/java/view/FirefighterGrid.java @@ -10,7 +10,7 @@ import util.Position; public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ private void paintElementAtPosition(ViewElement element, Position position) { - paintBox(position.x(), position.y(), element.color); + paintBox(position.x(), position.y(), element.getColor()); } private int boxWidth; private int boxHeight; diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index ffb76112e1af543df5af41fa906082ef11be9967..5043644547213f648760eba9e4bb0693411e527b 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -2,10 +2,14 @@ package view; import javafx.scene.paint.Color; -public enum ViewElement { - FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); - final Color color; - ViewElement(Color color) { - this.color = color; - } +public class ViewElement { + private final Color color; + + public ViewElement(Color color) { + this.color = color; + } + + public Color getColor() { + return color; + } }