Switching between gamestates

hello,

I am having some trouble trying to switch from my title menu state to my in game state.

It just freezes on the titlestate when I try switching.

here is the code I have that switches game states:

titleState.setActive(false);
        playState = new PlayState("playState", name);
        GameStateManager.getInstance().attachChild(playState);
        playState.setActive(true);



Thanks for your help in advance

nevermind about that, I switched to using standardgame, but now the titlestate will not even start! It just freezes…

Here is my code:

public class Game {
    private static final Level LOGGER_LEVEL = Level.WARNING;

    private static StandardGame game;

    // the gamestates
    private static TitleState titleState;
    private static PlayState playState;
    // end gamestates

    public Game() {
        //Logger.getLogger("").setLevel(LOGGER_LEVEL);

        game = new StandardGame("StandardGame");
        game.setConfigShowMode(ConfigShowMode.NeverShow);
        //
        init();
    }

    public static void switchToPlayState(String name) {
        titleState.setActive(false);

        playState = new PlayState(name, game.getCamera());
        GameStateManager.getInstance().attachChild(playState);
        playState.setActive(true);
    }
   
    private void init() {  
        GameSettings settings = game.getSettings();
       
        settings.setRenderer("LWJGL");
        settings.setHeight((int) Toolkit
            .getDefaultToolkit().getScreenSize().getHeight());
        settings.setWidth((int) Toolkit
            .getDefaultToolkit().getScreenSize().getWidth());
        settings.setFullscreen(true);
        settings.setSamples(0);
        settings.setDepth(16);
        settings.setFrequency(60);
       
        game.start();
        game.getDisplay().setTitle("Xenion");

        titleState = new TitleState("TitleState");

        GameStateManager.getInstance().attachChild(titleState);
        titleState.setActive(true);
    }
   
    public static void quit() {
        game.shutdown();
        System.exit(0);
    }
}

ok, the title state shows when i call game.start() as soon as I make the standard game,

but still if I try to switch to the play state it freezes!



Also, how can I modify the gamesettings for standardgame? (I want it to be the same settings every time)

I call getSettings() but I can do that only after I make the standardgame. When I try modifying it, it still keeps the original settings.



here is the new code:

public class Game {
    private static final Level LOGGER_LEVEL = Level.WARNING;

    private static StandardGame game;

    // the gamestates
    private static TitleState titleState;
    private static PlayState playState;
    // end gamestates

    public Game() {
        //Logger.getLogger("").setLevel(LOGGER_LEVEL);

        game = new StandardGame("StandardGame");
        game.setConfigShowMode(ConfigShowMode.NeverShow);
        game.start();

        titleState = new TitleState("TitleState");

        GameStateManager.getInstance().attachChild(titleState);
        titleState.setActive(true);
    }

    public static void switchToPlayState(String name) { //freezes!
        titleState.setActive(false);

        playState = new PlayState(name, game.getCamera());
        GameStateManager.getInstance().attachChild(playState);
        playState.setActive(true);
    }
   
    public static void quit() {
        game.shutdown();
        System.exit(0);
    }
}


Have you tried debugging your PlayState?

How does your PlayState class look?

Why are the methods static?

the playstate works if I run it by itself but if I try switching from the title to play state it just freezes.

the methods are static so I can access them in my game states without having to pass an instance of the class to them.

okay, the switching works if I load both game states at the beginning.

I guess I'm fine with that.


public class Game {
    private static final Level LOGGER_LEVEL = Level.WARNING;

    private static StandardGame game;

    // the gamestates
    private static TitleState titleState;
    private static PlayState playState;
    // end gamestates

    public Game() {
        Logger.getLogger("").setLevel(LOGGER_LEVEL);

        game = new StandardGame("Xenion");
        game.setConfigShowMode(ConfigShowMode.NeverShow);
        GameSettings settings = game.getSettings();

        settings.setRenderer("LWJGL");
        settings.setHeight((int) Toolkit
            .getDefaultToolkit().getScreenSize().getHeight());
        settings.setWidth((int) Toolkit
            .getDefaultToolkit().getScreenSize().getWidth());
        settings.setFullscreen(true);
        settings.setSamples(0);
        settings.setDepth(16);
        settings.setFrequency(60);
        game.start();

        playState = new PlayState("PlayState", game.getCamera());
        GameStateManager.getInstance().attachChild(playState);
        playState.setActive(false);

        titleState = new TitleState("TitleState");
        GameStateManager.getInstance().attachChild(titleState);
        titleState.setActive(true);
    }

    public static void switchToPlayState(String name) {
        titleState.setActive(false);

        playState.setActive(true);
        playState.setInitPlayerLoc(GameProps.getPlayerLoc());
        playState.setUsername(name);
    }
   
    public static void quit() {
        game.shutdown();
        System.exit(0);
    }
}