From d4d1a8ec5c3f1567cd53181f7201d8aae88628ce Mon Sep 17 00:00:00 2001
From: Yanis O <oualanyanis01@gmail.com>
Date: Wed, 13 Nov 2024 12:12:06 +0100
Subject: [PATCH] =?UTF-8?q?[Modif]=20setState=20s'assure=20de=20ne=20pas?=
 =?UTF-8?q?=20r=C3=A9ecrire=20de=20cases?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .gitignore                                   |  6 +++++-
 src/main/java/model/Board.java               |  7 +++++--
 src/main/java/model/FireFighterScenario.java | 12 +++++++++++-
 src/main/java/model/FirefighterBoard.java    |  6 ++++++
 4 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/.gitignore b/.gitignore
index f0875c5..1f5573d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,4 +34,8 @@ fabric.properties
 
 .gradle/
 *.class
-bin/
\ No newline at end of file
+bin/
+.gradle
+*.bin
+*.lock
+.gradle/8.10.2/executionHistory/executionHistory.bin
diff --git a/src/main/java/model/Board.java b/src/main/java/model/Board.java
index bb089a4..30baf94 100644
--- a/src/main/java/model/Board.java
+++ b/src/main/java/model/Board.java
@@ -1,9 +1,9 @@
 package model;
 
-import util.Position;
-
 import java.util.List;
 
+import util.Position;
+
 /**
  * This interface represents a generic board for modeling various state-based systems.
  *
@@ -61,5 +61,8 @@ public interface Board<S> {
    * @return The current step number or generation.
    */
   int stepNumber();
+
+  // Le booléen replaceState permet de forcer le remplacement des cases vides
+  public void setState(Entity state, Position position, boolean replaceStates);
 }
 
diff --git a/src/main/java/model/FireFighterScenario.java b/src/main/java/model/FireFighterScenario.java
index d516b7b..1ea0fd5 100644
--- a/src/main/java/model/FireFighterScenario.java
+++ b/src/main/java/model/FireFighterScenario.java
@@ -23,7 +23,17 @@ public class FireFighterScenario implements Board<Entity>{
   }
 
   public void setState(Entity state, Position position){
-    
+    if(!(getState(position) instanceof EmptySquare)){
+      return;
+    }
+    matrix.set(position.x(), position.y(), state);
+  }
+
+  // Le booléen replaceState permet de forcer le remplacement des cases vides
+  public void setState(Entity state, Position position, boolean replaceStates){
+    if(!(getState(position) instanceof EmptySquare) && !replaceStates){
+      return;
+    }
     matrix.set(position.x(), position.y(), state);
   }
 
diff --git a/src/main/java/model/FirefighterBoard.java b/src/main/java/model/FirefighterBoard.java
index c5f54eb..3ed1ec4 100644
--- a/src/main/java/model/FirefighterBoard.java
+++ b/src/main/java/model/FirefighterBoard.java
@@ -153,4 +153,10 @@ public class FirefighterBoard implements Board<List<ModelElement>> {
       }
     }
   }
+
+  @Override
+  public void setState(Entity state, Position position, boolean replaceStates) {
+    throw new UnsupportedOperationException("Unimplemented method 'setState'");
+  }
+  
 }
\ No newline at end of file
-- 
GitLab