ueb03 - Task3_d --second_trial
This commit is contained in:
parent
96457af2d3
commit
ee7ed3cb43
@ -109,62 +109,81 @@ public class BoulderAndDiamondController extends AbstractLevelController impleme
|
||||
* @param y Vertical position
|
||||
*/
|
||||
private void manageFallingObjectBehavior(int x, int y) {
|
||||
|
||||
// Task3 - Variable to get rig of calling one Method in if-clause several times
|
||||
// Get surrounding elements
|
||||
DisplayableElementModel element = this.levelModel.getElement(x, y);
|
||||
DisplayableElementModel elementTwoBelow = this.levelModel.getElementTwoBelow(x, y);
|
||||
|
||||
// Get informed about Rockford surroundings
|
||||
DisplayableElementModel elementBelow = this.levelModel.getElementBelow(x, y);
|
||||
DisplayableElementModel elementLeft = this.levelModel.getElementLeft(x, y);
|
||||
DisplayableElementModel elementBelow = this.levelModel.getElementBelow(x, y);
|
||||
DisplayableElementModel elementLeft = this.levelModel.getElementLeft(x, y);
|
||||
DisplayableElementModel elementRight = this.levelModel.getElementRight(x, y);
|
||||
|
||||
String spriteNameBelow = elementBelow.getSpriteName();
|
||||
String spriteNameBelow = elementBelow.getSpriteName();
|
||||
String spriteNameLeft = elementLeft.getSpriteName();
|
||||
String spriteNameRight = elementRight.getSpriteName();
|
||||
|
||||
// Then, process in case of the surrounding
|
||||
if (spriteNameBelow == "black") {
|
||||
// Handle different cases based on the element's surroundings
|
||||
handleFalling(x, y, spriteNameBelow, element);
|
||||
handleBoulder(x, y, spriteNameBelow, element, elementTwoBelow);
|
||||
handleRockfordCollision(x, y, spriteNameBelow, element);
|
||||
handleMagicWall(x, y, spriteNameBelow, element, elementTwoBelow);
|
||||
handleDestructibleWalls(x, y, elementBelow, element);
|
||||
handleRockfordMovement(x, y,element, spriteNameLeft, spriteNameRight, elementLeft, elementRight);
|
||||
}
|
||||
|
||||
private void handleFalling(int x, int y, String spriteNameBelow, DisplayableElementModel element) {
|
||||
if (spriteNameBelow.equals("black")) {
|
||||
this.levelModel.makeThisDisplayableElementFall(x, y);
|
||||
} else if (spriteNameBelow == "boulder") {
|
||||
// Boulders have to roll if they hit another boulder
|
||||
if (this.levelModel.getElementBelowLeft(x, y).getSpriteName() == "black") {
|
||||
}
|
||||
}
|
||||
|
||||
private void handleBoulder(int x, int y, String spriteNameBelow, DisplayableElementModel element, DisplayableElementModel elementTwoBelow) {
|
||||
if (spriteNameBelow.equals("boulder")) {
|
||||
if (this.levelModel.getElementBelowLeft(x, y).getSpriteName().equals("black")) {
|
||||
this.levelModel.makeThisBoulderSlideLeft(x, y);
|
||||
} else if (this.levelModel.getElementBelowRight(x, y).getSpriteName() == "black") {
|
||||
} else if (this.levelModel.getElementBelowRight(x, y).getSpriteName().equals("black")) {
|
||||
this.levelModel.makeThisBoulderSlideRight(x, y);
|
||||
}
|
||||
} else {
|
||||
if (spriteNameBelow == "rockford" && element.isFalling()) {
|
||||
this.levelModel.exploseGround(x, y + 1);
|
||||
}
|
||||
}
|
||||
|
||||
AUDIO_LOAD_HELPER.playSound("die");
|
||||
|
||||
try {
|
||||
Thread.sleep(25);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
this.levelModel.setGameRunning(false);
|
||||
} else if (spriteNameBelow == "magicwall") {
|
||||
if (element.getSpriteName() == "boulder"
|
||||
&& (elementTwoBelow.getSpriteName() == "dirt" ||
|
||||
elementTwoBelow.getSpriteName() == "black")) {
|
||||
if(element.isConvertible()) {
|
||||
this.levelModel.transformThisBoulderIntoADiamond(x, y);
|
||||
} else {
|
||||
this.levelModel.deleteThisBoulder(x, y);
|
||||
}
|
||||
}
|
||||
} else if (elementBelow.isDestructible() && spriteNameBelow != "dirt" && element.isFalling()) {
|
||||
this.levelModel.exploseThisBrickWall(x, y);
|
||||
} else if (spriteNameLeft == "rockford" && this.levelModel.getRockford().isRunningRight() && elementRight.getSpriteName() == "black") {
|
||||
this.levelModel.moveThisBoulderToRight(x, y);
|
||||
} else if (spriteNameRight == "rockford" && this.levelModel.getRockford().isRunningLeft() && elementLeft.getSpriteName() == "black") {
|
||||
this.levelModel.moveThisBoulderToLeft(x, y);
|
||||
} else {
|
||||
element.setFalling(false);
|
||||
private void handleRockfordCollision(int x, int y, String spriteNameBelow, DisplayableElementModel element) {
|
||||
if (spriteNameBelow.equals("rockford") && element.isFalling()) {
|
||||
this.levelModel.exploseGround(x, y + 1);
|
||||
AUDIO_LOAD_HELPER.playSound("die");
|
||||
try {
|
||||
Thread.sleep(25);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
this.levelModel.setGameRunning(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleMagicWall(int x, int y, String spriteNameBelow, DisplayableElementModel element, DisplayableElementModel elementTwoBelow) {
|
||||
if (spriteNameBelow.equals("magicwall")) {
|
||||
if (element.getSpriteName().equals("boulder") &&
|
||||
(elementTwoBelow.getSpriteName().equals("dirt") || elementTwoBelow.getSpriteName().equals("black"))) {
|
||||
if (element.isConvertible()) {
|
||||
this.levelModel.transformThisBoulderIntoADiamond(x, y);
|
||||
} else {
|
||||
this.levelModel.deleteThisBoulder(x, y);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleDestructibleWalls(int x, int y, DisplayableElementModel elementBelow, DisplayableElementModel element) {
|
||||
if (elementBelow.isDestructible() && !elementBelow.getSpriteName().equals("dirt") && element.isFalling()) {
|
||||
this.levelModel.exploseThisBrickWall(x, y);
|
||||
}
|
||||
}
|
||||
|
||||
private void handleRockfordMovement(int x, int y,DisplayableElementModel element ,String spriteNameLeft, String spriteNameRight, DisplayableElementModel elementLeft, DisplayableElementModel elementRight) {
|
||||
if (spriteNameLeft.equals("rockford") && this.levelModel.getRockford().isRunningRight() && elementRight.getSpriteName().equals("black")) {
|
||||
this.levelModel.moveThisBoulderToRight(x, y);
|
||||
} else if (spriteNameRight.equals("rockford") && this.levelModel.getRockford().isRunningLeft() && elementLeft.getSpriteName().equals("black")) {
|
||||
this.levelModel.moveThisBoulderToLeft(x, y);
|
||||
} else {
|
||||
element.setFalling(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user