diff --git a/.gradle/8.10.2/executionHistory/executionHistory.bin b/.gradle/8.10.2/executionHistory/executionHistory.bin index 801682b4acca704d855b5ba58364e10c6be1e3e1..cf5a960ec7f7900010aea5be45e24718226af6e2 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.bin and b/.gradle/8.10.2/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.10.2/executionHistory/executionHistory.lock b/.gradle/8.10.2/executionHistory/executionHistory.lock index 5b176266587d46e29c3a775aa442174ff8dbf06e..f5e032ebd2785801b772397c831686017a8244f6 100644 Binary files a/.gradle/8.10.2/executionHistory/executionHistory.lock and b/.gradle/8.10.2/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.bin b/.gradle/8.10.2/fileHashes/fileHashes.bin index 323467683484b9266ecd535509702c7760b5a32d..c148c1bc29cdedc846b72a678f760346fa875247 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.bin and b/.gradle/8.10.2/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.10.2/fileHashes/fileHashes.lock b/.gradle/8.10.2/fileHashes/fileHashes.lock index 3794939f8c5f3032a051b517b07e7ac5264934e4..f1ae7c3e5b7a9eb9afc3412e20c7cf3dec627541 100644 Binary files a/.gradle/8.10.2/fileHashes/fileHashes.lock and b/.gradle/8.10.2/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin index 9e2be0dcef627ba82befe7bc04e30dba136e0c2e..14b6a2674e4806a02c0138c38bdae8b4aff3b145 100644 Binary files a/.gradle/8.10.2/fileHashes/resourceHashesCache.bin and b/.gradle/8.10.2/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 57aad489612f304cc3c097a326b022c7f177c918..99d6f908f0717a5a58f2fdbb18137440bea75e64 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/build/classes/java/main/controller/Controller.class b/build/classes/java/main/controller/Controller.class index 6a04f4e1dcb90af98351b81bb8c0a5fe71e3561a..5460b69e4ad124b6ba3858a79d483e32eb5cc8da 100644 Binary files a/build/classes/java/main/controller/Controller.class and b/build/classes/java/main/controller/Controller.class differ diff --git a/build/classes/java/main/model/ElementFactory.class b/build/classes/java/main/model/ElementFactory.class index a493c4db7d9a83f99b551d0393f2f3194a70d081..1b7fa6bcc30af5a9bcdb5ceb5a1fbb1348f69532 100644 Binary files a/build/classes/java/main/model/ElementFactory.class and b/build/classes/java/main/model/ElementFactory.class differ diff --git a/build/classes/java/main/model/FFBoard.class b/build/classes/java/main/model/FFBoard.class index 22b830c77540ec5a044acbe5cf4d54a89f63f322..0f2a7b7e07aa8a014a7734a4fdc2d26a98d31397 100644 Binary files a/build/classes/java/main/model/FFBoard.class and b/build/classes/java/main/model/FFBoard.class differ diff --git a/build/classes/java/main/model/FFBoardData.class b/build/classes/java/main/model/FFBoardData.class index 6c39baa2525b9a58c1bf337efbaeac761ef1fa41..91b496a7e3f5a2c2f110a80343fd16e16ddb31a9 100644 Binary files a/build/classes/java/main/model/FFBoardData.class and b/build/classes/java/main/model/FFBoardData.class differ diff --git a/build/classes/java/main/model/Fire.class b/build/classes/java/main/model/Fire.class index 6ecd16e4eb9b69b1c8dcf9bd55039fc157999244..adc931bcb0f5300d061e968519e0c2d97c2a4676 100644 Binary files a/build/classes/java/main/model/Fire.class and b/build/classes/java/main/model/Fire.class differ diff --git a/build/classes/java/main/model/FireBehavior.class b/build/classes/java/main/model/FireBehavior.class index f3a5f1a37d1e68fd8ff89363887ea0ffb6d09a16..86c2daaaf647a93a3f70c5472da3ed461ca3810b 100644 Binary files a/build/classes/java/main/model/FireBehavior.class and b/build/classes/java/main/model/FireBehavior.class differ diff --git a/build/classes/java/main/model/FirefighterBehavior.class b/build/classes/java/main/model/FirefighterBehavior.class index 3685400111fbb247a6d748f2fc008267a4152b38..da533f51f0f2dbfa4e9c02edd044965785859d50 100644 Binary files a/build/classes/java/main/model/FirefighterBehavior.class and b/build/classes/java/main/model/FirefighterBehavior.class differ diff --git a/build/classes/java/main/model/ModelElement.class b/build/classes/java/main/model/ModelElement.class index 06587494c5d0b8af205116e1fec56f1c2b843c60..a306f9d979932c1032706a9334129652b0f3ed08 100644 Binary files a/build/classes/java/main/model/ModelElement.class and b/build/classes/java/main/model/ModelElement.class differ diff --git a/build/classes/java/main/model/Road.class b/build/classes/java/main/model/Road.class index 6199f31f761d0a4a447737e97acb77abd849fa79..b3e319e61364f96bb95080e8f4872bc17e437326 100644 Binary files a/build/classes/java/main/model/Road.class and b/build/classes/java/main/model/Road.class differ diff --git a/build/classes/java/main/model/Rock.class b/build/classes/java/main/model/Rock.class new file mode 100644 index 0000000000000000000000000000000000000000..f23f7b6899e00054ebbb59d74749921fd2fc11fa Binary files /dev/null and b/build/classes/java/main/model/Rock.class differ diff --git a/build/classes/java/main/model/SlowFire.class b/build/classes/java/main/model/SlowFire.class new file mode 100644 index 0000000000000000000000000000000000000000..c463e9921eec27a20924cec99609498cd217f76f Binary files /dev/null and b/build/classes/java/main/model/SlowFire.class differ diff --git a/build/classes/java/main/view/ViewElement.class b/build/classes/java/main/view/ViewElement.class index 9605485d704f388ad67b2eb579987455a1b79d60..4fb4b9ad28e188f1cc2416bd319836c60f879e8c 100644 Binary files a/build/classes/java/main/view/ViewElement.class and b/build/classes/java/main/view/ViewElement.class differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21 b/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21 deleted file mode 100644 index 7b66ceda77beed63d4117f3a5a0e60d01e373d50..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Behavior.class.uniqueId21 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24 b/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24 deleted file mode 100644 index 1473192238ebff191ff33a083801c7c099c24bc6..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/BoardData.class.uniqueId24 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22 b/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22 deleted file mode 100644 index a31acca2d1c953a93b797c67b9600eb48fd22172..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Cloud.class.uniqueId22 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23 b/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23 deleted file mode 100644 index 344f982210adb7b2522955c44e6e86888dd98f2b..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/CloudBehavior.class.uniqueId23 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3 b/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3 deleted file mode 100644 index 6a04f4e1dcb90af98351b81bb8c0a5fe71e3561a..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Controller.class.uniqueId3 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16 b/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16 deleted file mode 100644 index 86796ebda7b006c90771da8c76c0f4b5e8ec76c5..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Element.class.uniqueId16 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8 b/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8 deleted file mode 100644 index abc64510c990809c4aad859777a4a59aca4086cf..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ElementManager.class.uniqueId8 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12 deleted file mode 100644 index 291fe9094bbfeaa70d5df89ff86cc3f4924868ba..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FFBehavior.class.uniqueId12 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1 deleted file mode 100644 index f011c6673ea53fccef1b1a27bce0d0de70133da5..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoard.class.uniqueId1 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13 b/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13 deleted file mode 100644 index 6c39baa2525b9a58c1bf337efbaeac761ef1fa41..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FFBoardData.class.uniqueId13 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4 b/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4 deleted file mode 100644 index f18682c2c9367d3033da83621242d3dead5202c6..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FFUpdater.class.uniqueId4 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5 b/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5 deleted file mode 100644 index 6ecd16e4eb9b69b1c8dcf9bd55039fc157999244..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Fire.class.uniqueId5 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19 b/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19 deleted file mode 100644 index fbda223f83d841a0d2e5d0ec3a306e46366258c2..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireBehavior.class.uniqueId19 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26 deleted file mode 100644 index 46f71e21c725c1bfb76086ef444cdc525879437e..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighter.class.uniqueId26 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11 b/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11 deleted file mode 100644 index 3685400111fbb247a6d748f2fc008267a4152b38..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FireFighterBehavior.class.uniqueId11 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15 b/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15 deleted file mode 100644 index 05ec18aeff68513e99aa82d1e6ae68a3edf3cccd..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/FirefighterGrid.class.uniqueId15 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9 b/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9 deleted file mode 100644 index 23b874024299c05963109c14f605b1de8021616d..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ModelElement.class.uniqueId9 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10 b/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10 deleted file mode 100644 index 8f8c31c07c776f0bb418023db3a336f14f691707..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/MotorizedFireFighter.class.uniqueId10 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17 b/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17 deleted file mode 100644 index 8fe05667e5c8fafa6d3f2372371cb9667027db77..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Mountain.class.uniqueId17 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2 b/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2 deleted file mode 100644 index 04db6553438809493d5f56a17c14984108ebf74f..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/RemoverBehavior.class.uniqueId2 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20 b/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20 deleted file mode 100644 index 6d88dc9a0edace933e7b9ca5f67bbdaddba48037..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/SimulatorApplication.class.uniqueId20 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27 b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27 deleted file mode 100644 index 6d04a90edcec07b7d1375dffb8a54bc7a4ae1aa9..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFire.class.uniqueId27 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18 b/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18 deleted file mode 100644 index fc5b93fe24ca479ac79d43a6c4b73789cb475381..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/StandardFireFighter.class.uniqueId18 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6 b/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6 deleted file mode 100644 index 7a4f2f1c104b6561239e3e8f93096cfebb71097b..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/TangibleBehavior.class.uniqueId6 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7 b/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7 deleted file mode 100644 index ca0085ffcc16197c036e8b623d6aa133f687c3a6..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Updatable.class.uniqueId7 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0 b/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0 deleted file mode 100644 index 5094364d480368e64c5c482badb41c0fe948d624..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/Updater.class.uniqueId0 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25 b/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25 deleted file mode 100644 index 552725fc4d9e4c1db6cd5180f0a7c77471b79777..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/ViewElement.class.uniqueId25 and /dev/null differ diff --git a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId14 b/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId14 deleted file mode 100644 index f0b28b3b4966d6d1c1eac55f53fff160e8e01b67..0000000000000000000000000000000000000000 Binary files a/build/tmp/compileJava/compileTransaction/stash-dir/module-info.class.uniqueId14 and /dev/null differ diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 5e158cc7c168f519415f9982e559dccee63b42ed..858a4f8e11dd2f5778dcd1d3339b95b6e58ad5f2 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/main/java/controller/Controller.java b/src/main/java/controller/Controller.java index ed7b402790efacbd667f72231d2da851095f4621..5aa4624c3fa57190544753c551538faca4affa00 100644 --- a/src/main/java/controller/Controller.java +++ b/src/main/java/controller/Controller.java @@ -101,8 +101,11 @@ public class Controller { private ViewElement getViewElement(List<ModelElement> squareState) { for (ModelElement element:ModelElement.values()) { + if (element.isPrintable()) if (squareState.contains(element)){ - return ViewElement.values()[element.ordinal()]; + for(ViewElement viewElement: ViewElement.values()) + if (element.isInstanceOf(viewElement.c)) + return viewElement; } } return ViewElement.EMPTY; diff --git a/src/main/java/model/Cloud.java b/src/main/java/model/Cloud.java index 32bbe25a00111192fe4122eeb345fd0599e81edf..cbc141be22a3a3c0df53a946243dd91f6c843518 100644 --- a/src/main/java/model/Cloud.java +++ b/src/main/java/model/Cloud.java @@ -5,7 +5,7 @@ import util.Position; import java.util.ArrayList; import java.util.List; -public class Cloud implements Element,Updatable{ +public class Cloud implements Element,Updatable,Printable{ ModelElement type; Position position; static Behavior behavior=new CloudBehavior(); diff --git a/src/main/java/model/CloudBehavior.java b/src/main/java/model/CloudBehavior.java index ea392b040603e844581094ac31d7bdf55478bedf..d95bff7b30dfcf0ad5b928837dc27601ab2fdb46 100644 --- a/src/main/java/model/CloudBehavior.java +++ b/src/main/java/model/CloudBehavior.java @@ -19,7 +19,7 @@ public class CloudBehavior extends FFBehavior implements RemoverBehavior<ModelEl extinguish(boardData,position); return List.of(position); } - private void extinguish(BoardData boardData,Position position){ + public void extinguish(BoardData boardData,Position position){ List<Position> l=new ArrayList<>(legalNeighbors(boardData,position)); l.add(position); for (Position p:l) { diff --git a/src/main/java/model/ElementFactory.java b/src/main/java/model/ElementFactory.java index d8b78aaa60f787b4397f82f6dd17e440e47b8487..0447cc41ce5c14f11773df2f205d22027a757d92 100644 --- a/src/main/java/model/ElementFactory.java +++ b/src/main/java/model/ElementFactory.java @@ -5,9 +5,7 @@ import util.Position; public class ElementFactory { //this is using the factoryMethod design pattern (I'm writing this it just in case ) public static Element createElement(BoardData boardData,ModelElement modelElement, Position position){ - Element e=modelElement.instanciate(position); - boardData.addElement(e); - return e; + return modelElement.instanciate(position); } } diff --git a/src/main/java/model/FFBoard.java b/src/main/java/model/FFBoard.java index c6c971fe6f47f2719470d3540e869c7c54c64724..bf5baf0217f8b05d18f7a291e964952eb86d1c8a 100644 --- a/src/main/java/model/FFBoard.java +++ b/src/main/java/model/FFBoard.java @@ -31,14 +31,14 @@ public class FFBoard implements Board<List<ModelElement>> { FFUpdater= new FFUpdater(); for (int index = 0; index < initialFireCount; index++) boardData.addElement(new StandardFire(randomPosition())); - for (int index = 0; index < initialFirefighterCount; index++) + /*for (int index = 0; index < initialFirefighterCount; index++) boardData.addElement(new StandardFireFighter(randomPosition())); for (int index = 0; index < 2; index++) boardData.addElement(new MotorizedFireFighter(randomPosition())); for (int index = 0; index < 10; index++) - boardData.addElement(new Cloud(randomPosition())); - for (int index = 0; index < 50; index++) - boardData.addElement(new Road(randomPosition())); + boardData.addElement(new Cloud(randomPosition()));*/ + for (int index = 0; index < 1000; index++) + boardData.addElement(new Rock(randomPosition())); } @@ -66,7 +66,6 @@ public class FFBoard implements Board<List<ModelElement>> { } public List<Position> updateToNextGeneration() { - List<Position> modifiedPositions = FFUpdater.updateAll(boardData); boardData.setStep(boardData.getStep()+1); return modifiedPositions; diff --git a/src/main/java/model/FFBoardData.java b/src/main/java/model/FFBoardData.java index 1f88593815355d23e72482ecd4de425871ef7dbf..6b21770128f75b952b0303d8464c18df2397857c 100644 --- a/src/main/java/model/FFBoardData.java +++ b/src/main/java/model/FFBoardData.java @@ -48,7 +48,18 @@ public class FFBoardData implements BoardData{ public List<List<Element>> getElements() { return elementList; } + public Cell<Element> getCell(Position position){ + return cells.get(position.column()).get(position.row()); + } + @Override + public int getStep() { + return step; + } + @Override + public void setStep(int step) { + this.step=step; + } public Map<Position, List<Position>> getNeighbors() { return neighbors; } @@ -68,16 +79,5 @@ public class FFBoardData implements BoardData{ elementList.get(element.getType().ordinal()).remove(element); getCell(element.getPosition()).Content.remove(element); } - public Cell<Element> getCell(Position position){ - return cells.get(position.column()).get(position.row()); - } - @Override - public int getStep() { - return step; - } - @Override - public void setStep(int step) { - this.step=step; - } } diff --git a/src/main/java/model/FFUpdater.java b/src/main/java/model/FFUpdater.java index 39e8c2d265f031eefdbfe6fc836c85e4e21279e4..26f5d4cd426950ea704ac44920dc59ed389a11cd 100644 --- a/src/main/java/model/FFUpdater.java +++ b/src/main/java/model/FFUpdater.java @@ -18,8 +18,8 @@ public class FFUpdater implements Updater { updatables.clear(); modifiedPositions=new ArrayList<Position>(); for (ModelElement modelElement: ModelElement.values()) { - System.out.println(modelElement+" "+modelElement.isUpdatabale()); - if (modelElement.isUpdatabale()) + System.out.println(modelElement+" "+modelElement.isUpdatable()); + if (modelElement.isUpdatable()) for (Element e:boardData.getElements().get(modelElement.ordinal())) { updatables.add((Updatable) e); } diff --git a/src/main/java/model/Fire.java b/src/main/java/model/Fire.java index 56d5a02b821709ad3c6c11e277e7ad148d215290..9e9cf5d78d876be75943a741830196fbd5ba01dd 100644 --- a/src/main/java/model/Fire.java +++ b/src/main/java/model/Fire.java @@ -7,18 +7,21 @@ import java.util.List; import java.util.Map; import java.util.stream.Stream; -public abstract class Fire implements Element,Updatable{ +public abstract class Fire implements Element,Updatable,Printable{ + int counter; int delay; ModelElement type; Position position; static Behavior behavior=new FireBehavior(); - Map<ModelElement,ModelElement> fireDictionary=new HashMap<>(); + static Map<ModelElement,ModelElement> fireDictionary=new HashMap<>(); //.put(MAISON,FEUMAISON) public Fire(int delay, ModelElement type, Position position) { + this.counter=0; this.delay = delay; this.type = type; this.position = position; + fireDictionary.put(ModelElement.ROCK,ModelElement.SLOWFIRE); fireDictionary.put(ModelElement.MOUNTAIN,null); } @Override @@ -29,15 +32,17 @@ public abstract class Fire implements Element,Updatable{ public ModelElement getType() { return type; } - private Fire getNewFireByType(BoardData boardData,Position position){ + public static Fire getNewFireByType(BoardData boardData, Position position){ List<ModelElement> s = boardData.getCell(position).Content.stream().map(x -> x.getType()).toList(); for(Map.Entry<ModelElement,ModelElement> entry: fireDictionary.entrySet()){ + System.out.println(entry.toString()+" "+s.contains(entry.getKey())+" "+entry.getValue()); if (s.contains(entry.getKey())) return (Fire) entry.getValue().instanciate(position); } return new StandardFire(position); } @Override public List<Position> updateSelf(BoardData boardData) { + counter++; List<Position> positions=behavior.update(boardData,this); for (Position p:positions) { boardData.addElement(getNewFireByType(boardData,p)); diff --git a/src/main/java/model/FireBehavior.java b/src/main/java/model/FireBehavior.java index db0d8bc322a88716ddac7090d2b5387d6f5f5bda..a321873b1098480bb3aec961c4a7abb3b2a5b8be 100644 --- a/src/main/java/model/FireBehavior.java +++ b/src/main/java/model/FireBehavior.java @@ -7,13 +7,13 @@ import java.util.List; import java.util.Map; import java.util.Set; -public class FireBehavior extends FFBehavior /*implements TangibleBehavior<ModelElement>*/ { +public class FireBehavior extends FFBehavior implements TangibleBehavior<ModelElement> { private List<ModelElement> obstacles=List.of(ModelElement.MOUNTAIN,ModelElement.ROAD); @Override public List<Position> update(BoardData boardData,Element element) { List<Position> positions=new ArrayList<>(); - if (boardData.getStep()%((Fire)element).delay==0){ + if (((Fire)element).counter%((Fire)element).delay==0){ positions=legalNeighbors(boardData,element.getPosition()); } return positions; @@ -24,7 +24,7 @@ public class FireBehavior extends FFBehavior /*implements TangibleBehavior<Model for (Position p:boardData.getNeighbor(position)) { for (Element e:boardData.getCell(p).Content) { if (e instanceof Fire) neighbors.remove(p); - for(ModelElement o:obstacles) + for(ModelElement o:getObstacles()) if (e.getType()==o) neighbors.remove(p); } } @@ -39,6 +39,11 @@ public class FireBehavior extends FFBehavior /*implements TangibleBehavior<Model } return neighbors; } + + @Override + public List<ModelElement> getObstacles() { + return obstacles; + } /*@Override public List<Position> getNext(BoardData boardData) { List<Position> firePositions = boardData.getPositions().get(element.ordinal()); diff --git a/src/main/java/model/FireFighter.java b/src/main/java/model/FireFighter.java index d4928111d28559d6dbf07e2b94fd53701e3c7fdf..dbebf1bfba19a73422e634a4f56e56ee13fecd35 100644 --- a/src/main/java/model/FireFighter.java +++ b/src/main/java/model/FireFighter.java @@ -5,7 +5,7 @@ import util.Position; import java.util.ArrayList; import java.util.List; -public abstract class FireFighter implements Element,Updatable{ +public abstract class FireFighter implements Element,Updatable,Printable{ int speed; ModelElement type; Position position; @@ -24,7 +24,8 @@ public Position getPosition() { public ModelElement getType() { return type; } -@Override + + @Override public List<Position> updateSelf(BoardData boardData) { List<Position> positions=behavior.update(boardData,this); List<Position> modifPositions=new ArrayList<>(positions); diff --git a/src/main/java/model/FireFighterBehavior.java b/src/main/java/model/FireFighterBehavior.java index 49344199b4fb242fed69f1c33e8522d51275a3af..d6b517acc4983dcd670246cca0f13b59f8c017dc 100644 --- a/src/main/java/model/FireFighterBehavior.java +++ b/src/main/java/model/FireFighterBehavior.java @@ -4,14 +4,14 @@ import util.Position; import util.TargetStrategy; import java.util.*; -public class FireFighterBehavior extends FFBehavior implements TangibleBehavior<ModelElement> { +public class FireFighterBehavior extends FFBehavior implements TangibleBehavior<ModelElement>,RemoverBehavior<ModelElement> { private List<ModelElement> obstacles=List.of(ModelElement.MOUNTAIN); private TargetStrategy ts=new TargetStrategy(); List<Position> initializeTargets(BoardData boardData){ List<Position> targets=new ArrayList<>(); for (ModelElement me:ModelElement.values()) { - if (me.isFire()){ + if (me.isInstanceOf(Fire.class)){ System.out.println("0"); for (Element e:boardData.getElements().get(me.ordinal())) { targets.add(e.getPosition()); diff --git a/src/main/java/model/Land.java b/src/main/java/model/Land.java new file mode 100644 index 0000000000000000000000000000000000000000..07fb949a101c756a24b5064df125baa27b4bd799 --- /dev/null +++ b/src/main/java/model/Land.java @@ -0,0 +1,23 @@ +package model; + +import util.Position; + +public abstract class Land implements Element ,Printable{ + Position position; + ModelElement type; + + public Land(Position position) { + this.position = position; + } + + @Override + public Position getPosition() { + return position; + } + + @Override + public ModelElement getType() { + return type; + } + +} diff --git a/src/main/java/model/ModelElement.java b/src/main/java/model/ModelElement.java index ee7fdfcb81fe454bed272cb5831799f195c8f28a..fc2275576036f402903c258d509d6f9cfcd7a465 100644 --- a/src/main/java/model/ModelElement.java +++ b/src/main/java/model/ModelElement.java @@ -12,9 +12,11 @@ public enum ModelElement { FIREFIGHTER(StandardFireFighter.class), MOTORIZEDFIREFIGHTER(MotorizedFireFighter.class), FIRE(StandardFire.class), + SLOWFIRE(SlowFire.class), CLOUD(Cloud.class), MOUNTAIN(Mountain.class), - ROAD(Road.class); + ROAD(Road.class), + ROCK(Rock.class); public final Class<?> c; @@ -22,9 +24,13 @@ public enum ModelElement { this.c =c; System.out.println(c); } - public boolean isUpdatabale(){ - List<Class<?>> Interfaces= Arrays.asList(c.getInterfaces()); - return Interfaces.contains(Updatable.class); + public boolean isUpdatable(){ + Class<?> currentClass=c; + while(!currentClass.equals(Object.class)){ + if (Arrays.asList(currentClass.getInterfaces()).contains(Updatable.class)) return true; + currentClass=currentClass.getSuperclass(); + } + return false; } public boolean isPrintable(){ Class<?> currentClass=c; @@ -34,11 +40,10 @@ public enum ModelElement { } return false; } - public boolean isFire(){ + public boolean isInstanceOf(Class<?> classe){ Class<?> currentClass=c; while(!currentClass.equals(Object.class)){ - System.out.println(currentClass+" "+currentClass.equals(Fire.class)); - if (currentClass.equals(Fire.class)) return true; + if (currentClass.equals(classe)) return true; currentClass=currentClass.getSuperclass(); } return false; diff --git a/src/main/java/model/Mountain.java b/src/main/java/model/Mountain.java index 0ca1db409dafed5e3c5100ff9622027119214c5b..1c66058c70be1579478b506c33f267ad0b858c51 100644 --- a/src/main/java/model/Mountain.java +++ b/src/main/java/model/Mountain.java @@ -5,22 +5,9 @@ import util.Position; import java.util.List; -public class Mountain implements Element { - Position position; - ModelElement type; - +public class Mountain extends Land implements Element { public Mountain(Position position) { - this.position = position; + super(position); type=ModelElement.MOUNTAIN; } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ModelElement getType() { - return type; - } } diff --git a/src/main/java/model/RemoverBehavior.java b/src/main/java/model/RemoverBehavior.java index f0a36495113f82e57e5b2d23ff377d2022709f40..07190d26c14befed97a5d2ad6c36539a96ced31e 100644 --- a/src/main/java/model/RemoverBehavior.java +++ b/src/main/java/model/RemoverBehavior.java @@ -5,5 +5,6 @@ import util.Position; import java.util.List; public interface RemoverBehavior<E> extends Behavior { + public void extinguish(BoardData boardData,Position position); } diff --git a/src/main/java/model/Road.java b/src/main/java/model/Road.java index 436eb5db98ebcfa75657c9cd727dba929178356d..29e63bdbe77da7d78fe6683826522f9dca678b67 100644 --- a/src/main/java/model/Road.java +++ b/src/main/java/model/Road.java @@ -2,22 +2,9 @@ package model; import util.Position; -public class Road implements Element { - Position position; - ModelElement type; - +public class Road extends Land implements Element { public Road(Position position) { - this.position = position; + super(position); type=ModelElement.ROAD; } - - @Override - public Position getPosition() { - return position; - } - - @Override - public ModelElement getType() { - return type; - } } diff --git a/src/main/java/model/Rock.java b/src/main/java/model/Rock.java new file mode 100644 index 0000000000000000000000000000000000000000..8c8f4fdeb56c51a3553b54647743c6c3b66df629 --- /dev/null +++ b/src/main/java/model/Rock.java @@ -0,0 +1,10 @@ +package model; + +import util.Position; + +public class Rock extends Land implements Element { + public Rock(Position position) { + super(position); + type=ModelElement.ROCK; + } +} diff --git a/src/main/java/model/SlowFire.java b/src/main/java/model/SlowFire.java new file mode 100644 index 0000000000000000000000000000000000000000..2160b2c26ec5fa219e32c6a65cf9d32b8bef8a57 --- /dev/null +++ b/src/main/java/model/SlowFire.java @@ -0,0 +1,9 @@ +package model; + +import util.Position; + +public class SlowFire extends Fire implements Updatable{ + public SlowFire(Position position) { + super(4, ModelElement.SLOWFIRE, position); + } +} diff --git a/src/main/java/model/StandardFire.java b/src/main/java/model/StandardFire.java index 73e9c4cefd310919d1196add96ded78056c08a0c..61a5d159b38dac15ba93bdaddb2856ae85d20286 100644 --- a/src/main/java/model/StandardFire.java +++ b/src/main/java/model/StandardFire.java @@ -2,7 +2,7 @@ package model; import util.Position; -public class StandardFire extends Fire implements Updatable{ +public class StandardFire extends Fire{ public StandardFire(Position position) { super(2, ModelElement.FIRE, position); } diff --git a/src/main/java/model/StandardFireFighter.java b/src/main/java/model/StandardFireFighter.java index f30186259965ab2d17f1a392f0b3127286d9a44c..bd573e354d53a64393d4cac1e52a97a552d266eb 100644 --- a/src/main/java/model/StandardFireFighter.java +++ b/src/main/java/model/StandardFireFighter.java @@ -2,7 +2,7 @@ package model; import util.Position; -public class StandardFireFighter extends FireFighter implements Updatable{ +public class StandardFireFighter extends FireFighter{ public StandardFireFighter(Position position) { super(1, ModelElement.FIREFIGHTER, position); } diff --git a/src/main/java/model/TangibleBehavior.java b/src/main/java/model/TangibleBehavior.java index ae61eac7760a3e2e759bb97efea10c8a81013fe2..9ca6669215ee1edabd510b27591e8ac4ec02b94e 100644 --- a/src/main/java/model/TangibleBehavior.java +++ b/src/main/java/model/TangibleBehavior.java @@ -6,5 +6,4 @@ import java.util.List; public interface TangibleBehavior<E> extends Behavior { public List<E> getObstacles(); - public void extinguish(BoardData boardData,Position position); } diff --git a/src/main/java/view/ViewElement.java b/src/main/java/view/ViewElement.java index 82ab204e0ce52ca949a69ced435a9ef542ca7449..a070081c774f71adb7e63157061cdd6f6ee06cc2 100644 --- a/src/main/java/view/ViewElement.java +++ b/src/main/java/view/ViewElement.java @@ -1,11 +1,14 @@ package view; import javafx.scene.paint.Color; +import model.*; public enum ViewElement { - FIREFIGHTER(Color.BLUE), MOTORIZEDFIREFIGHTER(Color.DARKBLUE), FIRE(Color.RED),CLOUD(Color.GRAY) ,MOUNTAIN(Color.BROWN),ROAD(Color.BLACK), EMPTY(Color.WHITE); + FIREFIGHTER(Color.BLUE, StandardFireFighter.class), MOTORIZEDFIREFIGHTER(Color.DARKBLUE, MotorizedFireFighter.class), FIRE(Color.RED,Fire.class),CLOUD(Color.GRAY, Cloud.class) ,MOUNTAIN(Color.BROWN, Mountain.class),ROAD(Color.BLACK, Road.class),ROCK(Color.LIGHTYELLOW, Rock.class), EMPTY(Color.WHITE, null); final Color color; - ViewElement(Color color) { + public final Class<?> c; + ViewElement(Color color, Class<?> c) { this.color = color; + this.c = c; } }