You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.8 KiB
59 lines
1.8 KiB
package controller;
|
|
|
|
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;
|
|
|
|
double xSpeed = 0.;
|
|
double lineSpeed = 0;
|
|
private static Logger logger = LogManager.getLogger(MineController.class);
|
|
|
|
|
|
public MineController(double lineSpeed) {
|
|
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 = this.getPlayground().getObject("ego");
|
|
double egoXPos = ego.getX();
|
|
if (egoXPos > this.gameObject.getX()) {
|
|
xSpeed = 50;
|
|
} else {
|
|
xSpeed = -50;
|
|
}
|
|
this.gameObject.setVX(xSpeed);
|
|
|
|
}
|
|
this.gameObject.setVX(xSpeed);
|
|
|
|
}
|
|
if (this.gameObject.getX() < 0 || (this.gameObject.getX() > this.getPlayground().getSizeX())) {
|
|
logger.debug("deleting" + this.gameObject.getId());
|
|
this.getPlayground().deleteObject(this.gameObject.getId());
|
|
}
|
|
|
|
this.applySpeedVector();
|
|
}
|
|
}
|