All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bladecoder.engine.ui.InitScreen Maven / Gradle / Ivy

There is a newer version: 4.3.1
Show newest version
/*******************************************************************************
 * Copyright 2014 Rafael Garcia Moreno.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package com.bladecoder.engine.ui;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.ScreenAdapter;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.utils.viewport.ScreenViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.bladecoder.engine.assets.EngineAssetManager;
import com.bladecoder.engine.ui.UI.Screens;

public class InitScreen extends ScreenAdapter implements BladeScreen {
	private final static String FILENAME = "ui/blade_logo.png";
	private final static float FADE_TIME = .6f;
	private final static float SCREEN_TIME = .8f;

	private Texture tex;

	private UI ui;

	private float time;
	private float fadeTime;
	private float scale = 1f;

	private final Viewport viewport = new ScreenViewport();

	@Override
	public void render(float delta) {
		SpriteBatch batch = ui.getBatch();

		Gdx.gl.glClearColor(0, 0, 0, 1);
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

		batch.setProjectionMatrix(viewport.getCamera().combined);
		batch.begin();

		if (time > FADE_TIME * 2 + SCREEN_TIME) {  // EXIT INIT SCREEN
			batch.setColor(Color.WHITE);
			ui.setCurrentScreen(Screens.MENU_SCREEN);
			batch.end();
			return;
		} else if (time > FADE_TIME + SCREEN_TIME) {  // FADE_OUT
			batch.setColor(1, 1, 1, 1 - fadeTime / FADE_TIME);
		} else if (time < FADE_TIME) { // FADE IN
			batch.setColor(1, 1, 1, fadeTime / FADE_TIME);
		} else {
			fadeTime = 0;
		}

		final int viewportW = viewport.getScreenWidth();
		final int viewportH = viewport.getScreenHeight();
		final float texW = tex.getWidth() * scale;
		final float texH = tex.getHeight() * scale;
		batch.draw(tex, (viewportW - texW) / 2, (viewportH - texH) / 2, texW, texH);
		batch.setColor(Color.WHITE);

		time += delta;
		fadeTime += delta;
		batch.end();
	}

	@Override
	public void resize(int width, int height) {
		viewport.update(width, height, true);
		scale = width / (float) EngineAssetManager.getInstance().getResolution().portraitWidth;
	}

	protected void retrieveAssets() {
		tex = new Texture(EngineAssetManager.getInstance().getResAsset(FILENAME));
		tex.setFilter(TextureFilter.Linear, TextureFilter.Linear);
	}

	@Override
	public void dispose() {
		if(tex != null) {
			tex.dispose();
			tex = null;
		}
	}

	@Override
	public void show() {
		time = fadeTime = 0;
		Gdx.input.setInputProcessor(null);
		retrieveAssets();
	}

	@Override
	public void hide() {
		dispose();
	}

	@Override
	public void setUI(UI ui) {
		this.ui = ui;
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy