Java tutorial
/* Point & Hit: A fast paced Android game Copyright (C) 2015 Marien Raat 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/>. */ package com.jmstudios.pointandhit; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.GL20; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.Stage; import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.Align; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; public class MainMenuScreen implements Screen { OneShotGame game; Stage stage; Table buttonsTable, table; ImageButton tutorialButton, playButton, optionsButton, exitButton; Label titleText; float scale; public MainMenuScreen(final OneShotGame game) { this.game = game; this.stage = new Stage(); this.scale = game.scale; this.table = new Table(); this.buttonsTable = new Table(); table.setFillParent(true); //buttonsTable.setDebug(true); stage.addActor(table); float padding = 40 * scale; Vector2 screenSize = new Vector2(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); BitmapFont titleFont = new BitmapFont(Gdx.files.internal("fonts/deja_vu_sans_large.fnt")); titleFont.setScale(scale); Label.LabelStyle titleLabelStyle = new Label.LabelStyle(titleFont, Color.WHITE); titleText = new Label("Point & Hit", titleLabelStyle); titleText.setWrap(true); titleText.setWidth(screenSize.x - padding * 2); titleText.setAlignment(Align.center); // Set up buttons Texture buttonsTex = game.buttons; Texture bigPlayButton = new Texture(Gdx.files.internal("buttons/play_button.png")); TextureRegion playTex = new TextureRegion(bigPlayButton), optionsTex = new TextureRegion(buttonsTex, 0, 256, 256, 256), tutorialTex = new TextureRegion(buttonsTex, 768, 0, 256, 256), exitTex = new TextureRegion(buttonsTex, 256, 256, 256, 256); TextureRegionDrawable playDrawable = new TextureRegionDrawable(playTex), optionsDrawable = new TextureRegionDrawable(optionsTex), tutorialDrawable = new TextureRegionDrawable(tutorialTex), exitDrawable = new TextureRegionDrawable(exitTex); playButton = new ImageButton(playDrawable); optionsButton = new ImageButton(optionsDrawable); tutorialButton = new ImageButton(tutorialDrawable); exitButton = new ImageButton(exitDrawable); // Set up buttonsTable buttonsTable.defaults().pad(padding); buttonsTable.add(playButton).colspan(3).center().padBottom(2.5f * padding) .width(scale * playButton.getWidth()).height(scale * playButton.getHeight()); buttonsTable.row(); buttonsTable.add(tutorialButton).width(scale * tutorialButton.getWidth()) .height(scale * tutorialButton.getHeight()); buttonsTable.add(optionsButton).width(scale * optionsButton.getWidth()) .height(scale * optionsButton.getHeight()); // Title table.defaults().pad(padding); table.add(titleText).width(screenSize.x - padding * 2).center(); table.row(); table.add(buttonsTable).center(); // Listeners tutorialButton.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { game.setScreen(new TutorialScreen(game, false)); } }); playButton.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { if (game.preferences.getBoolean("tutorial", false)) { game.setScreen(game.getGameScreen()); } else { game.setScreen(new TutorialScreen(game, false)); } } }); optionsButton.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { game.setScreen(new OptionsScreen(game)); } }); exitButton.addListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { game.setScreen(new CreditsScreen(game)); } }); } @Override public void show() { Gdx.input.setInputProcessor(stage); Gdx.input.setCatchBackKey(false); } @Override public void render(float delta) { Gdx.gl.glClearColor(0.4f, 0.5f, 0.2f, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); stage.act(); stage.draw(); } @Override public void resize(int width, int height) { // TODO Auto-generated method stub } @Override public void pause() { // TODO Auto-generated method stub } @Override public void resume() { // TODO Auto-generated method stub } @Override public void hide() { } @Override public void dispose() { } }