diff --git a/GameProject/src/controller/MineController.java b/GameProject/src/controller/MineController.java index 5aa7e83..8558db4 100644 --- a/GameProject/src/controller/MineController.java +++ b/GameProject/src/controller/MineController.java @@ -4,7 +4,14 @@ import gameobjects.GameObject; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; - +/** + * Stops GameObject movement at bottom of level and let it 'fly' in x-direction towards ego object. + * If the object flies outside of the level (by x-coordinate) it is removed. + * + * The behavior looks like a sinking sea mine, which stays at a certain depth and moves left/right to catch the player. + * + * + */ public class MineController extends ObjectController { int rad = 3; @@ -17,13 +24,19 @@ public class MineController extends ObjectController { this.lineSpeed = lineSpeed; } + /** + * Fetches ego object by name 'ego' from current level and determines it's x-position. + * The controlled GameObject will move towards this position (in x-direction only). + * y-direction speed is reduced to zero, if the objects reached lower bound of level (high y-values). + * Only deletes the object if it flies out of visible game area. + */ @Override public void updateObject() { if (gameObject.getY() >= this.getPlayground().getSizeY() - 10) { this.gameObject.setVY(0); if (xSpeed == 0.) { - GameObject ego = getPlayground().getObject("ego"); + GameObject ego = this.getPlayground().getObject("ego"); double egoXPos = ego.getX(); if (egoXPos > this.gameObject.getX()) { xSpeed = 50; @@ -38,9 +51,9 @@ public class MineController extends ObjectController { } if (this.gameObject.getX() < 0 || (this.gameObject.getX() > this.getPlayground().getSizeX())) { logger.debug("deleting" + this.gameObject.getId()); - getPlayground().deleteObject(this.gameObject.getId()); + this.getPlayground().deleteObject(this.gameObject.getId()); } - applySpeedVector(); + this.applySpeedVector(); } }