world.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <draw/world.h>
  2. static void draw_bounds(Canvas *canvas)
  3. {
  4. // Draw the outer bounds adjusted by camera offset
  5. // we draw this last to ensure users can see the bounds
  6. canvas_draw_frame(canvas, -camera_x, -camera_y, WORLD_WIDTH, WORLD_HEIGHT);
  7. }
  8. void draw_example_world(Canvas *canvas)
  9. {
  10. // Draw other elements adjusted by camera offset
  11. // Static Dot at (72, 40)
  12. canvas_draw_dot(canvas, 72 - camera_x, 40 - camera_y);
  13. // Static Circle at (16, 16) with radius 4
  14. canvas_draw_circle(canvas, 16 - camera_x, 16 - camera_y, 4);
  15. // Static 8x8 Rectangle Frame at (96, 48)
  16. canvas_draw_frame(canvas, 96 - camera_x, 48 - camera_y, 8, 8);
  17. // Static earth icon at (112, 56)
  18. canvas_draw_icon(canvas, 112 - camera_x, 56 - camera_y, &I_icon_earth);
  19. // static home icon at (128, 24)
  20. canvas_draw_icon(canvas, 128 - camera_x, 24 - camera_y, &I_icon_home);
  21. // static menu icon at (144, 24)
  22. canvas_draw_icon(canvas, 144 - camera_x, 24 - camera_y, &I_icon_info);
  23. // static man icon at (160, 56)
  24. canvas_draw_icon(canvas, 160 - camera_x, 56 - camera_y, &I_icon_man);
  25. // static woman icon at (208, 56)
  26. canvas_draw_icon(canvas, 168 - camera_x, 56 - camera_y, &I_icon_woman);
  27. // static plant icon at (168, 32)
  28. canvas_draw_icon(canvas, 168 - camera_x, 32 - camera_y, &I_icon_plant);
  29. // tree world
  30. draw_icon_half_world(canvas, true, &I_icon_tree);
  31. // Draw the bounds
  32. draw_bounds(canvas);
  33. }
  34. void draw_tree_world(Canvas *canvas)
  35. {
  36. // two full left/up tree lines
  37. for (int i = 0; i < 2; i++)
  38. {
  39. draw_icon_line(canvas, (Vector){5, 2 + i * 17}, 22, true, &I_icon_tree); // horizontal
  40. draw_icon_line(canvas, (Vector){5 + i * 17, 2}, 11, false, &I_icon_tree); // vertical
  41. }
  42. // two full down tree lines
  43. for (int i = 9; i < 11; i++)
  44. {
  45. draw_icon_line(canvas, (Vector){5, 2 + i * 17}, 22, true, &I_icon_tree); // horizontal
  46. }
  47. // two full right tree lines
  48. for (int i = 20; i < 22; i++)
  49. {
  50. draw_icon_line(canvas, (Vector){5 + i * 17, 50}, 8, false, &I_icon_tree); // vertical
  51. }
  52. // draw labyinth line-by-line
  53. // third line (14 left, 3 middle, 0 right) - exit line
  54. draw_icon_line(canvas, (Vector){5, 2 + 2 * 17}, 14, true, &I_icon_tree); // 14 left
  55. draw_icon_line(canvas, (Vector){5 + 16 * 17, 2 + 2 * 17}, 3, true, &I_icon_tree); // 3 middle
  56. // fourth line (3 left, 6 middle, 4 right)
  57. draw_icon_line(canvas, (Vector){5, 2 + 3 * 17}, 3, true, &I_icon_tree); // 3 left
  58. draw_icon_line(canvas, (Vector){5 + 7 * 17, 2 + 3 * 17}, 6, true, &I_icon_tree); // 6 middle
  59. draw_icon_line(canvas, (Vector){5 + 15 * 17, 2 + 3 * 17}, 4, true, &I_icon_tree); // 4 right
  60. // fifth line (6 left, 7 middle, 0 right)
  61. draw_icon_line(canvas, (Vector){5, 2 + 4 * 17}, 6, true, &I_icon_tree); // 6 left
  62. draw_icon_line(canvas, (Vector){5 + 7 * 17, 2 + 4 * 17}, 7, true, &I_icon_tree); // 7 middle
  63. // sixth line (5 left, 6 middle, 7 right)
  64. draw_icon_line(canvas, (Vector){5, 2 + 5 * 17}, 5, true, &I_icon_tree); // 5 left
  65. draw_icon_line(canvas, (Vector){5 + 7 * 17, 2 + 5 * 17}, 3, true, &I_icon_tree); // 3 middle
  66. draw_icon_line(canvas, (Vector){5 + 15 * 17, 2 + 5 * 17}, 7, true, &I_icon_tree); // 4 right
  67. // seventh line (0 left, 7 middle, 4 right)
  68. draw_icon_line(canvas, (Vector){5 + 6 * 17, 2 + 6 * 17}, 7, true, &I_icon_tree); // 7 middle
  69. draw_icon_line(canvas, (Vector){5 + 14 * 17, 2 + 6 * 17}, 4, true, &I_icon_tree); // 4 right
  70. // eighth line (4 left, 3 middle, 4 right)
  71. draw_icon_line(canvas, (Vector){5, 2 + 7 * 17}, 4, true, &I_icon_tree); // 4 left
  72. draw_icon_line(canvas, (Vector){5 + 7 * 17, 2 + 7 * 17}, 3, true, &I_icon_tree); // 3 middle
  73. draw_icon_line(canvas, (Vector){5 + 15 * 17, 2 + 7 * 17}, 4, true, &I_icon_tree); // 4 right
  74. // ninth line (3 left, 2 middle, 3 right)
  75. draw_icon_line(canvas, (Vector){5, 2 + 8 * 17}, 3, true, &I_icon_tree); // 3 left
  76. draw_icon_line(canvas, (Vector){5 + 5 * 17, 2 + 8 * 17}, 1, true, &I_icon_tree); // 2 middle
  77. draw_icon_line(canvas, (Vector){5 + 11 * 17, 2 + 8 * 17}, 3, true, &I_icon_tree); // 3 right
  78. // Draw the bounds
  79. draw_bounds(canvas);
  80. }