package com.fteams.siftrain.screens;
import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.ProgressBar;
import com.fteams.siftrain.assets.Assets;
import com.fteams.siftrain.assets.GlobalConfiguration;
public class BeatmapReloadScreen implements Screen {
private Image backgroundImage = new Image(Assets.mainMenuBackgroundTexture);
private Stage stage = new Stage();
private ProgressBar loadingProgress = new ProgressBar(0.0f, 100f, 0.1f, false, Assets.menuSkin);
int phase = 0;
Label infoLabel = new Label("Performing a hard reload...\n\n" +
"If any .osz or .osu beatmaps were added or updated, " +
"their corresponding .rs files will be created or regenerated.\n\n" +
"For .osz beatmap containers, sound files will be extracted " +
"into beatmaps/soundfiles/, the beatmap files (.osu) will be " +
"converted into .rs format and placed in beatmaps/datafiles/ " +
"this is done in order to reduce loading times during gameplay. \n\n" +
"This operation can take anywhere between a couple of seconds to a couple of " +
"minutes depending on the amount of beatmaps loaded, please wait....", Assets.menuSkin, "song_style_result");
@Override
public void show() {
float scaleFactor = stage.getHeight() / GlobalConfiguration.BASE_HEIGHT;
backgroundImage.setSize(stage.getWidth(), stage.getHeight());
loadingProgress.setSize(stage.getWidth() * 0.7f, stage.getHeight() * 0.07f);
loadingProgress.setX(stage.getWidth() * 0.15f);
loadingProgress.setY(stage.getHeight() * 0.1f);
infoLabel.setX(stage.getWidth() * 0.1f);
infoLabel.setY(stage.getHeight() * 0.2f);
infoLabel.setWrap(true);
infoLabel.setWidth(stage.getWidth() * 0.8f);
infoLabel.setHeight(stage.getHeight() * 0.7f);
infoLabel.setFontScale(scaleFactor);
stage.addActor(backgroundImage);
stage.addActor(loadingProgress);
stage.addActor(infoLabel);
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
// done loading
if (Assets.update())
{
if (phase == 1) {
Assets.setSongs();
((Game) Gdx.app.getApplicationListener()).setScreen(new SettingsScreen());
}
if (phase == 0)
{
phase++;
// this will cause any newly created .rs files to be loaded.
Assets.reloadBeatmaps();
}
}
loadingProgress.setValue((Assets.getProgress() - 0.5f)* 200f);
loadingProgress.act(delta);
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
}
}