Java tutorial
package com.game.libgdx.roguelikeengine; /* Copyright (C) 2013 Ferran Fabregas (ferri.fc@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ import com.badlogic.gdx.Gdx; import com.badlogic.gdx.InputAdapter; import com.badlogic.gdx.Screen; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator; import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; public class Credits extends InputAdapter implements Screen { private Explorer_libgdx theGame; private SpriteBatch spriteBatch; private PopupInfoText screentext; private BitmapFont messagefont; private String text; private float fadein; private Rectangle viewport; public Credits(Explorer_libgdx g) { theGame = g; fadein = 0; } @Override public void show() { //layout=new Layout(); FileHandle fontFile = Gdx.files.internal("fonts/minecraftia.ttf"); FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); spriteBatch = new SpriteBatch(); //messagefont = new BitmapFont(); messagefont = generator.generateFont(20); // px text = "CREDITS\nConcept & Programming: Ferran_Fabregas & Joshua_Byrom\nUI design: Manuela Sanfelix & Ferran_Fabregas\nTiles and sprites taken from http://opengameart.org/\n& http://animatedbattlers.wordpress.com & http://www.pixeljoint.com \nReleased under GPL / Creative_Commons and copyrighted\nby their owners\nMusic from https://soundcloud.com/desperate-measurez/ \n& http://www.tannerhelland.com/music-directory/\nSound FX: http://www.freesound.org/\nFonts taken from http://www.fonts101.com/ & http://www.flamingtext.com/\nThanks to: Joseph Elliott.\nGame released under the terms of GNU GPL ."; // create a fight message info screen screentext = new PopupInfoText(0, 0, "UI/credits.png", Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); screentext.settextoffset((int) (Gdx.graphics.getHeight() * .1f), (int) (Gdx.graphics.getHeight() * .35f)); screentext.addWordClickListener("Joshua_Byrom", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.joshbyrom.com"); } }); screentext.addWordClickListener("Ferran_Fabregas", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.ferranfabregas.info"); } }); screentext.addWordClickListener("http://www.pixeljoint.com", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.pixeljoint.com"); } }); screentext.addWordClickListener("http://opengameart.org/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.opengameart.org"); } }); screentext.addWordClickListener("http://animatedbattlers.wordpress.com", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://animatedbattlers.wordpress.com"); } }); screentext.addWordClickListener("https://soundcloud.com/desperate-measurez/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("https://soundcloud.com/desperate-measurez/"); } }); screentext.addWordClickListener("http://www.tannerhelland.com/music-directory/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.tannerhelland.com/music-directory/"); } }); screentext.addWordClickListener("http://www.fonts101.com/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.fonts101.com/"); } }); screentext.addWordClickListener("http://www.flamingtext.com/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.flamingtext.com/"); } }); screentext.addWordClickListener("GPL", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.gnu.org/licenses/gpl.txt"); } }); screentext.addWordClickListener("http://www.freesound.org/", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.freesound.org/"); } }); screentext.addWordClickListener("GNU", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://www.gnu.org"); } }); screentext.addWordClickListener("Creative_Commons", new WordClickAction() { @Override public void onClicked(String word) { Gdx.net.openURI("http://creativecommons.org/"); } }); Gdx.input.setInputProcessor(this); } @Override public void render(float delta) { // set viewport Gdx.gl.glViewport((int) viewport.x, (int) viewport.y, (int) viewport.width, (int) viewport.height); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); spriteBatch.begin(); fadein = fadein + 0.003f; if (fadein > 1.0f) { fadein = 1.0f; } //spriteBatch.setColor(1.0f, 1.0f, 1.0f, fadein); screentext.drawScreen(spriteBatch, messagefont, text, fadein, 30, Color.WHITE); spriteBatch.end(); if (Gdx.input.justTouched() && !screentext.mouseOverElement()) { theGame.setScreen(new SplashScreen(theGame)); } } @Override public boolean touchUp(int x, int y, int point, int button) { return screentext.onMouseClicked(); } @Override public void pause() { } @Override public void hide() { } @Override public void resume() { } @Override public void dispose() { if (spriteBatch != null) spriteBatch.dispose(); } @Override public void resize(int width, int height) { // calculate new viewport float aspectRatio = (float) width / (float) height; float scale = 1f; Vector2 crop = new Vector2(0f, 0f); if (aspectRatio > WrapperEngine.ASPECT_RATIO) { scale = (float) height / (float) WrapperEngine.VIRTUAL_HEIGHT; crop.x = (width - WrapperEngine.VIRTUAL_WIDTH * scale) / 2f; } else if (aspectRatio < WrapperEngine.ASPECT_RATIO) { scale = (float) width / (float) WrapperEngine.VIRTUAL_WIDTH; crop.y = (height - WrapperEngine.VIRTUAL_HEIGHT * scale) / 2f; } else { scale = (float) width / (float) WrapperEngine.VIRTUAL_WIDTH; } float w = (float) WrapperEngine.VIRTUAL_WIDTH * scale; float h = (float) WrapperEngine.VIRTUAL_HEIGHT * scale; viewport = new Rectangle(crop.x, crop.y, w, h); } }