Create the ScrollingBackground class. TODO: Optimize!
This commit is contained in:
parent
14a8e469e0
commit
3fbff7890c
@ -0,0 +1,61 @@
|
||||
package de.teamteamteam.spacescooter.background;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
|
||||
import de.teamteamteam.spacescooter.utility.GameConfig;
|
||||
|
||||
public class ScrollingBackground extends Background {
|
||||
|
||||
/**
|
||||
* Speed the background scrolls through with.
|
||||
*/
|
||||
private int scrollingSpeed;
|
||||
|
||||
/**
|
||||
* Internal offset counter to determine how much the Background scrolled.
|
||||
*/
|
||||
private int offset;
|
||||
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public ScrollingBackground(int x, int y) {
|
||||
super(x, y);
|
||||
this.offset = 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the scrolling speed to use for this Background.
|
||||
*/
|
||||
public void setScrollingSpeed(int scrollingSpeed) {
|
||||
this.scrollingSpeed = scrollingSpeed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Apply the scrolling effect by updating an internal offset counter.
|
||||
* Reset it when we scrolled for one image length.
|
||||
*/
|
||||
public void update() {
|
||||
this.offset += this.scrollingSpeed;
|
||||
if(Math.abs(this.offset) > this.getImage().getWidth()) {
|
||||
this.offset += this.getImage().getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Paint the Background. Concatenate the image if necessary, but still try
|
||||
* to save ressources.
|
||||
* TODO: Huge performance improvements using the tons of param version of drawImage!
|
||||
*/
|
||||
public void paint(Graphics2D g) {
|
||||
int i = 0;
|
||||
int wWidth = GameConfig.windowWidth;
|
||||
while((i*this.getImage().getWidth()+this.offset) < wWidth) {
|
||||
g.drawImage(this.getImage(), (i*this.getImage().getWidth()+this.offset), this.getY(), null);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,46 +1,17 @@
|
||||
package de.teamteamteam.spacescooter.background;
|
||||
|
||||
import java.awt.Graphics2D;
|
||||
|
||||
/**
|
||||
* The StarBackground of the first level
|
||||
*/
|
||||
public class StarBackground extends Background {
|
||||
|
||||
private int y;
|
||||
public class StarBackground extends ScrollingBackground {
|
||||
|
||||
/**
|
||||
* Constructor for the background
|
||||
*/
|
||||
public StarBackground(int x, int y) {
|
||||
super(x, y);
|
||||
this.y = y;
|
||||
this.setImage("images/starbackground.png");
|
||||
this.setScrollingSpeed(-2);
|
||||
}
|
||||
|
||||
/**
|
||||
* offset in x-direction for the painting
|
||||
*/
|
||||
private int offset = 0;
|
||||
|
||||
/**
|
||||
* standart update method
|
||||
*/
|
||||
public void update() {
|
||||
this.offset -= 2;
|
||||
//System.out.println(this.offset);
|
||||
if(Math.abs(this.offset) > this.getImage().getWidth()) {
|
||||
this.offset += this.getImage().getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* standart paint method
|
||||
*/
|
||||
public void paint(Graphics2D g) {
|
||||
g.drawImage(this.getImage(), (0+this.offset), this.y, null);
|
||||
g.drawImage(this.getImage(), (this.getImage().getWidth()+this.offset), this.y, null);
|
||||
g.drawImage(this.getImage(), (2*this.getImage().getWidth()+this.offset), this.y, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user