From fc3acaba558139ea9340f478afc7c2077f366fdf Mon Sep 17 00:00:00 2001 From: Yanis O <oualanyanis01@gmail.com> Date: Sat, 23 Nov 2024 21:19:33 +0100 Subject: [PATCH] [Ajout] Rocaille (Rockery) --- src/main/java/app/SimulatorApplication.java | 8 +- src/main/java/controller/Controller.java | 4 +- src/main/java/model/Fire.java | 12 +++ src/main/java/model/FireFighter.java | 6 ++ src/main/java/model/FireFighterScenario.java | 2 +- src/main/java/model/Rockery.java | 78 ++++++++++++++++++++ 6 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 src/main/java/model/Rockery.java diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index e599a54..14f8fbb 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -13,10 +13,10 @@ import javafx.stage.Stage; public class SimulatorApplication extends javafx.application.Application { private static final String VIEW_RESOURCE_PATH = "/view/view.fxml"; private static final String APP_NAME = "Firefighter simulator"; - private static final int ROW_COUNT = 80; - private static final int COLUMN_COUNT = 80; - private static final int BOX_WIDTH = 8; - private static final int BOX_HEIGHT = 8; + private static final int ROW_COUNT = 50; + private static final int COLUMN_COUNT = 50; + private static final int BOX_WIDTH = 15; + private static final int BOX_HEIGHT = 15; public static final int INITIAL_FIRE_COUNT = 6; public static final int INITIAL_FIREFIGHTER_COUNT = 32; public static final int INITIAL_MOTORIZED_FIREFIGHTER_COUNT = 10; diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index f77e348..0e99dcf 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -27,6 +27,7 @@ import model.FireFighter; import model.FireFighterScenario; import model.MotorizedFireFighter; import model.Mountain; +import model.Rockery; import model.Square; import util.Position; import view.Grid; @@ -131,10 +132,11 @@ public class Controller { Map<EntityFactory, Integer> entityCounts = new HashMap<EntityFactory, Integer>(); entityCounts.put((pos, b) -> new Fire(pos), initialFireCount); - entityCounts.put((pos, b) -> new FireFighter(pos, b), initialFirefighterCount); + entityCounts.put((pos, b) -> new FireFighter(pos,b), initialFirefighterCount); entityCounts.put((pos, b) -> new MotorizedFireFighter(pos, b), initialMotorizedFirefightersCount); entityCounts.put((pos, b) -> new Cloud(pos, b), initialcloudCount); entityCounts.put((pos, b) -> new Mountain(pos), initialmountaincount); + entityCounts.put((pos, b) -> new Rockery(pos), 30); model.placeInitialEntities(entityCounts); this.setModel(model); diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 0ff0b18..3324819 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -3,6 +3,7 @@ package model; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import javafx.scene.paint.Color; import util.Position; @@ -59,6 +60,17 @@ public class Fire implements Entity { if (board.doesSquareContainEntity(p, Road.class)) { continue; } + if (board.doesSquareContainEntity(p, Rockery.class)) { + Optional<Entity> e = board.getStates(p).getEntities().stream().findFirst(); + if(e != null && e.isPresent() && e.get() instanceof Rockery){ + Rockery rockery = (Rockery) e.get(); + if(rockery.getBurn() < 4){ + rockery.incrementBurn(); + continue; + } + + } + } // Add new Fire to the board board.addEntityAtSquare(new Fire(p), p); diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index bc070cb..cf4307b 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -79,6 +79,12 @@ public class FireFighter implements Entity { List<Position> extinguishedPositions = new ArrayList<>(); for (Position p : adjacentPositions) { if (b.doesSquareContainEntity(p, Fire.class)) { + if(b.doesSquareContainEntity(p, Rockery.class)){ + Rockery rockery = (Rockery) b.getStates(p).getEntities().stream() + .filter(Rockery.class::isInstance) + .findFirst().get(); + rockery.resetBurn(); + } b.getStates(p).getEntities().removeIf(element -> element instanceof Fire); // Update age for EmptyEntity if needed b.getStates(p).getEntities().forEach(e -> { diff --git a/src/main/java/model/FireFighterScenario.java b/src/main/java/model/FireFighterScenario.java index 8be7643..66e0be1 100644 --- a/src/main/java/model/FireFighterScenario.java +++ b/src/main/java/model/FireFighterScenario.java @@ -247,7 +247,7 @@ public class FireFighterScenario extends EntityScenario implements Board<Square> for(Position p : snake){ List<Entity> entitiesAtSquare = List.copyOf(getStates(p).getEntities()); for(Entity e: entitiesAtSquare){ - if(e instanceof Mountain){ + if(e instanceof Mountain || e instanceof Rockery || e instanceof Fire){ clearCaseFrom(e, e.getPosition()); } } diff --git a/src/main/java/model/Rockery.java b/src/main/java/model/Rockery.java new file mode 100644 index 0000000..6aebd27 --- /dev/null +++ b/src/main/java/model/Rockery.java @@ -0,0 +1,78 @@ +package model; + +import java.util.List; + +import javafx.scene.paint.Color; +import util.Position; + +public class Rockery implements Entity{ + private final int priority = 0; + Position position; + private int age; + private int burn; + private final Color viewColor = Color.LIMEGREEN; + + public Rockery(Position p ){ + this.position = p; + this.burn = 0; + } + + + public Rockery(Position p , int age){ + System.out.println("age : " + age); + this.position = p; + this.age = age; + } + + @Override + public List<Position> nextTurn(Board<Square> board) { + return List.of(); + } + + @Override + public Position getPosition() { + return this.position; + } + public int getBurn(){ + return this.burn; + } + public void incrementBurn(){ + this.burn = burn + 1; + } + + @Override + public void setPosition(Position p) { + this.position = p; + + } + + @Override + public int getAge() { + return this.age; + } + + @Override + public void setAge(int age) { + this.age = age; + } + + @Override + public void incrementAge() { + this.age += 1; + } + + @Override + public Color getViewColor() { + return this.viewColor; + } + + @Override + public int getPriority() { + return this.priority; + } + + + public void resetBurn() { + this.burn = 0; + } +} -- GitLab