Hallo,
ich versuch grade ein GameState System zu implementieren. Ich habe einen fixedthread pool von 4 threads und abhängig davon meine 4 Gamestates. Jeder thread funktioniert abhängig von meiner enum state Wahl einwandfrei, allerdings das umschalten zwischen den states innerhalb der applikation nicht. Es gibt zwar mit dem executor eine shutdown methode allerdings kann ich dann den nächsten thread nicht mehr starten und es soll immer nur ein thread laufen. Gibts da iwie eine mögzlichkeit um elegant zwischen den states zu switchen?
[CODE lang="java" title="GameStates"]switch(states) {
case INTRO:
gamescreen.removeAll();
intro = new Intro(gamescreen,new ImageIcon("res/menu/backgrounds/intro_video.gif"));
audio.playIntroMusic("INTROGM");
audio.playIntroVoice("intro_audio");
gamescreen.add(intro);
executor.execute(intro);
break;
case LOADINGSCREEN:
gamescreen.removeAll();
loadingScreen = new LoadingScreen(gamescreen);
gamescreen.add(loadingScreen);
executor.execute(loadingScreen);
break;
case MAINMENU:
gamescreen.removeAll();
mainmenu = new MainMenu(gamescreen);
//audio.playMainMenuMusic("");
gamescreen.add(mainmenu);
executor.execute(mainmenu);
break;
case GAME:
gamescreen.removeAll();
game = new Game(gamescreen);
//audio.playGameMusic("");
gamescreen.add(game);
executor.execute(game);
break;
case MAPEDITOR:
gamescreen.removeAll();
mapeditor = new MapEditor(gamescreen);
gamescreen.add(mapeditor);
executor.execute(mapeditor);
break;
}[/CODE]
ich versuch grade ein GameState System zu implementieren. Ich habe einen fixedthread pool von 4 threads und abhängig davon meine 4 Gamestates. Jeder thread funktioniert abhängig von meiner enum state Wahl einwandfrei, allerdings das umschalten zwischen den states innerhalb der applikation nicht. Es gibt zwar mit dem executor eine shutdown methode allerdings kann ich dann den nächsten thread nicht mehr starten und es soll immer nur ein thread laufen. Gibts da iwie eine mögzlichkeit um elegant zwischen den states zu switchen?
[CODE lang="java" title="GameStates"]switch(states) {
case INTRO:
gamescreen.removeAll();
intro = new Intro(gamescreen,new ImageIcon("res/menu/backgrounds/intro_video.gif"));
audio.playIntroMusic("INTROGM");
audio.playIntroVoice("intro_audio");
gamescreen.add(intro);
executor.execute(intro);
break;
case LOADINGSCREEN:
gamescreen.removeAll();
loadingScreen = new LoadingScreen(gamescreen);
gamescreen.add(loadingScreen);
executor.execute(loadingScreen);
break;
case MAINMENU:
gamescreen.removeAll();
mainmenu = new MainMenu(gamescreen);
//audio.playMainMenuMusic("");
gamescreen.add(mainmenu);
executor.execute(mainmenu);
break;
case GAME:
gamescreen.removeAll();
game = new Game(gamescreen);
//audio.playGameMusic("");
gamescreen.add(game);
executor.execute(game);
break;
case MAPEDITOR:
gamescreen.removeAll();
mapeditor = new MapEditor(gamescreen);
gamescreen.add(mapeditor);
executor.execute(mapeditor);
break;
}[/CODE]