1b: Factory handles obj creation
This commit is contained in:
parent
fd9fd294db
commit
4fd87e2c51
@ -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");
|
||||
}
|
||||
}
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
@ -22,13 +22,6 @@ public class DiamondModel extends DisplayableElementModel {
|
||||
|
||||
private ArrayList<BufferedImage> 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<BufferedImage>();
|
||||
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
@ -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
|
||||
*
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
@ -20,24 +20,14 @@ public class MagicWallModel extends DisplayableElementModel {
|
||||
private ArrayList<BufferedImage> 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<BufferedImage>();
|
||||
/* INIT SPRITE FOR DIAMOND */
|
||||
framesMagicWall.add(grabSprite(loadSprite(spriteName), 0, 0, 16, 16));
|
||||
|
@ -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<BufferedImage>();
|
||||
framesRunningLeft = new ArrayList<BufferedImage>();
|
||||
framesRunningRight = new ArrayList<BufferedImage>();
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user