110 lines
3.1 KiB
Java
Executable File
110 lines
3.1 KiB
Java
Executable File
package zero1hd.polyjet.screens;
|
|
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.ScreenAdapter;
|
|
import com.badlogic.gdx.graphics.GL20;
|
|
import com.badlogic.gdx.graphics.Texture;
|
|
import com.badlogic.gdx.math.Vector3;
|
|
import com.badlogic.gdx.scenes.scene2d.Stage;
|
|
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Image;
|
|
import com.badlogic.gdx.scenes.scene2d.ui.Label;
|
|
|
|
import zero1hd.polyjet.Polyjet;
|
|
import zero1hd.polyjet.audio.AudioAnalyzer;
|
|
import zero1hd.polyjet.audio.WavAudioData;
|
|
import zero1hd.polyjet.controls.RhythmMap;
|
|
import zero1hd.polyjet.ui.pages.AnalyzePage;
|
|
import zero1hd.polyjet.ui.pages.MusicSelectionPage;
|
|
import zero1hd.polyjet.util.TransitionAdapter;
|
|
|
|
|
|
public class PreGameScreen extends ScreenAdapter implements TransitionAdapter {
|
|
Polyjet core;
|
|
Stage stage;
|
|
Label statusText;
|
|
|
|
AudioAnalyzer analyzer;
|
|
WavAudioData audiofile;
|
|
RhythmMap rhythmMap;
|
|
Vector3 cameraTarget;
|
|
|
|
Label lastStatement;
|
|
|
|
private MainMenu mainMenu;
|
|
private MusicSelectionPage musicSelection;
|
|
private AnalyzePage analyzePage;
|
|
public PreGameScreen(final Polyjet core, MainMenu mainMenu) {
|
|
this.core = core;
|
|
analyzer = new AudioAnalyzer();
|
|
rhythmMap = new RhythmMap(analyzer);
|
|
|
|
this.mainMenu = mainMenu;
|
|
|
|
stage = new Stage();
|
|
|
|
cameraTarget = new Vector3(stage.getCamera().position);
|
|
postTransition();
|
|
}
|
|
|
|
@Override
|
|
public void postTransition() {
|
|
stage.clear();
|
|
|
|
Image cyberCircle1 = new Image(core.getAssetManager().get("cybercircle3B.png", Texture.class));
|
|
cyberCircle1.setScale(0.8f);
|
|
cyberCircle1.setOrigin(cyberCircle1.getWidth()/2, cyberCircle1.getHeight()/2);
|
|
cyberCircle1.setColor(0.8f,0.8f,0.8f,0.7f);
|
|
cyberCircle1.addAction(Actions.forever(Actions.rotateBy(360f, 10f)));
|
|
cyberCircle1.setPosition(Gdx.graphics.getWidth()-cyberCircle1.getWidth()/2-10, -cyberCircle1.getHeight()*2/4f);
|
|
stage.addActor(cyberCircle1);
|
|
|
|
analyzePage = new AnalyzePage(core.getDefaultSkin(), cameraTarget, core.getAssetManager());
|
|
analyzePage.setPosition(1f*Gdx.graphics.getWidth(), 0);
|
|
stage.addActor(analyzePage);
|
|
|
|
//draw music selector
|
|
musicSelection = new MusicSelectionPage(core, mainMenu, analyzePage);
|
|
stage.addActor(musicSelection);
|
|
musicSelection.beginMusicSearch();
|
|
|
|
}
|
|
|
|
@Override
|
|
public void render(float delta) {
|
|
Gdx.gl.glClearColor(1f, 1f, 1f, 1f);
|
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
|
stage.getViewport().apply();
|
|
stage.act();
|
|
stage.draw();
|
|
|
|
if (stage.getCamera().position.x != cameraTarget.x) {
|
|
stage.getCamera().position.lerp(cameraTarget, 0.25f);
|
|
}
|
|
|
|
if (cameraTarget.x != 1.5f*Gdx.graphics.getWidth() && analyzePage.hasAudioData()) {
|
|
cameraTarget.x = 1.5f*Gdx.graphics.getWidth();
|
|
}
|
|
super.render(delta);
|
|
}
|
|
|
|
@Override
|
|
public void show() {
|
|
Gdx.input.setInputProcessor(stage);
|
|
analyzer.resetVars();
|
|
super.show();
|
|
}
|
|
|
|
@Override
|
|
public void resize(int width, int height) {
|
|
stage.getViewport().update(width, height);
|
|
super.resize(width, height);
|
|
}
|
|
|
|
@Override
|
|
public void dispose() {
|
|
stage.dispose();
|
|
super.dispose();
|
|
}
|
|
}
|