package org.doublelong.jastroblast.screen; import org.doublelong.jastroblast.JastroBlast; import org.doublelong.jastroblast.entity.Screens; import org.doublelong.jastroblast.loaders.FreeTypeFontAssetLoader; import org.doublelong.jastroblast.managers.FontManager; import org.doublelong.jastroblast.managers.ScreenManager; import org.doublelong.jastroblast.managers.SoundManager; import org.doublelong.jastroblast.managers.TextureManager; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver; import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.actions.Actions; import com.badlogic.gdx.scenes.scene2d.ui.Image; public class LoadingScreen extends AbstractScreen { private Stage stage; private Image logo; Runnable onLoadingFinish = new Runnable() { @Override public void run() { // TODO Auto-generated method stub ScreenManager.getInstance().show(Screens.MAIN); } }; public LoadingScreen() { this.stage = new Stage(); this.load(); } public void load() { JastroBlast.manager.load(TextureManager.LOADING, Texture.class); // call finishLoading to BLOCK the application // this will load the "loading" image and then // progressively load everything else. JastroBlast.manager.finishLoading(); } @Override public void show() { JastroBlast.manager.setLoader(BitmapFont.class, new FreeTypeFontAssetLoader(new InternalFileHandleResolver())); JastroBlast.manager.load(FontManager.BLOCK_FONT, BitmapFont.class); JastroBlast.manager.load(TextureManager.LOGO, Texture.class); JastroBlast.manager.load(SoundManager.GAME_MUSIC, Music.class); JastroBlast.manager.load(SoundManager.MENU_MUSIC, Music.class); JastroBlast.manager.load(TextureManager.ASTERIOD_BIG, Texture.class); JastroBlast.manager.load(TextureManager.PLAYER, Texture.class); JastroBlast.manager.load(TextureManager.MENU_CURSOR, Texture.class); this.logo = new Image(JastroBlast.manager.get(TextureManager.LOADING, Texture.class)); this.stage.addActor(this.logo); } @Override public void resize(int width, int height) { stage.setViewport(width, height, false); this.logo.setX((width - logo.getWidth()) / 2); this.logo.setY((height - logo.getHeight()) / 2); } @Override public void render(float delta) { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); if (JastroBlast.manager.isLoaded("assets/images/jastroblast_loading.png")) { this.stage.act(); this.stage.draw(); if(JastroBlast.manager.update()) { this.transitionScreen(); } } } @Override public void transitionScreen() { // TODO Auto-generated method stub this.logo.addAction(Actions.sequence(Actions.fadeOut(.75f), Actions.run(this.onLoadingFinish))); } }