Skip to content
Snippets Groups Projects
Commit 08b31d98 authored by Yanis O's avatar Yanis O Committed by melizzzz
Browse files

[Modif] Changement de la logique de la vue et du controller

parent 37c903e7
No related branches found
No related tags found
No related merge requests found
package controller; package controller;
import static java.util.Objects.*;
import java.util.ArrayList;
import java.util.List;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
...@@ -13,17 +18,12 @@ import javafx.scene.control.ToggleGroup; ...@@ -13,17 +18,12 @@ import javafx.scene.control.ToggleGroup;
import javafx.util.Duration; import javafx.util.Duration;
import javafx.util.Pair; import javafx.util.Pair;
import model.Board; import model.Board;
import model.ModelElement; import model.Entity;
import model.FirefighterBoard; import model.FireFighterScenario;
import util.Position; import util.Position;
import view.Grid; import view.Grid;
import view.ViewElement; import view.ViewElement;
import java.util.ArrayList;
import java.util.List;
import static java.util.Objects.requireNonNull;
public class Controller { public class Controller {
public static final int PERIOD_IN_MILLISECONDS = 50; public static final int PERIOD_IN_MILLISECONDS = 50;
...@@ -40,7 +40,7 @@ public class Controller { ...@@ -40,7 +40,7 @@ public class Controller {
@FXML @FXML
private Grid<ViewElement> grid; private Grid<ViewElement> grid;
private Timeline timeline; private Timeline timeline;
private Board<List<ModelElement>> board; private Board<Entity> board;
@FXML @FXML
private void initialize() { private void initialize() {
...@@ -54,15 +54,15 @@ public class Controller { ...@@ -54,15 +54,15 @@ public class Controller {
pauseToggleButton.setSelected(true); pauseToggleButton.setSelected(true);
} }
private void setModel(FirefighterBoard firefighterBoard) { private void setModel(Board<Entity> board) {
this.board = requireNonNull(firefighterBoard, "firefighter.model is null"); this.board = requireNonNull(board, "board is null");
} }
private void updateBoard(){ private void updateBoard(){
List<Position> updatedPositions = board.updateToNextGeneration(); List<Position> updatedPositions = board.updateToNextGeneration();
List<Pair<Position, ViewElement>> updatedSquares = new ArrayList<>(); List<Pair<Position, ViewElement>> updatedSquares = new ArrayList<>();
for(Position updatedPosition : updatedPositions){ for(Position updatedPosition : updatedPositions){
List<ModelElement> squareState = board.getState(updatedPosition); Entity squareState = board.getState(updatedPosition);
ViewElement viewElement = getViewElement(squareState); ViewElement viewElement = getViewElement(squareState);
updatedSquares.add(new Pair<>(updatedPosition, viewElement)); updatedSquares.add(new Pair<>(updatedPosition, viewElement));
} }
...@@ -74,6 +74,7 @@ public class Controller { ...@@ -74,6 +74,7 @@ public class Controller {
int columnCount = board.columnCount(); int columnCount = board.columnCount();
int rowCount = board.rowCount(); int rowCount = board.rowCount();
ViewElement[][] viewElements = new ViewElement[rowCount][columnCount]; ViewElement[][] viewElements = new ViewElement[rowCount][columnCount];
System.out.println("columnsCOunt : " + columnCount + " rowCount : " + rowCount);
for(int column = 0; column < columnCount; column++) for(int column = 0; column < columnCount; column++)
for(int row = 0; row < rowCount; row++) for(int row = 0; row < rowCount; row++)
viewElements[row][column] = getViewElement(board.getState(new Position(row, column))); viewElements[row][column] = getViewElement(board.getState(new Position(row, column)));
...@@ -81,14 +82,8 @@ public class Controller { ...@@ -81,14 +82,8 @@ public class Controller {
updateGenerationLabel(board.stepNumber()); updateGenerationLabel(board.stepNumber());
} }
private ViewElement getViewElement(List<ModelElement> squareState) { private ViewElement getViewElement(Entity entity) {
if(squareState.contains(ModelElement.FIREFIGHTER)){ return new ViewElement(entity.getViewColor());
return ViewElement.FIREFIGHTER;
}
if (squareState.contains(ModelElement.FIRE)){
return ViewElement.FIRE;
}
return ViewElement.EMPTY;
} }
private void initializeTimeline() { private void initializeTimeline() {
...@@ -126,7 +121,7 @@ public class Controller { ...@@ -126,7 +121,7 @@ public class Controller {
public void initialize(int squareWidth, int squareHeight, int columnCount, public void initialize(int squareWidth, int squareHeight, int columnCount,
int rowCount, int initialFireCount, int initialFirefighterCount) { int rowCount, int initialFireCount, int initialFirefighterCount) {
grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight); grid.setDimensions(columnCount, rowCount, squareWidth, squareHeight);
this.setModel(new FirefighterBoard(columnCount, rowCount, initialFireCount, initialFirefighterCount)); this.setModel(new FireFighterScenario(columnCount, rowCount, initialFireCount, initialFirefighterCount));
repaintGrid(); repaintGrid();
} }
......
...@@ -10,7 +10,7 @@ import util.Position; ...@@ -10,7 +10,7 @@ import util.Position;
public class FirefighterGrid extends Canvas implements Grid<ViewElement>{ public class FirefighterGrid extends Canvas implements Grid<ViewElement>{
private void paintElementAtPosition(ViewElement element, Position position) { 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 boxWidth;
private int boxHeight; private int boxHeight;
......
...@@ -2,10 +2,14 @@ package view; ...@@ -2,10 +2,14 @@ package view;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
public enum ViewElement { public class ViewElement {
FIREFIGHTER(Color.BLUE), FIRE(Color.RED), EMPTY(Color.WHITE); private final Color color;
final Color color;
ViewElement(Color color) { public ViewElement(Color color) {
this.color = color; this.color = color;
} }
public Color getColor() {
return color;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment