test6.nim 5.3 KB

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