package com.toxsickproductions.skyland.scenes2d;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
import com.badlogic.gdx.scenes.scene2d.utils.Align;
import com.toxsickproductions.data.Assets;
import com.toxsickproductions.interfaces.AssetHelper;
import com.toxsickproductions.skyland.Skyland;
import com.toxsickproductions.skyland.scenes3d.MenuScene;
import reference.Models;
import reference.Textures;
public class Splash implements AssetHelper, Screen {
private Image splashImage;
private boolean loaded = false, animationFinished = false;
@Override
public void show() {
queueAssets();
splashImage = new Image(new Texture(Gdx.files.internal(Textures.TEXTURE_TOXSICK_LOGO)));
splashImage.setPosition(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2, Align.center);
Skyland.STAGE.addActor(splashImage);
addSplashAnimation();
}
@Override
public void render(float v) {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Skyland.getInstance().renderStage();
if (Gdx.input.isKeyPressed(Input.Keys.BACK))
System.exit(0);
if (!loaded && Assets.update())
loaded = true;
if (loaded && animationFinished) {
Assets.addSkinRegions("skins/skin.pack");
addFonts();
Assets.menuSkin.load(Gdx.files.internal("skins/skin.json"));
Skyland.getInstance().setScreen(new MenuScene());
}
}
@Override
public void resize(int i, int i2) {
Skyland.STAGE.getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);
}
@Override
public void dispose() {
Skyland.STAGE.clear();
}
private void addSplashAnimation() {
splashImage.addAction(Actions.sequence(Actions.alpha(0), Actions.delay(.25f), Actions.fadeIn(1), Actions.run(new Runnable() {
@Override
public void run() {
animationFinished = true;
}
})));
}
@Override
public void queueAssets() {
Assets.queueFile("skins/skin.pack", TextureAtlas.class);
for (String s : Models.MODELS)
Assets.queueFile(s, Model.class);
for (String s : Textures.TEXTURES)
Assets.queueFile(s, Texture.class);
}
private void addFonts() {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("fonts/forcedsquare.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = Gdx.graphics.getHeight() / 15;
Assets.menuSkin.add("font32", generator.generateFont(parameter));
parameter.size = Gdx.graphics.getHeight() / 10;
Assets.menuSkin.add("font64", generator.generateFont(parameter));
parameter.size = Gdx.graphics.getHeight() / 25;
Assets.menuSkin.add("console", generator.generateFont(parameter));
generator.dispose();
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
dispose();
}
}