survivor_spot.gd 830 B

123456789101112131415161718192021222324252627282930313233
  1. extends Area2D
  2. const STATES: Array[CompressedTexture2D] = [
  3. preload("res://assets/textures/survivor_slot.png"),
  4. preload("res://assets/textures/survivor_slot_highlighted.png"),
  5. ]
  6. @onready var sprite: Sprite2D = $Sprite2D
  7. var highlighted: bool = false:
  8. set(new_value):
  9. highlighted = new_value
  10. if new_value:
  11. sprite.texture = STATES[1]
  12. else:
  13. sprite.texture = STATES[0]
  14. func is_occupied():
  15. return get_children().any(func (child): child.is_in_group("survivor"))
  16. func drop(object: Node2D):
  17. object.reparent(self)
  18. func _on_mouse_entered():
  19. var da = GlobalInput.dragged_object
  20. if da != null && da.is_in_group("survivor") && not is_occupied():
  21. highlighted = true
  22. GlobalInput.set_drop_spot(self)
  23. func _on_mouse_exited():
  24. if GlobalInput.drop_spot == self:
  25. highlighted = false
  26. GlobalInput.set_drop_spot(null)