com.minekrash.game.Menu.java Source code

Java tutorial

Introduction

Here is the source code for com.minekrash.game.Menu.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.minekrash.game;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

/**
 *
 * @author Kanfor
 */
public class Menu extends Main {

    Texture cover;
    Texture logo;
    Texture marco;
    Sprite sLogo;
    Texture humoMenu;
    float logoX, logoY;
    float alphaMenu;
    float timeShake;
    boolean isInitMenu;
    float humoX;
    Music musicMenu;

    public Menu() {
        cover = new Texture("gfx/cover.png");
        cover.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        marco = new Texture("gfx/marco.png");
        marco.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        humoMenu = new Texture("gfx/humo_menu.png");
        humoMenu.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        logo = new Texture("gfx/minekrash.png");
        logo.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
        TextureRegion region = new TextureRegion(logo, 0, 0, logo.getWidth(), logo.getHeight());
        sLogo = new Sprite(region);
        sLogo.setSize(sLogo.getWidth() * ESCALA_METROS, sLogo.getHeight() * ESCALA_METROS);
        sLogo.setOrigin(sLogo.getWidth() / 2, sLogo.getHeight() / 2);
        logoX = -(sLogo.getWidth() / 2);
        logoY = ((HEIGHT / 2) * ESCALA_METROS) - (sLogo.getHeight() * 1.5f);
        sLogo.setPosition(logoX, logoY);
        System.out.println("Altura: " + logoY);
        musicMenu = Gdx.audio.newMusic(Gdx.files.internal("sfx/menu.ogg"));
        musicMenu.setVolume(0.3f);
        musicMenu.setLooping(true);
        initMenu();
    }

    public void initMenu() {
        alphaMenu = 0f;
        isInitMenu = true;
        humoX = 0;
        //Reproducimos la cancin del men
        musicMenu.play();
    }

    public void render(SpriteBatch g) {
        if (isInitMenu) {
            paint.drawBackground(g, cover, alphaMenu);
            paint.drawImage(g, marco, -(marco.getWidth() / 2), -(marco.getHeight() / 2));
            sLogo.setAlpha(alphaMenu);
            sLogo.draw(g);
            paint.drawImage(g, humoMenu, -(WIDTH / 2) - humoX, -(HEIGHT / 2));
            paint.drawImage(g, humoMenu, (WIDTH / 2) - humoX, -(HEIGHT / 2));
            paint.drawText(g, fuente, //Tipo de fuente
                    Define.RECORD[Define.Lenguaje] + (int) maxMetros + Define.LOGRO_2[Define.Lenguaje], //Texto a mostrar
                    Color.BLUE, //Color
                    0, //Posicin X
                    fuenteGrande.getCapHeight() - (fuenteGrande.getCapHeight() / 4), //Posicin Y
                    BitmapFont.HAlignment.CENTER, //Alineacin. Se centrar en X
                    alphaMenu); //Transparencia
        }
    }

    public void update(float DT) {
        if (!isInitMenu) {
            initMenu();
        }
        if (alphaMenu < 1f) {
            alphaMenu += 1 / Define.TIME_TEXT_ALPHA;
        }
        if (alphaMenu > 1f) {
            alphaMenu = 1f;
        }
        if ((controller.keyPress || controller.touchPress) && alphaMenu > 0.3f) {
            isInitMenu = false;
            musicMenu.stop();
            ESTADO_MAIN = GAME;
            ESTADO_GAME = READY;
            controller.keyPress = false; //Evitamos que se salte el Ready
            controller.touchPress = false; //Evitamos que se salte el Ready
        }
        //Efecto shake del logo
        timeShake += DT;
        if (timeShake > 1) {
            sLogo.setRotation(paint.shakeEffect(DT));
            sLogo.setSize(sLogo.getWidth() + sLogo.getRotation(), sLogo.getHeight());
            if (timeShake > 1.3f) {
                timeShake = 0;
                sLogo.setRotation(0);
                sLogo.setSize(logo.getWidth() * ESCALA_METROS, logo.getHeight() * ESCALA_METROS);
            }
            sLogo.setPosition(-(sLogo.getWidth() / 2), sLogo.getY());
        }
        //Humo
        humoX += 100f * DT;
        if (humoX > WIDTH) {
            humoX = 0;
        }
    }
}