package com.niw.kuttypanda.manager; import org.andengine.engine.Engine; import org.andengine.ui.IGameInterface.OnCreateSceneCallback; import com.niw.kuttypanda.base.BaseScene; import com.niw.kuttypanda.scene.GameScene; import com.niw.kuttypanda.scene.MainMenuScene; import com.niw.kuttypanda.scene.SettingsScene; import com.niw.kuttypanda.scene.SplashScene; public class SceneManager { private BaseScene splashScene; private BaseScene menuScene; private BaseScene gameScene; private BaseScene settingsScene; private static final SceneManager INSTANCE = new SceneManager(); private SceneType currentSceneType = SceneType.SCENE_SPLASH; private BaseScene currentScene; private Engine engine = ResourcesManager.getInstance().engine; public enum SceneType { SCENE_SPLASH, SCENE_MENU, SCENE_GAME, SCENE_SETTINGS, } public void setScene(BaseScene scene) { engine.setScene(scene); currentScene = scene; currentSceneType = scene.getSceneType(); } public void setScene(SceneType sceneType) { switch (sceneType) { case SCENE_MENU: setScene(menuScene); break; case SCENE_GAME: setScene(gameScene); break; case SCENE_SPLASH: setScene(splashScene); break; case SCENE_SETTINGS: setScene(settingsScene); break; default: break; } } public void createMenuScene(){ ResourcesManager.getInstance().loadMenuResources(); menuScene = new MainMenuScene(); SceneManager.getInstance().setScene(menuScene); disposeSplashScene(); } public void createSplashScene(OnCreateSceneCallback pOnCreateSceneCallback) { ResourcesManager.getInstance().loadSplashScreen(); splashScene = new SplashScene(); currentScene = splashScene; pOnCreateSceneCallback.onCreateSceneFinished(splashScene); } private void disposeSplashScene(){ ResourcesManager.getInstance().unloadSplashScreen(); splashScene.disposeScene(); splashScene = null; } public void loadGameScene(final Engine mEngine){ ResourcesManager.getInstance().loadGameResources(); gameScene = new GameScene(); setScene(gameScene); } public void loadSettingsScene(final Engine mEngine){ ResourcesManager.getInstance().loadGameResources(); settingsScene = new SettingsScene(); setScene(settingsScene); } public void loadMenuScene(final Engine mEngine){ setScene(menuScene); } public static SceneManager getInstance(){ return INSTANCE; } public SceneType getCurrentSceneType(){ return currentSceneType; } public BaseScene getCurrentScene(){ return currentScene; } }