flipchess_scene_menu.c 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "../flipchess.h"
  2. #include "../helpers/flipchess_voice.h"
  3. enum SubmenuIndex {
  4. SubmenuIndexScene1New = 10,
  5. SubmenuIndexScene1Resume,
  6. SubmenuIndexScene1Import,
  7. SubmenuIndexSettings,
  8. };
  9. void flipchess_scene_menu_submenu_callback(void* context, uint32_t index) {
  10. FlipChess* app = context;
  11. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  12. }
  13. void flipchess_scene_menu_on_enter(void* context) {
  14. FlipChess* app = context;
  15. if(app->sound == 1) {
  16. flipchess_voice_shall_we_play();
  17. }
  18. submenu_add_item(
  19. app->submenu,
  20. "New Game",
  21. SubmenuIndexScene1New,
  22. flipchess_scene_menu_submenu_callback,
  23. app);
  24. if(app->import_game == 1) {
  25. submenu_add_item(
  26. app->submenu,
  27. "Resume Game",
  28. SubmenuIndexScene1Resume,
  29. flipchess_scene_menu_submenu_callback,
  30. app);
  31. }
  32. // submenu_add_item(
  33. // app->submenu,
  34. // "Import Game",
  35. // SubmenuIndexScene1Import,
  36. // flipchess_scene_menu_submenu_callback,
  37. // app);
  38. submenu_add_item(
  39. app->submenu, "Settings", SubmenuIndexSettings, flipchess_scene_menu_submenu_callback, app);
  40. submenu_set_selected_item(
  41. app->submenu, scene_manager_get_scene_state(app->scene_manager, FlipChessSceneMenu));
  42. view_dispatcher_switch_to_view(app->view_dispatcher, FlipChessViewIdMenu);
  43. }
  44. bool flipchess_scene_menu_on_event(void* context, SceneManagerEvent event) {
  45. FlipChess* app = context;
  46. //UNUSED(app);
  47. if(event.type == SceneManagerEventTypeBack) {
  48. //exit app
  49. scene_manager_stop(app->scene_manager);
  50. view_dispatcher_stop(app->view_dispatcher);
  51. return true;
  52. } else if(event.type == SceneManagerEventTypeCustom) {
  53. if(event.event == SubmenuIndexScene1New) {
  54. app->import_game = 0;
  55. scene_manager_set_scene_state(
  56. app->scene_manager, FlipChessSceneMenu, SubmenuIndexScene1New);
  57. scene_manager_next_scene(app->scene_manager, FlipChessSceneScene_1);
  58. return true;
  59. }
  60. if(event.event == SubmenuIndexScene1Resume) {
  61. app->import_game = 1;
  62. scene_manager_set_scene_state(
  63. app->scene_manager, FlipChessSceneMenu, SubmenuIndexScene1Resume);
  64. scene_manager_next_scene(app->scene_manager, FlipChessSceneScene_1);
  65. return true;
  66. } else if(event.event == SubmenuIndexScene1Import) {
  67. app->import_game = 1;
  68. app->input_state = FlipChessTextInputGame;
  69. text_input_set_header_text(app->text_input, "Enter board FEN");
  70. view_dispatcher_switch_to_view(app->view_dispatcher, FlipChessViewIdTextInput);
  71. return true;
  72. } else if(event.event == SubmenuIndexSettings) {
  73. scene_manager_set_scene_state(
  74. app->scene_manager, FlipChessSceneMenu, SubmenuIndexSettings);
  75. scene_manager_next_scene(app->scene_manager, FlipChessSceneSettings);
  76. return true;
  77. }
  78. }
  79. return false;
  80. }
  81. void flipchess_scene_menu_on_exit(void* context) {
  82. FlipChess* app = context;
  83. submenu_reset(app->submenu);
  84. }