From f0ad616ae21f98e2d89bd48f97e92f7ea8424b87 Mon Sep 17 00:00:00 2001 From: Daniel Langbein Date: Sat, 16 Nov 2024 13:32:32 +0100 Subject: [PATCH] 1a: encapsulate classes with factory --- .../BoulderAndDiamondController.java | 7 +- .../controllers/GameController.java | 3 +- .../controllers/GameKeyController.java | 6 +- .../controllers/LevelEditorController.java | 3 +- .../controllers/LevelEditorKeyController.java | 2 +- .../NavigationBetweenViewController.java | 4 +- .../controllers/RockfordUpdateController.java | 2 +- .../BoulderDash/helpers/LevelLoadHelper.java | 4 +- .../BoulderDash/helpers/LevelSaveHelper.java | 7 +- .../helpers/ModelConvertHelper.java | 78 +++++++++++++------ .../BoulderModel.java | 13 +--- .../BrickWallModel.java | 11 +-- .../{ => displayableElement}/CursorModel.java | 9 +-- .../DiamondModel.java | 11 +-- .../{ => displayableElement}/DirtModel.java | 6 +- .../DisplayableElementModel.java | 53 ++++++++++++- .../{ => displayableElement}/DoorModel.java | 9 +-- .../{ => displayableElement}/EmptyModel.java | 9 +-- .../ExpandingWallModel.java | 11 +-- .../{ => displayableElement}/LevelModel.java | 67 ++++++++-------- .../MagicWallModel.java | 6 +- .../RockfordModel.java | 9 +-- .../SteelWallModel.java | 9 +-- .../BoulderDash/views/GameGroundView.java | 3 +- .../fr/enssat/BoulderDash/views/GameView.java | 4 +- .../enssat/BoulderDash/views/GroundView.java | 2 +- .../BoulderDash/views/InformationPanel.java | 2 +- .../views/LevelEditorGroundView.java | 4 +- .../BoulderDash/views/LevelEditorView.java | 5 +- 29 files changed, 185 insertions(+), 174 deletions(-) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/BoulderModel.java (78%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/BrickWallModel.java (84%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/CursorModel.java (85%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/DiamondModel.java (91%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/DirtModel.java (88%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/DisplayableElementModel.java (86%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/DoorModel.java (84%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/EmptyModel.java (84%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/ExpandingWallModel.java (84%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/LevelModel.java (88%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/MagicWallModel.java (94%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/RockfordModel.java (97%) rename boulder-dash/src/fr/enssat/BoulderDash/models/{ => displayableElement}/SteelWallModel.java (84%) diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/BoulderAndDiamondController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/BoulderAndDiamondController.java index 656481ff..49c51f5a 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/BoulderAndDiamondController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/BoulderAndDiamondController.java @@ -1,8 +1,7 @@ package fr.enssat.BoulderDash.controllers; -import fr.enssat.BoulderDash.models.LevelModel; -import fr.enssat.BoulderDash.models.DirtModel; -import fr.enssat.BoulderDash.models.DisplayableElementModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.DisplayableElementModel; import fr.enssat.BoulderDash.helpers.AudioLoadHelper; /** @@ -62,7 +61,7 @@ public class BoulderAndDiamondController implements Runnable { DisplayableElementModel elementModel = this.levelModel.getGroundLevelModel()[x][y]; if(elementModel == null) { - elementModel = new DirtModel(); + elementModel = DisplayableElementModel.newDirtModel(); } String spriteName = elementModel.getSpriteName(); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameController.java index ae1df524..521f540b 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameController.java @@ -1,8 +1,7 @@ package fr.enssat.BoulderDash.controllers; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import fr.enssat.BoulderDash.helpers.AudioLoadHelper; -import fr.enssat.BoulderDash.controllers.NavigationBetweenViewController; import fr.enssat.BoulderDash.views.MenuView; import fr.enssat.BoulderDash.views.GameView; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameKeyController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameKeyController.java index a7821b1d..0a8c2002 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameKeyController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/GameKeyController.java @@ -1,9 +1,7 @@ package fr.enssat.BoulderDash.controllers; -import fr.enssat.BoulderDash.models.DisplayableElementModel; -import fr.enssat.BoulderDash.models.LevelModel; -import fr.enssat.BoulderDash.controllers.RockfordUpdateController; -import fr.enssat.BoulderDash.controllers.BoulderAndDiamondController; +import fr.enssat.BoulderDash.models.displayableElement.DisplayableElementModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import fr.enssat.BoulderDash.helpers.AudioLoadHelper; import java.awt.event.KeyEvent; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorController.java index c5a7a410..184c5f97 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorController.java @@ -6,10 +6,9 @@ import java.awt.event.ActionListener; import fr.enssat.BoulderDash.exceptions.LevelConstraintNotRespectedException; import fr.enssat.BoulderDash.helpers.LevelRemoveHelper; import fr.enssat.BoulderDash.helpers.LevelSaveHelper; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import fr.enssat.BoulderDash.views.HelpView; import fr.enssat.BoulderDash.views.LevelEditorView; -import fr.enssat.BoulderDash.controllers.NavigationBetweenViewController; import javax.swing.*; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorKeyController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorKeyController.java index 78f98d3f..acc90463 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorKeyController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/LevelEditorKeyController.java @@ -1,6 +1,6 @@ package fr.enssat.BoulderDash.controllers; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import fr.enssat.BoulderDash.views.LevelEditorView; import java.awt.event.KeyEvent; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/NavigationBetweenViewController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/NavigationBetweenViewController.java index c466df16..62b42129 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/NavigationBetweenViewController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/NavigationBetweenViewController.java @@ -4,10 +4,8 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import fr.enssat.BoulderDash.helpers.AudioLoadHelper; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import fr.enssat.BoulderDash.views.MenuView; -import fr.enssat.BoulderDash.controllers.LevelEditorController; -import fr.enssat.BoulderDash.controllers.GameController; /** * Controller to navigate between the different views diff --git a/boulder-dash/src/fr/enssat/BoulderDash/controllers/RockfordUpdateController.java b/boulder-dash/src/fr/enssat/BoulderDash/controllers/RockfordUpdateController.java index c4ecd1ba..65838def 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/controllers/RockfordUpdateController.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/controllers/RockfordUpdateController.java @@ -1,6 +1,6 @@ package fr.enssat.BoulderDash.controllers; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; /** * ElementPositionUpdateHelper diff --git a/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelLoadHelper.java b/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelLoadHelper.java index 31f07349..01ecf913 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelLoadHelper.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelLoadHelper.java @@ -2,8 +2,8 @@ package fr.enssat.BoulderDash.helpers; import fr.enssat.BoulderDash.exceptions.UnknownModelException; -import fr.enssat.BoulderDash.models.RockfordModel; -import fr.enssat.BoulderDash.models.DisplayableElementModel; +import fr.enssat.BoulderDash.models.displayableElement.RockfordModel; +import fr.enssat.BoulderDash.models.displayableElement.DisplayableElementModel; import org.w3c.dom.Document; import org.w3c.dom.Element; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelSaveHelper.java b/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelSaveHelper.java index c314a9a7..26f97a20 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelSaveHelper.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/helpers/LevelSaveHelper.java @@ -3,8 +3,6 @@ package fr.enssat.BoulderDash.helpers; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -17,8 +15,7 @@ import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import fr.enssat.BoulderDash.models.DisplayableElementModel; -import fr.enssat.BoulderDash.models.DirtModel; +import fr.enssat.BoulderDash.models.displayableElement.DisplayableElementModel; /** @@ -320,7 +317,7 @@ public class LevelSaveHelper { // Null? if(curGridElement == null) { - curGridElement = new DirtModel(); + curGridElement = DisplayableElementModel.newDirtModel(); } // Retrieve current values diff --git a/boulder-dash/src/fr/enssat/BoulderDash/helpers/ModelConvertHelper.java b/boulder-dash/src/fr/enssat/BoulderDash/helpers/ModelConvertHelper.java index 87a4261f..93f66a3b 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/helpers/ModelConvertHelper.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/helpers/ModelConvertHelper.java @@ -2,16 +2,7 @@ package fr.enssat.BoulderDash.helpers; import fr.enssat.BoulderDash.exceptions.UnknownModelException; -import fr.enssat.BoulderDash.models.ExpandingWallModel; -import fr.enssat.BoulderDash.models.RockfordModel; -import fr.enssat.BoulderDash.models.DisplayableElementModel; -import fr.enssat.BoulderDash.models.EmptyModel; -import fr.enssat.BoulderDash.models.BrickWallModel; -import fr.enssat.BoulderDash.models.BoulderModel; -import fr.enssat.BoulderDash.models.DiamondModel; -import fr.enssat.BoulderDash.models.DirtModel; -import fr.enssat.BoulderDash.models.MagicWallModel; -import fr.enssat.BoulderDash.models.SteelWallModel; +import fr.enssat.BoulderDash.models.displayableElement.DisplayableElementModel; /** @@ -53,19 +44,60 @@ public class ModelConvertHelper { * @return Model associated to given sprite name */ public DisplayableElementModel toModel(String spriteName, boolean isConvertible) throws UnknownModelException { - // Instantiates the sprite element matching the given sprite name - return switch (spriteName) { - case "black", "Black" -> new EmptyModel(); - case "boulder", "Boulder" -> new BoulderModel(isConvertible); - case "brickwall", "Brick Wall" -> new BrickWallModel(); - case "diamond", "Diamond" -> new DiamondModel(); - case "dirt", "Dirt" -> new DirtModel(); - case "magicwall", "Magic Wall" -> new MagicWallModel(); - case "rockford", "Rockford" -> new RockfordModel(); - case "steelwall", "Steel Wall" -> new SteelWallModel(); - case "expandingwall", "Expanding Wall" -> new ExpandingWallModel(); - default -> throw new UnknownModelException("Unknown model element > " + spriteName); - }; + DisplayableElementModel element; + + // Instanciates the sprite element matching the given sprite name + switch (spriteName) { + case "black": + case "Black": + element = DisplayableElementModel.newEmptyModel(); + break; + + case "boulder": + case "Boulder": + element = DisplayableElementModel.newBoulderModel(isConvertible); + break; + + case "brickwall": + case "Brick Wall": + element = DisplayableElementModel.newBrickWallModel(); + break; + + case "diamond": + case "Diamond": + element = DisplayableElementModel.newDiamondModel(); + break; + + case "dirt": + case "Dirt": + element = DisplayableElementModel.newDirtModel(); + break; + + case "magicwall": + case "Magic Wall": + element = DisplayableElementModel.newMagicWallModel(); + break; + + case "rockford": + case "Rockford": + element = DisplayableElementModel.newRockfordModel(); + break; + + case "steelwall": + case "Steel Wall": + element = DisplayableElementModel.newSteelWallModel(); + break; + + case "expandingwall": + case "Expanding Wall": + element = DisplayableElementModel.newExpandingWallModel(); + break; + + default: + throw new UnknownModelException("Unknown model element > " + spriteName); + } + + return element; } /** diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/BoulderModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java similarity index 78% rename from boulder-dash/src/fr/enssat/BoulderDash/models/BoulderModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java index ad29b564..2db0b294 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/BoulderModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -34,15 +32,8 @@ public class BoulderModel extends DisplayableElementModel { collideSound = "die"; } - /** - * Class constructor - */ - public BoulderModel(boolean convertible) { + BoulderModel(boolean convertible) { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, false, collideSound, convertible); this.loadSprite(spriteName); } - - public BoulderModel() { - this(false); - } } \ No newline at end of file diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/BrickWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java similarity index 84% rename from boulder-dash/src/fr/enssat/BoulderDash/models/BrickWallModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java index 15269b39..96ebfe57 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/BrickWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -35,11 +33,8 @@ public class BrickWallModel extends DisplayableElementModel { falling = false; collideSound = "touch"; } - - /** - * Class constructor - */ - public BrickWallModel() { + + BrickWallModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/CursorModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java similarity index 85% rename from boulder-dash/src/fr/enssat/BoulderDash/models/CursorModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java index 1e7ba34a..553dc958 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/CursorModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -36,10 +34,7 @@ public class CursorModel extends DisplayableElementModel { collideSound = null; } - /** - * Class constructor - */ - public CursorModel() { + CursorModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/DiamondModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java similarity index 91% rename from boulder-dash/src/fr/enssat/BoulderDash/models/DiamondModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java index ba1dbab5..6df32537 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/DiamondModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java @@ -1,10 +1,8 @@ -package fr.enssat.BoulderDash.models; +package fr.enssat.BoulderDash.models.displayableElement; import java.awt.image.BufferedImage; import java.util.ArrayList; -import fr.enssat.BoulderDash.models.DisplayableElementModel; - /** * DiamondModel @@ -45,16 +43,13 @@ public class DiamondModel extends DisplayableElementModel { collideSound = "coin"; } - /** - * Class constructor - */ - public DiamondModel() { + DiamondModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, false, collideSound); this.initSprites(); } - /** + /** * Updates the sprite (animation loop) * * @param time Current time diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/DirtModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java similarity index 88% rename from boulder-dash/src/fr/enssat/BoulderDash/models/DirtModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java index c0635c9b..d4e45e8e 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/DirtModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -39,7 +37,7 @@ public class DirtModel extends DisplayableElementModel { /** * Class constructor */ - public DirtModel() { + DirtModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/DisplayableElementModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java similarity index 86% rename from boulder-dash/src/fr/enssat/BoulderDash/models/DisplayableElementModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java index dd0bf8c1..c5d9756f 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/DisplayableElementModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java @@ -1,4 +1,4 @@ -package fr.enssat.BoulderDash.models; +package fr.enssat.BoulderDash.models.displayableElement; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; @@ -68,7 +68,56 @@ public abstract class DisplayableElementModel { ); } - /** + public static BoulderModel newBoulderModel() { + return DisplayableElementModel.newBoulderModel(false); + } + + public static BoulderModel newBoulderModel(boolean convertible) { + return new BoulderModel(convertible); + } + + public static BrickWallModel newBrickWallModel() { + return new BrickWallModel(); + } + + public static CursorModel newCursorModel() { + return new CursorModel(); + } + + public static DiamondModel newDiamondModel() { + return new DiamondModel(); + } + + public static DirtModel newDirtModel() { + return new DirtModel(); + } + + public static DoorModel newDoorModel() { + return new DoorModel(); + } + + public static EmptyModel newEmptyModel() { + return new EmptyModel(); + } + + public static ExpandingWallModel newExpandingWallModel() { + return new ExpandingWallModel(); + } + + public static MagicWallModel newMagicWallModel() { + return new MagicWallModel(); + } + + + public static RockfordModel newRockfordModel() { + return new RockfordModel(); + } + + public static SteelWallModel newSteelWallModel() { + return new SteelWallModel(); + } + + /** * Gets the 'destructible' value * * @return Whether object is destructible or not diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/DoorModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java similarity index 84% rename from boulder-dash/src/fr/enssat/BoulderDash/models/DoorModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java index 26f0f039..0f5059c3 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/DoorModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -36,10 +34,7 @@ public class DoorModel extends DisplayableElementModel { collideSound = null; } - /** - * Class constructor - */ - public DoorModel() { + DoorModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/EmptyModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java similarity index 84% rename from boulder-dash/src/fr/enssat/BoulderDash/models/EmptyModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java index 4f538009..a126f71f 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/EmptyModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -36,10 +34,7 @@ public class EmptyModel extends DisplayableElementModel { collideSound = null; } - /** - * Class constructor - */ - public EmptyModel() { + EmptyModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/ExpandingWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java similarity index 84% rename from boulder-dash/src/fr/enssat/BoulderDash/models/ExpandingWallModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java index f0be9ce5..edd7d18e 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/ExpandingWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -35,11 +33,8 @@ public class ExpandingWallModel extends DisplayableElementModel { falling = false; collideSound = null; } - - /** - * Class constructor - */ - public ExpandingWallModel() { + + ExpandingWallModel() { super(destructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/LevelModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/LevelModel.java similarity index 88% rename from boulder-dash/src/fr/enssat/BoulderDash/models/LevelModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/LevelModel.java index 8c350630..0ea98e0f 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/LevelModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/LevelModel.java @@ -1,10 +1,11 @@ -package fr.enssat.BoulderDash.models; +package fr.enssat.BoulderDash.models.displayableElement; import fr.enssat.BoulderDash.exceptions.LevelConstraintNotRespectedException; import fr.enssat.BoulderDash.exceptions.UnknownModelException; import fr.enssat.BoulderDash.helpers.LevelLoadHelper; import fr.enssat.BoulderDash.helpers.AudioLoadHelper; import fr.enssat.BoulderDash.helpers.ModelConvertHelper; +import fr.enssat.BoulderDash.models.GameInformationModel; import java.awt.image.BufferedImage; import java.util.Observable; @@ -74,7 +75,7 @@ public class LevelModel extends Observable implements Runnable { this.sizeWidth = this.levelLoadHelper.getWidthSizeValue(); this.sizeHeight = this.levelLoadHelper.getHeightSizeValue(); - this.cursorModel = new CursorModel(); + this.cursorModel = DisplayableElementModel.newCursorModel(); this.gameInformationModel = new GameInformationModel(this.levelLoadHelper.getDiamondsToCatch()); this.createLimits(); @@ -123,7 +124,7 @@ public class LevelModel extends Observable implements Runnable { for (int x = 0; x < levelModel.sizeWidth; x++) { for (int y = 0; y < levelModel.sizeHeight; y++) { - levelModel.groundGrid[x][y] = new DirtModel(); + levelModel.groundGrid[x][y] = DisplayableElementModel.newDirtModel(); } } @@ -156,12 +157,12 @@ public class LevelModel extends Observable implements Runnable { int maxHeight = this.sizeHeight - 1; for (int x = 0; x < this.sizeWidth; x++) { - this.groundGrid[x][0] = new SteelWallModel(); - this.groundGrid[x][maxHeight] = new SteelWallModel(); + this.groundGrid[x][0] = DisplayableElementModel.newSteelWallModel(); + this.groundGrid[x][maxHeight] = DisplayableElementModel.newSteelWallModel(); } for (int y = 0; y < this.sizeHeight; y++) { - this.groundGrid[0][y] = new SteelWallModel(); - this.groundGrid[maxWidth][y] = new SteelWallModel(); + this.groundGrid[0][y] = DisplayableElementModel.newSteelWallModel(); + this.groundGrid[maxWidth][y] = DisplayableElementModel.newSteelWallModel(); } } @@ -254,7 +255,7 @@ public class LevelModel extends Observable implements Runnable { // Check that we are not out of bound... if (this.isOutOfBounds(posX, posY) == false) { // Create a new empty model in the old pos of Rockford - this.groundGrid[oldX][oldY] = new EmptyModel(); + this.groundGrid[oldX][oldY] = DisplayableElementModel.newEmptyModel(); // Save the x / y pos of Rockford in the levelModel only this.updateRockfordPosition(posX, posY); @@ -270,7 +271,7 @@ public class LevelModel extends Observable implements Runnable { private void spawnExit() { int x = (int) (Math.random() * (this.getSizeHeight() - 2)); int y = (int) (Math.random() * (this.getSizeWidth() - 2)); - this.groundGrid[x + 1][y + 1] = new DoorModel(); + this.groundGrid[x + 1][y + 1] = DisplayableElementModel.newDoorModel(); } /** @@ -347,7 +348,7 @@ public class LevelModel extends Observable implements Runnable { DisplayableElementModel elementModel = this.getDisplayableElement(x, y); if(elementModel == null) { - return new DirtModel().getSprite(); + return DisplayableElementModel.newDirtModel().getSprite(); } return elementModel.getSprite(); @@ -361,7 +362,7 @@ public class LevelModel extends Observable implements Runnable { public BufferedImage getCursorImage() { if (this.cursorModel == null) { - this.cursorModel = new CursorModel(); + this.cursorModel = DisplayableElementModel.newCursorModel(); } return this.cursorModel.getSprite(); @@ -484,7 +485,7 @@ public class LevelModel extends Observable implements Runnable { */ public void updateSprites(int x, int y) { if(groundGrid[x][y] == null) { - groundGrid[x][y] = new DirtModel(); + groundGrid[x][y] = DisplayableElementModel.newDirtModel(); } groundGrid[x][y].update(System.currentTimeMillis()); @@ -653,15 +654,15 @@ public class LevelModel extends Observable implements Runnable { * @param y Object vertical position */ public void exploseGround(int x, int y) { - this.groundGrid[x][y] = new EmptyModel(); - this.groundGrid[x + 1][y] = new EmptyModel(); - this.groundGrid[x - 1][y] = new EmptyModel(); - this.groundGrid[x][y + 1] = new EmptyModel(); - this.groundGrid[x + 1][y + 1] = new EmptyModel(); - this.groundGrid[x - 1][y + 1] = new EmptyModel(); - this.groundGrid[x][y - 1] = new EmptyModel(); - this.groundGrid[x + 1][y - 1] = new EmptyModel(); - this.groundGrid[x - 1][y - 1] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x + 1][y] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x - 1][y] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x][y + 1] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x + 1][y + 1] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x - 1][y + 1] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x][y - 1] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x + 1][y - 1] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x - 1][y - 1] = DisplayableElementModel.newEmptyModel(); this.rockford.setHasExplosed(true); // Again a sleep to notify the observers properly @@ -683,7 +684,7 @@ public class LevelModel extends Observable implements Runnable { public void makeThisDisplayableElementFall(int x, int y) { this.groundGrid[x][y].setFalling(true); this.groundGrid[x][y + 1] = this.groundGrid[x][y]; - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -695,7 +696,7 @@ public class LevelModel extends Observable implements Runnable { public void makeThisBoulderSlideLeft(int x, int y) { this.groundGrid[x][y].setFalling(true); this.groundGrid[x - 1][y + 1] = this.groundGrid[x][y]; - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -707,7 +708,7 @@ public class LevelModel extends Observable implements Runnable { public void makeThisBoulderSlideRight(int x, int y) { this.groundGrid[x][y].setFalling(true); this.groundGrid[x + 1][y + 1] = this.groundGrid[x][y]; - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -717,8 +718,8 @@ public class LevelModel extends Observable implements Runnable { * @param y Object vertical position */ public void transformThisBoulderIntoADiamond(int x, int y) { - this.groundGrid[x][y + 2] = new DiamondModel(); - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y + 2] = DisplayableElementModel.newDiamondModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -729,7 +730,7 @@ public class LevelModel extends Observable implements Runnable { */ public void moveThisBoulderToRight(int x, int y) { this.groundGrid[x + 1][y] = this.groundGrid[x][y]; - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -740,7 +741,7 @@ public class LevelModel extends Observable implements Runnable { */ public void moveThisBoulderToLeft(int x, int y) { this.groundGrid[x - 1][y] = this.groundGrid[x][y]; - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -750,7 +751,7 @@ public class LevelModel extends Observable implements Runnable { * @param y Object vertical position */ public void deleteThisBoulder(int x, int y) { - this.groundGrid[x][y] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); } /** @@ -769,8 +770,8 @@ public class LevelModel extends Observable implements Runnable { * @param y */ public void exploseThisBrickWall(int x, int y) { - this.groundGrid[x][y] = new EmptyModel(); - this.groundGrid[x][y + 1] = new EmptyModel(); + this.groundGrid[x][y] = DisplayableElementModel.newEmptyModel(); + this.groundGrid[x][y + 1] = DisplayableElementModel.newEmptyModel(); } /** @@ -780,7 +781,7 @@ public class LevelModel extends Observable implements Runnable { * @param y */ public void expandThisWallToLeft(int x, int y) { - this.groundGrid[x - 1][y] = new ExpandingWallModel(); + this.groundGrid[x - 1][y] = DisplayableElementModel.newExpandingWallModel(); } /** @@ -790,7 +791,7 @@ public class LevelModel extends Observable implements Runnable { * @param y */ public void expandThisWallToRight(int x, int y) { - this.groundGrid[x + 1][y] = new ExpandingWallModel(); + this.groundGrid[x + 1][y] = DisplayableElementModel.newExpandingWallModel(); } /** diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/MagicWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java similarity index 94% rename from boulder-dash/src/fr/enssat/BoulderDash/models/MagicWallModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java index 366c3553..5c83ad14 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/MagicWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java @@ -1,10 +1,8 @@ -package fr.enssat.BoulderDash.models; +package fr.enssat.BoulderDash.models.displayableElement; import java.awt.image.BufferedImage; import java.util.ArrayList; -import fr.enssat.BoulderDash.models.DisplayableElementModel; - /** * MagicWallModel @@ -52,7 +50,7 @@ public class MagicWallModel extends DisplayableElementModel { /** * Class constructor */ - public MagicWallModel() { + MagicWallModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.currentFrame = 0; this.speed = 100; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/RockfordModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java similarity index 97% rename from boulder-dash/src/fr/enssat/BoulderDash/models/RockfordModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java index e958ebf4..f4f527d6 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/RockfordModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java @@ -1,10 +1,8 @@ -package fr.enssat.BoulderDash.models; +package fr.enssat.BoulderDash.models.displayableElement; import java.awt.image.BufferedImage; import java.util.ArrayList; -import fr.enssat.BoulderDash.models.DisplayableElementModel; - /** * RockfordModel @@ -72,10 +70,7 @@ public class RockfordModel extends DisplayableElementModel { collideSound = null; } - /** - * Class constructor - */ - public RockfordModel() { + RockfordModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); // Speed of the animation of the sprite this.setSpeed(100); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/SteelWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java similarity index 84% rename from boulder-dash/src/fr/enssat/BoulderDash/models/SteelWallModel.java rename to boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java index 2696ac1e..faa0e06c 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/SteelWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java @@ -1,6 +1,4 @@ -package fr.enssat.BoulderDash.models; - -import fr.enssat.BoulderDash.models.DisplayableElementModel; +package fr.enssat.BoulderDash.models.displayableElement; /** @@ -36,10 +34,7 @@ public class SteelWallModel extends DisplayableElementModel { collideSound = "touch"; } - /** - * Class constructor - */ - public SteelWallModel() { + SteelWallModel() { super(isDestructible, canMove, spriteName, priority, impactExplosive, animate, falling, collideSound); this.loadSprite(spriteName); } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/GameGroundView.java b/boulder-dash/src/fr/enssat/BoulderDash/views/GameGroundView.java index 640e7fd2..60c12883 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/GameGroundView.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/GameGroundView.java @@ -1,9 +1,8 @@ package fr.enssat.BoulderDash.views; -import fr.enssat.BoulderDash.views.GroundView; import fr.enssat.BoulderDash.controllers.GameController; import fr.enssat.BoulderDash.controllers.GameKeyController; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import javax.swing.*; import java.awt.*; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/GameView.java b/boulder-dash/src/fr/enssat/BoulderDash/views/GameView.java index 8874d528..824a9612 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/GameView.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/GameView.java @@ -7,9 +7,7 @@ import java.util.Observable; import java.util.Observer; import fr.enssat.BoulderDash.controllers.GameController; -import fr.enssat.BoulderDash.models.LevelModel; -import fr.enssat.BoulderDash.views.GameGroundView; -import fr.enssat.BoulderDash.views.InformationPanel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; /** diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/GroundView.java b/boulder-dash/src/fr/enssat/BoulderDash/views/GroundView.java index 359bbcb4..b7784b90 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/GroundView.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/GroundView.java @@ -1,6 +1,6 @@ package fr.enssat.BoulderDash.views; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; import javax.swing.*; diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/InformationPanel.java b/boulder-dash/src/fr/enssat/BoulderDash/views/InformationPanel.java index 95efc596..869848a1 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/InformationPanel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/InformationPanel.java @@ -6,7 +6,7 @@ import java.util.Observer; import javax.swing.JPanel; import javax.swing.JTextArea; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; /** diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorGroundView.java b/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorGroundView.java index 417a1b75..7006ca9e 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorGroundView.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorGroundView.java @@ -1,9 +1,7 @@ package fr.enssat.BoulderDash.views; -import fr.enssat.BoulderDash.views.GroundView; -import fr.enssat.BoulderDash.views.LevelEditorView; import fr.enssat.BoulderDash.controllers.LevelEditorKeyController; -import fr.enssat.BoulderDash.models.LevelModel; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; /** diff --git a/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorView.java b/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorView.java index 4f85de46..2f7ea775 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorView.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/views/LevelEditorView.java @@ -8,10 +8,7 @@ import java.util.Observer; import fr.enssat.BoulderDash.helpers.LevelSelectorHelper; import fr.enssat.BoulderDash.controllers.LevelEditorController; import fr.enssat.BoulderDash.controllers.NavigationBetweenViewController; -import fr.enssat.BoulderDash.models.LevelModel; -import fr.enssat.BoulderDash.views.LevelEditorGroundView; -import fr.enssat.BoulderDash.views.AssetsLevelEditorComponent; -import fr.enssat.BoulderDash.views.MenuLevelSelector; +import fr.enssat.BoulderDash.models.displayableElement.LevelModel; /**