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.
125 lines
2.8 KiB
125 lines
2.8 KiB
package collider;
|
|
|
|
import gameobjects.GameObject;
|
|
import playground.Playground;
|
|
import controller.ObjectController;
|
|
|
|
/**
|
|
* abstract base class for all Colliders to detect collisions between GameObjects
|
|
*
|
|
*
|
|
*/
|
|
public abstract class Collider {
|
|
|
|
/** unique internal name for Collider */
|
|
public String id = null;
|
|
/** GameObject it belongs to */
|
|
protected GameObject gameobject = null;
|
|
/** PlayGround instance it belongs to */
|
|
protected Playground playground = null;
|
|
/** the ObjectController to the corresponding GameObject (can be null) */
|
|
protected ObjectController controller = null;
|
|
|
|
protected double dx = 0.;
|
|
double dy = 0.;
|
|
|
|
/**
|
|
*
|
|
* @param id unique name for Collider (internally)
|
|
* @param o GameObject instance it belongs to
|
|
*/
|
|
public Collider(String id, GameObject o) {
|
|
this.gameobject = o;
|
|
|
|
this.id = id;
|
|
this.controller = o.getObjectController();
|
|
this.playground = o.getPlayground();
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* setter for offset values to be used relative to GameObject center. default is zero.
|
|
*
|
|
* @param dx offset in X direction (default 0)
|
|
* @param dy offset in Y direction (default 0)
|
|
* @return this instance of Collider
|
|
*/
|
|
public Collider setOffsets(double dx, double dy) {
|
|
this.dx = dx;
|
|
this.dy = dy;
|
|
return this;
|
|
}
|
|
|
|
public String toString() {
|
|
return "baseColl";
|
|
}
|
|
|
|
/**
|
|
* returns the corresponding game objects X coordinate (center) plus this colliders offset in X
|
|
* (probably zero).
|
|
*
|
|
* @return X value
|
|
*/
|
|
public double getX() {
|
|
return this.gameobject.getX() + this.dx;
|
|
}
|
|
|
|
|
|
/**
|
|
* returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y
|
|
* (probably zero).
|
|
*
|
|
* @return Y value
|
|
*/
|
|
public double getY() {
|
|
return this.gameobject.getY() + this.dy;
|
|
}
|
|
|
|
/**
|
|
* returns the internal unique name
|
|
*
|
|
* @return the String with the name
|
|
*/
|
|
public String getId() {
|
|
return id;
|
|
}
|
|
|
|
|
|
/**
|
|
* setter for corresponding GameObject
|
|
*
|
|
* @param gameObject to be saved in attribute
|
|
*/
|
|
public void setObject(GameObject gameObject) {
|
|
this.gameobject = gameObject;
|
|
}
|
|
|
|
/**
|
|
* setter for GameController
|
|
*
|
|
* @param controller to be saved in attribute
|
|
*/
|
|
public void setController(ObjectController controller) {
|
|
this.controller = controller;
|
|
}
|
|
|
|
/**
|
|
* setter for Playground instance this collider belongs to
|
|
*
|
|
* @param playground instance to be stored in attribute
|
|
*/
|
|
public void setPlayground(Playground playground) {
|
|
this.playground = playground;
|
|
}
|
|
|
|
/**
|
|
* checks the collission with another collider instance.
|
|
*
|
|
* @param other the instance to compare to
|
|
* @return true if the colliders collide (touch or overlap)
|
|
*/
|
|
abstract public boolean collidesWith(Collider other);
|
|
|
|
|
|
}
|