package com.tacoid.pweek; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.audio.Music; import com.badlogic.gdx.audio.Sound; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.graphics.g2d.TextureAtlas; import com.tacoid.pweek.PreferenceManager.Preference; import com.tacoid.pweek.screens.GameServicesScreen; import com.tacoid.pweek.screens.GameSoloScreen; import com.tacoid.pweek.screens.GameTimeAttackScreen; import com.tacoid.pweek.screens.GameVersusScreen; import com.tacoid.pweek.screens.LanguageScreen; import com.tacoid.pweek.screens.LoadingScreen; import com.tacoid.pweek.screens.MainMenuScreen; public class Pweek extends Game { private IActivityRequestHandler myRequestHandler; private IGameService myGameService; private static Pweek instance = null; public AssetManager manager; public TextureAtlas atlasPuyo; public TextureAtlas atlasControls; public TextureAtlas atlasPlank; public TextureAtlas atlasPanelsLandscape; public TextureAtlas atlasPanelsPortrait; public TextureAtlas atlasBouttons; public TextureAtlas atlasGoogle; private boolean desktopMode; public static final int VIRTUAL_WIDTH = 1280; public static final int VIRTUAL_HEIGHT = 768; public ShareLauncher shareLauncher = null; private LoadingScreen loadingScreen; private boolean loaded = false; private boolean justLaunched = true; public enum ScreenOrientation { LANDSCAPE, PORTRAIT }; private Pweek() {} public static void setHandler(IActivityRequestHandler handler) { getInstance().myRequestHandler = handler; } public static void setGameService(IGameService gameService) { getInstance().myGameService = gameService; } public IGameService getGameService() { return getInstance().myGameService; } /* public static void setShareLauncher(ShareLauncher launcher) { getInstance().shareLauncher = launcher; }*/ public static Pweek getInstance() { if (instance == null) { instance = new Pweek(); } return instance; } public IActivityRequestHandler getHandler() { return myRequestHandler; } public void render() { /* Si update renvoi true, c'est que tout est chargé, on a plus qu'à afficher le screen qu'on veut. Sinon, on affiche le screen de chargement */ if (manager.update()) { if (justLaunched) { String language = PreferenceManager.getInstance().getPreference(Preference.LANGUAGE); MusicPlayer.getInstance().init(manager.get("sounds/AnoyingMusic.mp3", Music.class)); SoundPlayer.getInstance().init(manager); if(I18nManager.getInstance().setLanguage(language)) { loadLocalizedAssets(); if (getScreen() == null) { setScreen(GameServicesScreen.getInstance()); myRequestHandler.showAds(true); } else { getScreen().show(); } } else { setScreen(LanguageScreen.getInstance()); } justLaunched = false; } else if (!loaded){ getScreen().show(); } loaded = true; super.render(); } else { if (loadingScreen != null) loadingScreen.render(Gdx.graphics.getDeltaTime()); loaded = false; } } public void resize (int width, int height) { if (getScreen() != null){ getScreen().resize(width, height); } else { LoadingScreen.getInstance().resize(width, height); } } @Override public void create() { loadingScreen = LoadingScreen.getInstance(); LoadingScreen.getInstance().resize(0, 0); manager = new AssetManager(); Gdx.input.setCatchBackKey(true); loadAssets(); myRequestHandler.showAds(false); justLaunched = true; } private void loadAssets() { /* fonts */ manager.load("images/font_score.fnt", BitmapFont.class); manager.load("images/font_level.fnt", BitmapFont.class); manager.load("images/font64.fnt", BitmapFont.class); /* Textures du menu */ manager.load("images/menu/flag-fr.png", Texture.class); manager.load("images/menu/flag-en.png", Texture.class); manager.load("images/menu/sky.png", Texture.class); manager.load("images/menu/sky-portrait.png", Texture.class); manager.load("images/menu/hills.png", Texture.class); manager.load("images/menu/logo.png", Texture.class); atlasPuyo = new TextureAtlas(Gdx.files.internal("images/puyos/pages.atlas")); atlasControls = new TextureAtlas(Gdx.files.internal("images/controls/pages.atlas")); atlasPanelsLandscape = new TextureAtlas(Gdx.files.internal("images/panels/landscape/pages.atlas")); atlasPanelsPortrait = new TextureAtlas(Gdx.files.internal("images/panels/portrait/pages.atlas")); atlasBouttons = new TextureAtlas(Gdx.files.internal("images/bouttons/pages.atlas")); /*** Son ***/ manager.load("sounds/bleep.wav", Sound.class); manager.load("sounds/bleep2.wav", Sound.class); manager.load("sounds/explode.wav", Sound.class); manager.load("sounds/click.wav", Sound.class); manager.load("sounds/nuisance.wav", Sound.class); manager.load("sounds/AnoyingMusic.mp3", Music.class); } public void loadLocalizedAssets() { atlasPlank = new TextureAtlas(Gdx.files.internal("images/menu/plank-" + I18nManager.getInstance().getLanguage().toString() + "/pages.atlas")); atlasGoogle = new TextureAtlas(Gdx.files.internal("images/google/" + I18nManager.getInstance().getLanguage().toString() + "/pages.atlas")); MainMenuScreen.getInstance().init(); GameVersusScreen.getInstance().initGraphics(); GameSoloScreen.getInstance().initGraphics(); GameTimeAttackScreen.getInstance().initGraphics(); } public void setDesktopMode(boolean b) { this.desktopMode = b; } public boolean getDesktopMode() { return this.desktopMode; } }