PheromoneMeta.gd 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. extends Node2D
  2. var Pheromone = preload("res://pheromone.tscn")
  3. var PheromoneScene = preload("res://pheromone.tscn")
  4. var pheromoneSet = preload("res://pheromones_tileset.tres")
  5. onready var PheromoneMap := .get_parent().get_node("Pheromones")
  6. onready var tilemap := .get_parent().get_node("TileMap")
  7. var pheromones = {}
  8. # Called when the node enters the scene tree for the first time.
  9. func _ready():
  10. pass # Replace with function body.
  11. func get_intensity(pos : Vector2):
  12. var intensity := 0
  13. if pheromones.has(pos):
  14. return pheromones[pos].intensity
  15. func addPheromone(pher):
  16. var pos = pher.tilePos
  17. # if food was marked on this tile, don't add "search" or any other marker
  18. if pheromones.has(pos) and pheromones[pos].type == "food":
  19. return
  20. if pheromones.has(pos):
  21. pheromones[pos].intensity += pher.intensity
  22. if pher.closeToHome > pheromones[pos].closeToHome:
  23. pheromones[pos].closeToHome = pher.closeToHome
  24. if pher.type == "food":
  25. pheromones[pos].type = "food"
  26. else:
  27. pheromones[pos] = pher
  28. add_child(pher)
  29. PheromoneMap.set_cellv(pos, pheromoneSet.find_tile_by_name(pher.type))
  30. func removePheromone(pher):
  31. var pos = pher.tilePos
  32. if pheromones.has(pos):
  33. pheromones.erase(pos)
  34. PheromoneMap.set_cellv(pos, -1)