states.c 998 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "states.h"
  2. State current_state = GAME;
  3. static void key_latch_update(Game_Data* data) {
  4. data->shift_latch_value = KeyDown(K_SHIFT);
  5. data->alpha_latch_value = KeyDown(K_ALPHA);
  6. }
  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. }