pheromone.gd 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. extends Node2D
  2. onready var PheromoneMap := .get_parent().get_parent().get_node("Pheromones")
  3. onready var intenfityBar = .get_node("HSplitContainer/intensity")
  4. onready var close2homeBar = .get_node("HSplitContainer/close2home")
  5. var created = 0
  6. var lifetime = 10
  7. var intensity = 1.0
  8. var decay = 0.8
  9. var closeToHome = 0
  10. var type = "search"
  11. var dir := Vector2()
  12. var tilePos := Vector2()
  13. # meta creator
  14. var _timer
  15. func _ready():
  16. created = OS.get_unix_time()
  17. position = PheromoneMap.map_to_world(tilePos)
  18. get_node("dir").add_point(Vector2())
  19. get_node("dir").add_point(dir*10)
  20. _timer = Timer.new()
  21. add_child(_timer)
  22. if .get_meta("type") == "food":
  23. lifetime = 60
  24. decay = 0.99
  25. _timer.connect("timeout", self, "_on_Timer_timeout")
  26. _timer.set_wait_time(1.0)
  27. _timer.set_one_shot(false) # Make sure it loops
  28. _timer.start()
  29. func _on_Timer_timeout():
  30. intensity = intensity * decay
  31. # Called every frame. 'delta' is the elapsed time since the previous frame.
  32. func _process(delta):
  33. intenfityBar.value=intensity * 100
  34. if intensity <= 0.1:
  35. .get_parent().removePheromone(self)
  36. queue_free()
  37. close2homeBar.value = closeToHome*100