test6.nim 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. # --- Test 6. Work with 2D nodes. --- #
  2. import
  3. nodesnim,
  4. unittest
  5. suite "Work with 2D nodes.":
  6. test "Setup window":
  7. Window("2D nodes test", 1024, 640)
  8. test "Register events":
  9. addButtonAction("left", BUTTON_LEFT)
  10. addKeyAction("w", "w")
  11. addKeyAction("a", "a")
  12. addKeyAction("s", "s")
  13. addKeyAction("d", "d")
  14. test "Setup scene":
  15. build:
  16. - Scene main
  17. addMainScene(main)
  18. test "Node2D test":
  19. build:
  20. - Node2D node2d(name: "2d node")
  21. getSceneByName("main").addChild(node2d)
  22. test "Sprite test":
  23. build:
  24. - Sprite sprite:
  25. centered: true
  26. call loadTexture("assets/anim/2.jpg")
  27. call move(80, 80)
  28. getSceneByName("main").addChild(sprite)
  29. test "AnimatedSprite test":
  30. build:
  31. - AnimatedSprite animation:
  32. centered: false
  33. z_index: -10
  34. call:
  35. addFrame("default", load("assets/anim/0.jpg"))
  36. addFrame("default", load("assets/anim/1.jpg"))
  37. addFrame("default", load("assets/anim/2.jpg"))
  38. addFrame("default", load("assets/anim/3.jpg"))
  39. addFrame("default", load("assets/anim/4.jpg"))
  40. play(name = "", backward = false)
  41. setSpeed("default", 5) # name, frames-per-second
  42. getSceneByName("main").addChild(animation)
  43. test "YSort test":
  44. var image = load("assets/anim/2.jpg")
  45. build:
  46. - YSort sort:
  47. z_index: 1
  48. call move(720, 80)
  49. - Sprite s1:
  50. filter: Color("#6644ff")
  51. call setTexture(image)
  52. - Sprite s2:
  53. filter: Color("#997799")
  54. call setTexture(image)
  55. call move(0, 80)
  56. - Sprite s3:
  57. filter: Color("#9f9")
  58. call setTexture(image)
  59. call move(0, 160)
  60. getSceneByName("main").addChild(sort)
  61. test "KinematicBody2D test":
  62. build:
  63. - KinematicBody2D body:
  64. - CollisionShape2D collision:
  65. call setShapeTypePolygon(Vector2(0, 0), Vector2(15, 5), Vector2(28, 15),
  66. Vector2(35, 25), Vector2(5, 45))
  67. - CollisionShape2D rect_collision:
  68. call resize(160, 40)
  69. call move(100, 200)
  70. - CollisionShape2D polygon_collision:
  71. call setShapeTypePolygon(Vector2(0, 0), Vector2(150, 65), Vector2(25, 150))
  72. call move(300, 200)
  73. - CollisionShape2D circle_collision:
  74. call setShapeTypeCircle(0, 0, 64)
  75. call move(100, 300)
  76. body@onProcess(self):
  77. if isActionPressed("left"):
  78. let
  79. mouse_pos = body.getGlobalMousePosition()
  80. distance = body.global_position.distance(mouse_pos)
  81. direction = body.global_position.directionTo(mouse_pos)
  82. speed = 3f
  83. if distance >= 5:
  84. body.moveAndCollide(direction*speed)
  85. getSceneByName("main").addChildren(body, rect_collision, polygon_collision, circle_collision)
  86. test "Camera2D test":
  87. build:
  88. - KinematicBody2D player:
  89. z_index: 50
  90. - Sprite player_sprite:
  91. z_index: 50
  92. centered: true
  93. filter: Color("#555")
  94. call loadTexture("assets/anim/2.jpg")
  95. - Camera2D camera:
  96. call:
  97. setTarget(player)
  98. setLimit(-2048, -1024, 2048, 1024)
  99. setCurrent()
  100. enableSmooth()
  101. player@onProcess(self):
  102. if isActionPressed("w"):
  103. player.move(0, -10)
  104. elif isActionPressed("s"):
  105. player.move(0, 10)
  106. if isActionPressed("a"):
  107. player.move(-10, 0)
  108. elif isActionPressed("d"):
  109. player.move(10, 0)
  110. getSceneByName("main").addChildren(player, camera)
  111. test "TileMap 2d test":
  112. var tileset = TileSet("assets/tilesets/land.png", Vector2(64, 64), GL_RGBA)
  113. build:
  114. - TileMap map:
  115. z_index: -100
  116. call:
  117. setTileSet(tileset)
  118. move(-2048, -1024)
  119. # map size layer count
  120. resizeMap(Vector2(512, 128), 1)
  121. fill(Vector2(1, 0))
  122. drawRect(3, 3, 10, 5, Vector2(9, 7))
  123. drawTile(0, 0, Vector2(3, 0))
  124. drawTile(1, 0, Vector2(7, 4.5))
  125. drawTile(0, 1, Vector2(6.5, 5))
  126. drawTile(1, 1, Vector2(7, 5))
  127. getSceneByName("main").addChild(map)
  128. test "TileMap isometric test":
  129. var tileset = TileSet("assets/tilesets/isometric_desert.png", Vector2(64, 32), GL_RGBA)
  130. build:
  131. - TileMap map:
  132. z_index: -80
  133. call:
  134. setMode(TILEMAP_ISOMETRIC)
  135. setTileSet(tileset)
  136. move(-2048, -1024)
  137. # map size layer count
  138. resizeMap(Vector2(32, 32), layer_count=4)
  139. fill(Vector2(1, 0))
  140. drawRect(3, 3, 10, 5, Vector2(15, 1))
  141. # platform
  142. drawTile(2, 4, Vector2(0, 27), 1)
  143. drawTile(1, 5, Vector2(0, 28), 1)
  144. # cross
  145. drawTile(4, 6, Vector2(14, 13), 1)
  146. drawTile(3, 7, Vector2(14, 14), 1)
  147. # sign
  148. drawTile(4, 5, Vector2(11, 12), 1)
  149. drawTile(4, 5, Vector2(11, 13), 2)
  150. drawTile(4, 5, Vector2(11, 14), 3)
  151. # magic
  152. drawTile(5, 10, Vector2(2, 33), 1)
  153. drawTile(6, 11, Vector2(3, 33), 1)
  154. drawTile(4, 11, Vector2(2, 34), 1)
  155. drawTile(5, 12, Vector2(3, 34), 1)
  156. getSceneByName("main").addChild(map)
  157. test "Launch window":
  158. windowLaunch()