ttt_multi_scene_start.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "../ttt_multi.h"
  2. enum SubmenuIndex { SubmenuIndexCreate, SubmenuIndexJoin, SubmenuIndexLocal };
  3. void ttt_multi_scene_start_submenu_callback(void* context, uint32_t index) {
  4. TttMultiApp* ttt_multi = context;
  5. view_dispatcher_send_custom_event(ttt_multi->view_dispatcher, index);
  6. }
  7. void ttt_multi_scene_start_on_enter(void* context) {
  8. TttMultiApp* ttt_multi = context;
  9. Submenu* submenu = ttt_multi->submenu;
  10. submenu_add_item(
  11. submenu,
  12. "Create game",
  13. SubmenuIndexCreate,
  14. ttt_multi_scene_start_submenu_callback,
  15. ttt_multi);
  16. submenu_add_item(
  17. submenu, "Join game", SubmenuIndexJoin, ttt_multi_scene_start_submenu_callback, ttt_multi);
  18. submenu_add_item(
  19. submenu,
  20. "Local game",
  21. SubmenuIndexLocal,
  22. ttt_multi_scene_start_submenu_callback,
  23. ttt_multi);
  24. submenu_set_header(submenu, "Tic-Tac-Toe");
  25. submenu_set_selected_item(
  26. submenu, scene_manager_get_scene_state(ttt_multi->scene_manager, TttMultiSceneStart));
  27. view_dispatcher_switch_to_view(ttt_multi->view_dispatcher, TttMultiViewMenu);
  28. }
  29. bool ttt_multi_scene_start_on_event(void* context, SceneManagerEvent event) {
  30. TttMultiApp* ttt_multi = context;
  31. bool consumed = false;
  32. if(event.type == SceneManagerEventTypeCustom) {
  33. if(event.event == SubmenuIndexCreate) {
  34. // TODO: implement
  35. consumed = true;
  36. } else if(event.event == SubmenuIndexJoin) {
  37. // TODO: implement
  38. consumed = true;
  39. } else if(event.event == SubmenuIndexLocal) {
  40. scene_manager_next_scene(ttt_multi->scene_manager, TttMultiSceneLocal);
  41. consumed = true;
  42. }
  43. scene_manager_set_scene_state(ttt_multi->scene_manager, TttMultiSceneStart, event.event);
  44. }
  45. return consumed;
  46. }
  47. void ttt_multi_scene_start_on_exit(void* context) {
  48. TttMultiApp* ttt_multi = context;
  49. submenu_reset(ttt_multi->submenu);
  50. }