package com.tacoid.pweek.screens; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.NinePatch; import com.badlogic.gdx.graphics.g2d.Sprite; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.math.Interpolation; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.Stage; import com.tacoid.pweek.Pweek; public class LoadingScreen implements Screen { private static final int VIRTUAL_WIDTH = 1280; private static final int VIRTUAL_HEIGHT = 768; private static LoadingScreen instance = null; public static boolean initialized; private Pweek puyopuyo; private Stage stage; private Sprite logoSprite; NinePatch patch; private class loadingActor extends Actor { private float percent = 0; @Override public void draw(SpriteBatch batch, float delta) { logoSprite.draw(batch); // C'est pas terrible mais ça adoucit un peu la barre de progression quand même. percent = Interpolation.linear.apply(percent, puyopuyo.manager.getProgress(), 0.5f); patch.draw(batch, 32, 32, Math.max(percent * (VIRTUAL_WIDTH-64),10), 32); } @Override public Actor hit(float arg0, float arg1, boolean touchable) { // TODO Auto-generated method stub return null; } } public void init() { this.puyopuyo = Pweek.getInstance(); stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false); patch = new NinePatch(new Texture(Gdx.files.internal("images/menu/progress-patch.png")), 12, 12, 12, 12); this.logoSprite = new Sprite(new Texture(Gdx.files.internal("images/menu/logo.png"))); this.logoSprite.setPosition(VIRTUAL_WIDTH/2 - logoSprite.getWidth()/2, VIRTUAL_HEIGHT/2 - logoSprite.getHeight()/2); stage.addActor(new loadingActor()); } @Override public void dispose() { Gdx.app.log("Loading", "paused"); } @Override public void hide() { // TODO Auto-generated method stub } @Override public void pause() { // TODO Auto-generated method stub } @Override public void render(float delta) { Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.draw(); stage.act(Gdx.graphics.getDeltaTime()); } @Override public void resize(int arg0, int arg1) { stage.setViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, false); stage.getCamera().position.set(VIRTUAL_WIDTH / 2, VIRTUAL_HEIGHT / 2, 0); } @Override public void resume() { } @Override public void show() { resize(0,0); Gdx.input.setInputProcessor(stage); } public static LoadingScreen getInstance() { if (instance == null) { instance = new LoadingScreen(); } if (!initialized) { instance.init(); } return instance; } }