/**
* 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;
}
}