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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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(speed: float):
  16. update_timer()
  17. set_speed_offset(speed)
  18. func set_speed_offset(new_value: float):
  19. speed_offset = new_value
  20. for obj in items.get_children():
  21. obj.speed_offset = speed_offset
  22. func _on_Timer_timeout():
  23. random_scene.randomize()
  24. scene_index = random_scene.randi_range(1,100)
  25. if(scene_index >= random_threshold):
  26. scene_index = 1
  27. else:
  28. scene_index = 0
  29. var tmp = scenes[scene_index+scenes_offset*2].instance()
  30. tmp.speed_offset = speed_offset
  31. items.add_child(tmp)
  32. last_object = tmp
  33. update_timer()
  34. func update_timer():
  35. random_timer.randomize()
  36. var random
  37. if last_timer_random < -0.5:
  38. random = random_scene.randf_range(-0.4, 1.5)
  39. else:
  40. random = random_scene.randf_range(-0.8, 1.5)
  41. last_timer_random = random
  42. timer.wait_time = timer_speed + random
  43. func start(difficulty, version):
  44. match difficulty:
  45. "easy":
  46. timer_speed = 1
  47. random_threshold = 40
  48. "hard":
  49. timer_speed = 0.9
  50. random_threshold = 25
  51. _:
  52. pass
  53. scenes_offset = version
  54. timer.start()
  55. func stop():
  56. timer.stop()
  57. for obj in items.get_children():
  58. remove_child(obj)
  59. obj.queue_free()