map_reset.lua 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. local function test_not_async_reset() end
  2. local function test_async_reset() end
  3. local function place_nodes_at_arena_edges() end
  4. local function get_nodes_at_arena_edges() end
  5. function skywars.map_reset_test(arena)
  6. return test_not_async_reset(arena) and test_async_reset(arena)
  7. end
  8. function skywars.test_async_speed(arena)
  9. skywars.reorder_positions(arena.min_pos, arena.max_pos)
  10. skywars.load_mapblocks(arena)
  11. local area_size = 10
  12. local min_pos = arena.min_pos
  13. local max_pos = vector.add(min_pos, area_size)
  14. local set_node = minetest.set_node
  15. skywars.iterate_area_nodes(min_pos, max_pos, function(node, node_pos)
  16. set_node(node_pos, {name="skywars:test_node"})
  17. end)
  18. minetest.after(1, function() skywars.reset_map(arena, true) end)
  19. end
  20. function test_not_async_reset(arena)
  21. place_nodes_at_arena_edges(arena)
  22. skywars.reset_map(arena)
  23. local node1, node2 = get_nodes_at_arena_edges(arena)
  24. local did_nodes_reset = (node1.name ~= "skywars:test_node" and node2.name ~= "skywars:test_node")
  25. if not did_nodes_reset then
  26. minetest.log("[Skywars Test] Reset system doesn't work")
  27. return false
  28. end
  29. return true
  30. end
  31. function test_async_reset(arena)
  32. place_nodes_at_arena_edges(arena)
  33. skywars.reset_map(arena, true, {nodes_per_tick = 1})
  34. local node1, node2 = get_nodes_at_arena_edges(arena)
  35. local did_just_one_node_reset = (node1.name ~= node2.name)
  36. if not did_just_one_node_reset then
  37. minetest.log("[Skywars Test] Async reset system doesn't work")
  38. return false
  39. end
  40. return true
  41. end
  42. function place_nodes_at_arena_edges(arena)
  43. skywars.reorder_positions(arena.min_pos, arena.max_pos)
  44. skywars.load_mapblocks(arena)
  45. local node1, node2 = get_nodes_at_arena_edges(arena)
  46. if node1.name == "skywars:test_node" then minetest.remove_node(arena.min_pos) end
  47. if node2.name == "skywars:test_node" then minetest.remove_node(arena.max_pos) end
  48. skywars.overwrite_table("maps", {})
  49. minetest.set_node(arena.min_pos, {name="skywars:test_node"})
  50. minetest.set_node(arena.max_pos, {name="skywars:test_node"})
  51. end
  52. function get_nodes_at_arena_edges(arena)
  53. local node1 = minetest.get_node(arena.min_pos)
  54. local node2 = minetest.get_node(arena.max_pos)
  55. return node1, node2
  56. end