No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

spawner.gd 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. extends Node2D
  2. export (Array,PackedScene) var scenes
  3. var random_scene = RandomNumberGenerator.new()
  4. var random_timer = RandomNumberGenerator.new()
  5. var scene_index = 0;
  6. var last_object
  7. var end_of_game = false
  8. var timer_speed : float = 1
  9. var random_threshold = 50
  10. var scenes_offset = 0
  11. var speed_offset : float = 0 setget set_speed_offset
  12. onready var timer := $Timer
  13. onready var items := $items
  14. var last_timer_random : float = 1
  15. func init(difficulty: String, version: int):
  16. match difficulty:
  17. "easy":
  18. timer_speed = 1
  19. random_threshold = 40
  20. "hard":
  21. timer_speed = 0.9
  22. random_threshold = 25
  23. _:
  24. pass
  25. scenes_offset = version
  26. update_timer()
  27. set_speed_offset(0)
  28. func set_speed_offset(new_value: float):
  29. speed_offset = new_value
  30. for obj in items.get_children():
  31. obj.speed_offset = speed_offset
  32. func _on_Timer_timeout():
  33. random_scene.randomize()
  34. scene_index = random_scene.randi_range(1,100)
  35. if(scene_index >= random_threshold):
  36. scene_index = 1
  37. else:
  38. scene_index = 0
  39. var tmp = scenes[scene_index+scenes_offset*2].instance()
  40. tmp.speed_offset = speed_offset
  41. items.add_child(tmp)
  42. last_object = tmp
  43. update_timer()
  44. func update_timer():
  45. random_timer.randomize()
  46. var random
  47. if last_timer_random < -0.5:
  48. random = random_scene.randf_range(-0.4, 1.5)
  49. else:
  50. random = random_scene.randf_range(-0.8, 1.5)
  51. last_timer_random = random
  52. timer.wait_time = timer_speed + random
  53. func start():
  54. timer.start()
  55. func stop():
  56. timer.stop()
  57. for obj in items.get_children():
  58. obj.queue_free()