Unit death

This commit is contained in:
gamer147
2026-04-02 09:01:10 -04:00
parent ce92c6e435
commit 528cb50e58
5 changed files with 67 additions and 9 deletions

View File

@@ -12,13 +12,31 @@ var _goal_pos: Vector2
var _moving := false
func _ready() -> void:
for unit: Unit in get_tree().get_nodes_in_group("units"):
unit.unit_died.connect(_on_unit_died)
get_tree().node_added.connect(_on_node_added)
func _on_node_added(node: Node) -> void:
if node is Unit and node.is_in_group("units"):
if not node.unit_died.is_connected(_on_unit_died):
node.unit_died.connect(_on_unit_died)
func _on_unit_died(unit: Unit) -> void:
if _selected_unit == unit:
_selected_unit = null
_moving = false
func _unhandled_input(event: InputEvent) -> void:
if event is InputEventMouseButton and not event.pressed and event.button_index == MOUSE_BUTTON_LEFT:
var world_pos: Vector2 = get_viewport().get_canvas_transform().affine_inverse() * event.position
var clicked_unit := _get_unit_at(world_pos)
if clicked_unit:
if _selected_unit and clicked_unit != _selected_unit:
if _selected_unit and clicked_unit != _selected_unit and _selected_unit.is_alive() and clicked_unit.is_alive():
combat_requested.emit(_selected_unit, clicked_unit)
else:
_select_unit(clicked_unit)
@@ -33,7 +51,7 @@ func _unhandled_input(event: InputEvent) -> void:
func _physics_process(delta: float) -> void:
if not _selected_unit:
if not _selected_unit or not _selected_unit.is_alive():
return
if _moving:
@@ -78,6 +96,8 @@ func _select_unit(unit: Unit) -> void:
func _get_unit_at(world_pos: Vector2) -> Unit:
var snapped := dl_map.snap_to_grid(world_pos)
for unit: Unit in get_tree().get_nodes_in_group("units"):
if not unit.is_alive():
continue
var unit_snapped := dl_map.snap_to_grid(unit.global_position)
if unit_snapped == snapped:
return unit