package org.doublelong.jastroblast.managers;
import org.doublelong.jastroblast.JastroBlast;
import org.doublelong.jastroblast.entity.Screens;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.utils.IntMap;
public final class ScreenManager
{
private static ScreenManager instance;
private JastroBlast game;
private IntMap<Screen> screens;
private ScreenManager() {
screens = new IntMap<Screen>();
}
public static ScreenManager getInstance()
{
if (null == instance)
{
instance = new ScreenManager();
}
return instance;
}
/**
* Initializes the game property
*
* @param game
*/
public void initialize(JastroBlast game)
{
this.game = game;
}
/**
* Tells the game to switch screens
*
* @param screen
*/
public void show(Screens screen)
{
if (null == game)
{
return;
}
if (!screens.containsKey(screen.ordinal()))
{
screens.put(screen.ordinal(), screen.getScreenInstance());
}
this.game.setScreen(screens.get(screen.ordinal()));
}
public Screen get(Screens screen)
{
if (!screens.containsKey(screen.ordinal()))
{
screens.put(screen.ordinal(), screen.getScreenInstance());
}
return screens.get(screen.ordinal());
}
public void dispose(Screens screen)
{
if(!screens.containsKey(screen.ordinal()))
{
return;
}
screens.remove(screen.ordinal()).dispose();
}
public void dispose()
{
for (Screen screen : screens.values())
{
screen.dispose();
}
screens.clear();
instance = null;
}
}