player_spawn_zone.gd 957 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. extends Area2D
  2. @onready var shape: CollisionShape2D = $CollisionShape2D
  3. @onready var markers: Node2D = $Markers
  4. const DEMON_SCENE: PackedScene = preload("res://assets/scenes/demon.tscn")
  5. func _ready():
  6. add_survivor()
  7. add_survivor()
  8. func add_survivor() -> void:
  9. var spot = find_first_free_spot()
  10. if spot == null:
  11. return
  12. var demon = DEMON_SCENE.instantiate()
  13. spot.add_child(demon)
  14. func find_first_free_spot() -> Node2D:
  15. for marker in markers.get_children():
  16. if marker.get_child_count() == 0:
  17. return marker
  18. return null
  19. func is_occupied() -> bool:
  20. return find_first_free_spot() == null
  21. func drop(object: Node2D) -> void:
  22. object.reparent(find_first_free_spot())
  23. func _on_mouse_entered() -> void:
  24. var da = GlobalInput.dragged_object
  25. if da != null && da.is_in_group("survivor") && not is_occupied():
  26. GlobalInput.set_drop_spot(self)
  27. func _on_mouse_exited() -> void:
  28. if GlobalInput.drop_spot == self:
  29. GlobalInput.set_drop_spot(null)