Now that we have a sprite base class, we can subclass it and easily add various objects to the playfield.
We can create the class for the background ...
public class Background extends SpriteBase {
public Background(Pane layer, Image image, double x, double y, double speed) {
super(layer, image, x, y, 0, 0, speed, 0, Double.MAX_VALUE, 0);
}
public void move() {
super.move();
checkBounds();
}
private void checkBounds() {
// check bounds. we scroll upwards, so the y position is negative. once it's > 0 we have reached the end of the map and stop scrolling
if( Double.compare( y, 0) >= 0) {
y = 0;
}
}
@Override
public void checkRemovability() {
// nothing to do
}
}
and similarly easy the cloud class which has an additional opacity attribute, depending on the layer ...
public class Cloud extends SpriteBase {
public Cloud(Pane layer, Image image, double x, double y, double speed, double opacity) {
super(layer, image, x, y, 0.0, 0.0, speed, 0.0, Double.MAX_VALUE, 0.0);
getView().setOpacity(opacity);
}
@Override
public void checkRemovability() {
if( Double.compare( getY(), Settings.SCENE_HEIGHT) > 0) {
setRemovable(true);
}
}
}
... and we create the player bullet class ...
public class PlayerBullet extends SpriteBase {
public PlayerBullet(Pane layer, Image image, double x, double y, double dx, double dy) {
super(layer, image, x, y, 0, dx, dy, 0, 1, 1); // TODO: health/damage
}
public PlayerBullet(Pane layer, Image image, double x, double y, double r, double dx, double dy, double dr, double health, double damage) {
super(layer, image, x, y, r, dx, dy, dr, health, damage);
}
@Override
public void checkRemovability() {
// upper bounds exceeded
if( ( getY() + getHeight()) < 0) {
setRemovable(true);
}
}
}
... and the enemy class.
public class Enemy extends SpriteBase {
public Enemy(Pane layer, Image image, double x, double y, double r, double dx, double dy, double dr, double health, double damage) {
super(layer, image, x, y, r, dx, dy, dr, 1, 1); // TODO: health/damage
}
@Override
public void checkRemovability() {
if( Double.compare( getY(), Settings.SCENE_HEIGHT) > 0) {
setRemovable(true);
}
}
}
No comments:
Post a Comment