GameStateManager.java 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package control;
  2. import java.awt.Color;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import model.SongHandler;
  6. import model.gameState.GameOverState;
  7. import model.gameState.GameState;
  8. import model.gameState.MenuState;
  9. import model.gameState.PlayState;
  10. import model.gameState.TitleState;
  11. import control.button.Button;
  12. import control.button.ButtonHandler;
  13. import data.io.SQLConnector;
  14. public class GameStateManager {
  15. private List<GameState> gamestates;
  16. public GameState currentState;
  17. private int index = 0;
  18. public int fps;
  19. public enum State {
  20. TITLE_STATE,
  21. MENU_STATE,
  22. PLAY_STATE,
  23. GAMEOVER_STATE
  24. }
  25. public GameStateManager(SongHandler sh, SQLConnector sql){
  26. gamestates = new ArrayList<GameState>();
  27. gamestates.add(new TitleState(this, sh, sql));
  28. gamestates.add(new MenuState(this, sh, sql));
  29. gamestates.add(new PlayState(this, sh, sql));
  30. gamestates.add(new GameOverState(this, sh, sql));
  31. setState(State.TITLE_STATE);
  32. }
  33. public void setState(State st)
  34. {
  35. currentState = gamestates.get(st.ordinal());
  36. init();
  37. }
  38. public void next() {
  39. index++;
  40. index %= gamestates.size();
  41. currentState = gamestates.get(index);
  42. init();
  43. }
  44. public void update(float factor){
  45. currentState.update(factor);
  46. fps = (int) (60/(factor/10));
  47. }
  48. public void init()
  49. {
  50. for (int i = 1; i < ButtonHandler.getButtons().size(); i++) {
  51. Button b = ButtonHandler.getButton(i);
  52. b.setColor(Color.BLACK);
  53. }
  54. currentState.init();
  55. }
  56. }