states.c 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #include "states.h"
  2. static void key_latch_update(Game_Data* data) {
  3. data->shift_latch_value = (KeyDown(K_EXE) || 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. case OUT_OF_MEMORY:
  24. init_oom(data);
  25. break;
  26. }
  27. current_state = new_state;
  28. }
  29. void update(Game_Data *data)
  30. {
  31. switch(current_state)
  32. {
  33. case GAME:
  34. update_game(data);
  35. break;
  36. case TITLE:
  37. update_title(data);
  38. break;
  39. case MENU:
  40. update_menu(data);
  41. break;
  42. case GAME_OVER:
  43. update_game_over(data);
  44. break;
  45. case OUT_OF_MEMORY:
  46. update_oom(data);
  47. break;
  48. }
  49. key_latch_update(data);
  50. }
  51. void draw(Game_Data *data)
  52. {
  53. switch(current_state)
  54. {
  55. case GAME:
  56. draw_game(data);
  57. break;
  58. case TITLE:
  59. draw_title(data);
  60. break;
  61. case MENU:
  62. draw_menu(data);
  63. break;
  64. case GAME_OVER:
  65. draw_game_over(data);
  66. break;
  67. case OUT_OF_MEMORY:
  68. draw_oom(data);
  69. break;
  70. }
  71. }