states.c 999 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "states.h"
  2. static void key_latch_update(Game_Data* data) {
  3. data->shift_latch_value = KeyDown(K_SHIFT);
  4. data->alpha_latch_value = KeyDown(K_ALPHA);
  5. }
  6. State current_state = TITLE;
  7. void switch_to_state(State new_state, Game_Data *data)
  8. {
  9. switch (new_state)
  10. {
  11. case GAME:
  12. init_game(data);
  13. break;
  14. case TITLE:
  15. init_title(data);
  16. break;
  17. case MENU:
  18. init_menu(data);
  19. break;
  20. case GAME_OVER:
  21. init_game_over(data);
  22. break;
  23. }
  24. current_state = new_state;
  25. }
  26. void update(Game_Data *data)
  27. {
  28. switch(current_state)
  29. {
  30. case GAME:
  31. update_game(data);
  32. break;
  33. case TITLE:
  34. update_title(data);
  35. break;
  36. case MENU:
  37. update_menu(data);
  38. break;
  39. case GAME_OVER:
  40. update_game_over(data);
  41. break;
  42. }
  43. key_latch_update(data);
  44. }
  45. void draw(Game_Data *data)
  46. {
  47. switch(current_state)
  48. {
  49. case GAME:
  50. draw_game(data);
  51. break;
  52. case TITLE:
  53. draw_title(data);
  54. break;
  55. case MENU:
  56. draw_menu(data);
  57. break;
  58. case GAME_OVER:
  59. draw_game_over(data);
  60. break;
  61. }
  62. }