scene_menu.c 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "app.h"
  2. #include "game.h"
  3. #include "app_gameplay.h"
  4. #include "racso_zero_icons.h"
  5. #include "wave/scene_management.h"
  6. #include <furi.h>
  7. #include <gui/gui.h>
  8. void menu_render_callback(Canvas* const canvas, void* context) {
  9. AppContext* app = (AppContext*)context;
  10. UNUSED(app);
  11. canvas_clear(canvas);
  12. canvas_set_color(canvas, ColorBlack);
  13. canvas_set_font(canvas, FontPrimary);
  14. //canvas_draw_str_aligned(canvas, 31, 6, AlignCenter, AlignTop, "ÚLTIMA");
  15. const int ZERO_WIDTH = 66, ZERO_HEIGHT = 14;
  16. canvas_draw_icon(canvas, (127 - ZERO_WIDTH) / 2 + 1, 0, &I_zero);
  17. // Version
  18. int versionX = (127 + ZERO_WIDTH) / 2 - 12, versionY = ZERO_HEIGHT + 5;
  19. canvas_draw_line(canvas, versionX, versionY - 2, versionX, versionY - 1);
  20. canvas_draw_line(canvas, versionX + 2, versionY - 2, versionX + 2, versionY - 1);
  21. canvas_draw_dot(canvas, versionX + 1, versionY);
  22. versionX += 5;
  23. canvas_draw_line(canvas, versionX, versionY - 3, versionX, versionY);
  24. versionX += 2;
  25. canvas_draw_dot(canvas, versionX, versionY);
  26. versionX += 2;
  27. canvas_draw_line(canvas, versionX, versionY - 2, versionX, versionY - 1);
  28. canvas_draw_line(canvas, versionX + 2, versionY - 2, versionX + 2, versionY - 1);
  29. canvas_draw_dot(canvas, versionX + 1, versionY);
  30. canvas_draw_dot(canvas, versionX + 1, versionY - 3);
  31. // draw card icons
  32. const int CARD_ICON_WIDTH = 9, SPACING = 2, ICONS_Y = ZERO_HEIGHT + 10;
  33. const int ICONS_X = (127 - (4 * CARD_ICON_WIDTH + 3 * SPACING)) / 2;
  34. canvas_draw_icon(canvas, ICONS_X, ICONS_Y, &I_s1);
  35. canvas_draw_icon(canvas, ICONS_X + CARD_ICON_WIDTH + SPACING, ICONS_Y, &I_s2);
  36. canvas_draw_icon(canvas, ICONS_X + 2 * (CARD_ICON_WIDTH + SPACING), ICONS_Y, &I_s3);
  37. canvas_draw_icon(canvas, ICONS_X + 3 * (CARD_ICON_WIDTH + SPACING), ICONS_Y, &I_s4);
  38. for(int x = 0, y = 58, dx = 0; dx <= 3; dx++)
  39. canvas_draw_line(canvas, x + dx, y - dx, x + dx, y + dx);
  40. canvas_draw_icon(canvas, 6, 55, &I_question_mark);
  41. const int START_CENTER_X = 48, START_CENTER_Y = 59;
  42. canvas_draw_circle(canvas, START_CENTER_X, START_CENTER_Y, 4);
  43. canvas_draw_disc(canvas, START_CENTER_X, START_CENTER_Y, 2);
  44. canvas_draw_str_aligned(
  45. canvas, START_CENTER_X + 8, START_CENTER_Y + 4, AlignLeft, AlignBottom, "Start");
  46. }
  47. void menu_input_callback(InputKey key, InputType type, void* context) {
  48. AppContext* app = (AppContext*)context;
  49. if(key == InputKeyBack && type == InputTypePress)
  50. scene_manager_set_scene(app->sceneManager, SceneType_None);
  51. else if(key == InputKeyOk && type == InputTypePress)
  52. scene_manager_set_scene(app->sceneManager, SceneType_Game);
  53. else if(key == InputKeyLeft && type == InputTypePress)
  54. scene_manager_set_scene(app->sceneManager, SceneType_Credits);
  55. }