GameStateManager.java 1.6 KB

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