From 4fd87e2c5113fac5dff4bd6a68c12363e0efe720 Mon Sep 17 00:00:00 2001 From: Daniel Langbein Date: Thu, 28 Nov 2024 18:29:28 +0100 Subject: [PATCH] 1b: Factory handles obj creation --- .../displayableElement/BoulderModel.java | 8 -- .../displayableElement/BrickWallModel.java | 7 - .../displayableElement/CursorModel.java | 4 - .../displayableElement/DiamondModel.java | 9 +- .../models/displayableElement/DirtModel.java | 5 - .../DisplayableElementModel.java | 124 ++++++++++++++---- .../models/displayableElement/DoorModel.java | 4 - .../models/displayableElement/EmptyModel.java | 4 - .../ExpandingWallModel.java | 6 - .../displayableElement/MagicWallModel.java | 18 +-- .../displayableElement/RockfordModel.java | 27 +--- .../displayableElement/SteelWallModel.java | 7 - 12 files changed, 109 insertions(+), 114 deletions(-) diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java index a81df42f..d670d82d 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BoulderModel.java @@ -10,12 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class BoulderModel extends DisplayableElementModel { - BoulderModel(boolean convertible) { - super("boulder", false,true); - setPriority(2); - setCollideSound("die"); - setConvertibleValue(convertible); - - loadSprite("boulder"); - } } \ No newline at end of file diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java index f9b33979..b89dc7ff 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/BrickWallModel.java @@ -10,11 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class BrickWallModel extends DisplayableElementModel { - BrickWallModel() { - super("brickwall", true, false); - setPriority(3); - setCollideSound("touch"); - - loadSprite("brickwall"); - } } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java index 4ab26e12..576d7316 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/CursorModel.java @@ -10,8 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-22 */ public class CursorModel extends DisplayableElementModel { - CursorModel() { - super("cursor"); - this.loadSprite("cursor"); - } } \ No newline at end of file diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java index b2d8a235..59230249 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DiamondModel.java @@ -22,13 +22,6 @@ public class DiamondModel extends DisplayableElementModel { private ArrayList framesDiamond; - DiamondModel() { - super("diamond", true, true); - setCollideSound("coin"); - - this.initSprites(); - } - /** * Updates the sprite (animation loop) * @@ -52,7 +45,7 @@ public class DiamondModel extends DisplayableElementModel { * Initialize the sprites * This is an animated element, hence this method */ - private void initSprites() { + /* package-private */ void initSprites() { /* Initialize object sprites */ this.framesDiamond = new ArrayList(); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java index 7135a8c6..250f0bfc 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DirtModel.java @@ -10,9 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class DirtModel extends DisplayableElementModel { - DirtModel() { - super("dirt", true, false); - - this.loadSprite("dirt"); - } } \ No newline at end of file diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java index 5d3e94c7..6cb61388 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DisplayableElementModel.java @@ -15,9 +15,9 @@ import java.io.IOException; * @since 2015-06-19 */ public abstract class DisplayableElementModel { - protected final String spriteName; - private final boolean destructible; - private final boolean moving; + /* package-private */ String spriteName = null; + private boolean destructible = false; + private boolean moving = false; private int priority = 0; private boolean falling = false; @@ -26,59 +26,123 @@ public abstract class DisplayableElementModel { private BufferedImage sprite; - public DisplayableElementModel(final String spriteName, boolean destructible, boolean moving){ - this.spriteName = spriteName; - this.destructible = destructible; - this.moving = moving; - } - - public DisplayableElementModel(final String spriteName){ - this(spriteName, false, false); - } - public static BoulderModel newBoulderModel(boolean convertible) { - return new BoulderModel(convertible); + BoulderModel bm = new BoulderModel(); + + bm.setSpriteName("boulder"); + bm.setMoving(true); + bm.setPriority(2); + bm.setCollideSound("die"); + bm.setConvertibleValue(convertible); + bm.loadSprite("boulder"); + + return bm; } public static BrickWallModel newBrickWallModel() { - return new BrickWallModel(); + BrickWallModel bwm = new BrickWallModel(); + + bwm.setSpriteName("brickwall"); + bwm.setDestructible(true); + bwm.setPriority(3); + bwm.setCollideSound("touch"); + bwm.loadSprite("brickwall"); + + return bwm; } public static CursorModel newCursorModel() { - return new CursorModel(); + CursorModel cm = new CursorModel(); + + cm.setSpriteName("cursor"); + cm.loadSprite("cursor"); + + return cm; } public static DiamondModel newDiamondModel() { - return new DiamondModel(); + DiamondModel dm = new DiamondModel(); + + dm.setSpriteName("diamond"); + dm.setDestructible(true); + dm.setMoving(true); + dm.setCollideSound("coin"); + dm.initSprites(); + + return dm; } public static DirtModel newDirtModel() { - return new DirtModel(); + DirtModel dm = new DirtModel(); + + dm.setSpriteName("dirt"); + dm.setDestructible(true); + dm.loadSprite("dirt"); + + return dm; } public static DoorModel newDoorModel() { - return new DoorModel(); + DoorModel dm = new DoorModel(); + + dm.setSpriteName("door"); + dm.loadSprite("door"); + + return dm; } public static EmptyModel newEmptyModel() { - return new EmptyModel(); + EmptyModel em = new EmptyModel(); + + em.setSpriteName("black"); + em.loadSprite("black"); + + return em; } public static ExpandingWallModel newExpandingWallModel() { - return new ExpandingWallModel(); + ExpandingWallModel ewm = new ExpandingWallModel(); + + ewm.setSpriteName("expandingwall"); + ewm.setPriority(10); + ewm.loadSprite("expandingwall"); + + return ewm; } public static MagicWallModel newMagicWallModel() { - return new MagicWallModel(); + MagicWallModel mwm = new MagicWallModel(); + + mwm.setSpriteName("magicwall"); + mwm.setPriority(3); + mwm.setCollideSound("touch"); + mwm.initSprites(); + + return mwm; } public static RockfordModel newRockfordModel() { - return new RockfordModel(); + RockfordModel rm = new RockfordModel(); + + rm.setSpriteName("rockford"); + rm.setDestructible(true); + rm.setMoving(true); + rm.setPriority(1); + rm.initSprites(); + + return rm; } public static SteelWallModel newSteelWallModel() { - return new SteelWallModel(); + SteelWallModel swm = new SteelWallModel(); + + swm.setSpriteName("steelwall"); + swm.setPriority(3); + swm.setCollideSound("touch"); + swm.loadSprite("steelwall"); + + return swm; } /** @@ -90,6 +154,10 @@ public abstract class DisplayableElementModel { return this.destructible; } + public void setDestructible(boolean destructible) { + this.destructible = destructible; + } + /** * Gets the 'moving' value * @@ -99,6 +167,10 @@ public abstract class DisplayableElementModel { return this.moving; } + public void setMoving(boolean moving) { + this.moving = moving; + } + /** * Gets the sprite name value * @@ -108,6 +180,10 @@ public abstract class DisplayableElementModel { return this.spriteName; } + public void setSpriteName(String spriteName) { + this.spriteName = spriteName; + } + /** * Gets the folder path of the sprite storage * diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java index bc01a5d3..7c351b22 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/DoorModel.java @@ -10,8 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class DoorModel extends DisplayableElementModel { - DoorModel() { - super("door"); - this.loadSprite("door"); - } } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java index f89ea3cd..b1bfef71 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/EmptyModel.java @@ -10,8 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class EmptyModel extends DisplayableElementModel { - EmptyModel() { - super("black"); - this.loadSprite("black"); - } } diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java index 9a868ba8..3ece895f 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/ExpandingWallModel.java @@ -10,10 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class ExpandingWallModel extends DisplayableElementModel { - ExpandingWallModel() { - super("expandingwall"); - setPriority(10); - - this.loadSprite("expandingwall"); - } } \ No newline at end of file diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java index 821ff95d..77f6a978 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/MagicWallModel.java @@ -20,24 +20,14 @@ public class MagicWallModel extends DisplayableElementModel { private ArrayList framesMagicWall; private long previousTime; - private int currentFrame; - private long speed; - - MagicWallModel() { - super("magicwall"); - setPriority(3); - setCollideSound("touch"); - - this.currentFrame = 0; - this.speed = 100; - this.initSprites(); - } + private int currentFrame = 0; /** * Function to animate the sprite */ public void update(long time) { - if (time - previousTime >= speed) { + long speed = 100; + if (time - previousTime >= speed) { // Update animation previousTime = time; @@ -54,7 +44,7 @@ public class MagicWallModel extends DisplayableElementModel { /** * Init the subimages */ - private void initSprites() { + /* package-private */ void initSprites() { this.framesMagicWall = new ArrayList(); /* INIT SPRITE FOR DIAMOND */ framesMagicWall.add(grabSprite(loadSprite(spriteName), 0, 0, 16, 16)); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java index 84089cea..3f968301 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/RockfordModel.java @@ -27,11 +27,6 @@ public class RockfordModel extends DisplayableElementModel { private final int SIZ_X_OF_SPRITE = 16; private final int SIZ_Y_OF_SPRITE = 16; - /** - * Defines the current speed of the object - */ - private long speed; - /** * Maps possible states for Rockford */ @@ -44,29 +39,15 @@ public class RockfordModel extends DisplayableElementModel { private long previousTime; private int currentFrame; - private boolean hasExploded; - - RockfordModel() { - super("rockford", true, true); - setPriority(1); - - // Speed of the animation of the sprite - this.setSpeed(100); - // Init the sprites in arrays - this.initSprites(); - this.hasExploded = false; - } - - public void setSpeed(int speed) { - this.speed = speed; - } + private boolean hasExploded = false; /** * Updates the sprite animation * (And only that single thing) */ public void update(long time) { - if (time - this.previousTime >= this.speed) { + long speed = 100; + if (time - this.previousTime >= speed) { // Update the animation this.previousTime = time; try { @@ -229,7 +210,7 @@ public class RockfordModel extends DisplayableElementModel { * Initializes all sprites from the main image * Takes the sub images and append them into storage arrays */ - private void initSprites() { + /* package-private */ void initSprites() { framesBlinking = new ArrayList(); framesRunningLeft = new ArrayList(); framesRunningRight = new ArrayList(); diff --git a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java index 91cf1a1e..14484868 100644 --- a/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java +++ b/boulder-dash/src/fr/enssat/BoulderDash/models/displayableElement/SteelWallModel.java @@ -10,11 +10,4 @@ package fr.enssat.BoulderDash.models.displayableElement; * @since 2015-06-19 */ public class SteelWallModel extends DisplayableElementModel { - SteelWallModel() { - super("steelwall"); - setPriority(3); - setCollideSound("touch"); - - this.loadSprite("steelwall"); - } }