115 lines
2.9 KiB
Java
115 lines
2.9 KiB
Java
|
|
package ei.game.gamestate;
|
||
|
|
|
||
|
|
import java.util.LinkedList;
|
||
|
|
import java.util.Queue;
|
||
|
|
|
||
|
|
import ei.engine.LWJGLGameWindow;
|
||
|
|
import ei.engine.math.Vector3f;
|
||
|
|
import ei.engine.scene.Sprite;
|
||
|
|
import ei.engine.sound.SoundLoader;
|
||
|
|
import ei.engine.state.GameState;
|
||
|
|
import ei.engine.state.GameStateManager;
|
||
|
|
import ei.engine.texture.TextureLoader;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* This class handels the loading of the
|
||
|
|
* images and sounds to the memmory.
|
||
|
|
*
|
||
|
|
* @author Ziver
|
||
|
|
*/
|
||
|
|
public class LoadingState extends GameState{
|
||
|
|
// The things to load
|
||
|
|
private Queue<String> loadTextures;
|
||
|
|
private Queue<String> loadSounds;
|
||
|
|
// The name of the next state to activate after loading
|
||
|
|
private String nextState;
|
||
|
|
|
||
|
|
// Temp things for the loadingbar
|
||
|
|
private int status;
|
||
|
|
private Sprite bar;
|
||
|
|
private Sprite loadBar;
|
||
|
|
private Sprite background;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Creates a loadingstate
|
||
|
|
* @param name The name of the state
|
||
|
|
*/
|
||
|
|
public LoadingState(String name,String nextState) {
|
||
|
|
super(name);
|
||
|
|
this.nextState = nextState;
|
||
|
|
status = 0;
|
||
|
|
loadTextures = new LinkedList<String>();
|
||
|
|
loadSounds = new LinkedList<String>();
|
||
|
|
bar = new Sprite("Bar","data/loadbar_front.png");
|
||
|
|
bar.setLocation(new Vector3f(
|
||
|
|
(LWJGLGameWindow.getWidth()/2),
|
||
|
|
(LWJGLGameWindow.getHeight()/2),0.0f));
|
||
|
|
loadBar = new Sprite("LoadingBar","data/loadbar.png");
|
||
|
|
loadBar.setLocation(new Vector3f(
|
||
|
|
(LWJGLGameWindow.getWidth()/2)-loadBar.getWidth(),
|
||
|
|
(LWJGLGameWindow.getHeight()/2)+3,0.0f));
|
||
|
|
background = new Sprite("Bar","data/loadbar_back.png");
|
||
|
|
background.setLocation(new Vector3f(
|
||
|
|
(LWJGLGameWindow.getWidth()/2),
|
||
|
|
(LWJGLGameWindow.getHeight()/2),0.0f));
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Add a texture to be loaded
|
||
|
|
* @param url
|
||
|
|
*/
|
||
|
|
public void addTexture(String url){
|
||
|
|
loadTextures.add(url);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Add a sound to be loaded
|
||
|
|
* @param url
|
||
|
|
*/
|
||
|
|
public void addSound(String url){
|
||
|
|
loadSounds.add(url);
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Loads the things
|
||
|
|
*/
|
||
|
|
public void update() {
|
||
|
|
if(!loadTextures.isEmpty()){
|
||
|
|
TextureLoader.getTextureLoaderInstance().getTexture(loadTextures.poll());
|
||
|
|
status++;
|
||
|
|
}
|
||
|
|
else if(!loadSounds.isEmpty()){
|
||
|
|
SoundLoader.getInstnace().loadSound(loadSounds.poll());
|
||
|
|
status++;
|
||
|
|
}
|
||
|
|
else{
|
||
|
|
status++;
|
||
|
|
if(status >= 100){
|
||
|
|
//deactivate this state and activate the next one
|
||
|
|
GameStateManager.getInstance().removeState(this);
|
||
|
|
GameStateManager.getInstance().setActive(nextState);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
background.update();
|
||
|
|
loadBar.update();
|
||
|
|
bar.update();
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Render the load bar
|
||
|
|
*/
|
||
|
|
public void render() {
|
||
|
|
// Calculate the procentage
|
||
|
|
float procent = (float)status/100;//(loadTextures.size()+loadSounds.size());
|
||
|
|
loadBar.setLocation(new Vector3f(
|
||
|
|
(LWJGLGameWindow.getWidth()/2)-loadBar.getWidth()+(loadBar.getWidth()*procent),
|
||
|
|
(LWJGLGameWindow.getHeight()/2)+6,0.0f));
|
||
|
|
//render the bar
|
||
|
|
background.render();
|
||
|
|
loadBar.render();
|
||
|
|
bar.render();
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|