package com.game.framework.manager; import java.util.HashMap; import com.badlogic.gdx.Game; import com.game.framework.display.DisplayScreen; public final class ScreenManager { private static ScreenManager instance; private Game game; public HashMap<String,Class<?>> screens; private ScreenManager() { screens = new HashMap<String,Class<?>>(); } public static ScreenManager getInstance() { if (null == instance) { instance = new ScreenManager(); } return instance; } public void initialize(Game game) { this.game = game; } public void addScreen(Class<?> screen) { if(screen!=null) { screens.put(screen.toString(),screen); } } public void setScreen(Class<? extends DisplayScreen> screenClass) { String name = screenClass.toString(); if(game.getScreen()!=null) { game.getScreen().dispose(); } Class<?> c = screens.get(name); DisplayScreen currentScreen = null; try{ currentScreen = (DisplayScreen) Class.forName(c.getName()).newInstance(); } catch(Exception e) { e.printStackTrace(); } game.setScreen(currentScreen); //currentScreen.init(); } public void dispose() { if(game.getScreen()!=null) { game.getScreen().dispose(); } instance = null; } }