Skip to content
Snippets Groups Projects
Commit 1298cabf authored by Yanis O's avatar Yanis O
Browse files

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

parent 0320cb18
No related branches found
No related tags found
No related merge requests found
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();
}
......
......@@ -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;
......
......@@ -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) {
public class ViewElement {
private final Color color;
public ViewElement(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