12345678910111213141516171819202122232425262728293031323334353637383940 |
- extends Area2D
- const STATES: Array[CompressedTexture2D] = [
- preload("res://assets/textures/survivor_slot.png"),
- preload("res://assets/textures/survivor_slot_highlighted.png"),
- ]
- @onready var sprite: Sprite2D = $Sprite2D
- var highlighted: bool = false:
- set(new_value):
- highlighted = new_value
- if new_value:
- sprite.texture = STATES[1]
- else:
- sprite.texture = STATES[0]
- func is_occupied():
- return get_children().any(func (child): return child.is_in_group("survivor"))
- func drop(object: Node2D):
- object.reparent(self)
- func _on_mouse_entered():
- var da = GlobalInput.dragged_object
- if da == null:
- return
-
- var object_is_survivor = da.is_in_group("survivor")
- var spot_is_free = not is_occupied()
- var spot_is_not_source = not is_ancestor_of(da)
-
- if object_is_survivor && spot_is_free && spot_is_not_source:
- highlighted = true
- GlobalInput.set_drop_spot(self)
- func _on_mouse_exited():
- if GlobalInput.drop_spot == self:
- highlighted = false
- GlobalInput.set_drop_spot(null)
|