net.k3rnel.unsealed.Unsealed.java Source code

Java tutorial

Introduction

Here is the source code for net.k3rnel.unsealed.Unsealed.java

Source

/**
 * Unsealed: Whispers of Wisdom. 
 * 
 * Copyright (C) 2012 - Juan 'Nushio' Rodriguez
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3 of 
 * the License as published by the Free Software Foundation
 * 
 * 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 net.k3rnel.unsealed;

import net.k3rnel.unsealed.screens.MenuScreen;
import net.k3rnel.unsealed.screens.OptionsScreen;
import net.k3rnel.unsealed.screens.QuickTutorialScreen;
import net.k3rnel.unsealed.screens.SplashScreen;
import net.k3rnel.unsealed.services.MusicManager;
import net.k3rnel.unsealed.services.PreferencesManager;
import net.k3rnel.unsealed.services.SoundManager;

import com.badlogic.gdx.Game;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.FPSLogger;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;

public class Unsealed extends Game {

    // Useful for Logs and stuff.
    public static final String LOG = Unsealed.class.getSimpleName();

    // whether we are in development mode
    public static final boolean DEBUG = true;

    // Gets the current FPS. Useful for debugging. 
    private FPSLogger fpsLogger;

    // services
    private PreferencesManager preferencesManager;
    private MusicManager musicManager;
    private SoundManager soundManager;

    private TextureAtlas texAtlas;
    //The instance to our game.
    private static Unsealed instance;

    public Unsealed() {
        instance = this;
    }

    // Service getters
    public PreferencesManager getPreferencesManager() {
        return preferencesManager;
    }

    public MusicManager getMusicManager() {
        return musicManager;
    }

    public SoundManager getSoundManager() {
        return soundManager;
    }

    public QuickTutorialScreen getSplashScreen() {
        return new QuickTutorialScreen(this);
    }

    public MenuScreen getMenuScreen() {
        return new MenuScreen(this);
    }

    public OptionsScreen getOptionsScreen() {
        return new OptionsScreen(this);
    }

    public TextureAtlas getTextureAtlas() {
        if (texAtlas == null) {
            texAtlas = new TextureAtlas(Gdx.files.internal("image-atlases/pages-info.atlas"));
        }
        return texAtlas;
    }

    @Override
    public void create() {
        Gdx.app.log(Unsealed.LOG, "Creating game on " + Gdx.app.getType());

        // create the preferences manager
        preferencesManager = new PreferencesManager();

        // create the music manager
        musicManager = new MusicManager();
        musicManager.setVolume(preferencesManager.getVolume());
        musicManager.setEnabled(preferencesManager.isMusicEnabled());

        // create the sound manager
        soundManager = new SoundManager();
        soundManager.setVolume(preferencesManager.getVolume());
        soundManager.setEnabled(preferencesManager.isSoundEnabled());

        // create the helper objects
        if (Unsealed.DEBUG)
            fpsLogger = new FPSLogger();

    }

    @Override
    public void resize(int width, int height) {
        super.resize(width, height);
        Gdx.app.log(Unsealed.LOG, "Resizing game to: " + width + " x " + height);

        // show the splash screen when the game is resized for the first time;
        // this approach avoids calling the screen's resize method repeatedly
        if (getScreen() == null) {
            if (Unsealed.DEBUG)
                setScreen(new MenuScreen(this));
            else
                setScreen(new SplashScreen(this));
        }
    }

    @Override
    public void render() {
        super.render();

        // output the current FPS
        if (DEBUG) {
            fpsLogger.log();
        }
    }

    @Override
    public void pause() {
        super.pause();
        Gdx.app.log(Unsealed.LOG, "Pausing game");

    }

    @Override
    public void resume() {
        super.resume();
        Gdx.app.log(Unsealed.LOG, "Resuming game");
    }

    @Override
    public void setScreen(Screen screen) {
        super.setScreen(screen);
        Gdx.app.log(Unsealed.LOG, "Setting screen: " + screen.getClass().getSimpleName());
    }

    @Override
    public void dispose() {
        super.dispose();
        Gdx.app.log(Unsealed.LOG, "Disposing game");

        // dipose some services
        musicManager.dispose();
        soundManager.dispose();
    }

    public static Unsealed getInstance() {
        return instance;
    }
}