mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 23:10:08 +01:00
* Remove unnecessary use of `self`
* Connect to signals directly over `connect("name")`
* Use `call_deferred` on callables over `call_deferred("name"))`
* Emit signals directly over `emit_signal("name"...)`
40 lines
856 B
GDScript
40 lines
856 B
GDScript
extends Node
|
|
|
|
|
|
signal combat_finished(winner, loser)
|
|
|
|
|
|
func initialize(combat_combatants):
|
|
for combatant in combat_combatants:
|
|
combatant = combatant.instantiate()
|
|
if combatant is Combatant:
|
|
$Combatants.add_combatant(combatant)
|
|
combatant.get_node("Health").dead.connect(_on_combatant_death.bind(combatant))
|
|
else:
|
|
combatant.queue_free()
|
|
$UI.initialize()
|
|
$TurnQueue.initialize()
|
|
|
|
|
|
func clear_combat():
|
|
for n in $Combatants.get_children():
|
|
n.queue_free()
|
|
for n in $UI/Combatants.get_children():
|
|
n.queue_free()
|
|
|
|
|
|
func finish_combat(winner, loser):
|
|
combat_finished.emit(winner, loser)
|
|
|
|
|
|
func _on_combatant_death(combatant):
|
|
var winner
|
|
if not combatant.name == "Player":
|
|
winner = $Combatants/Player
|
|
else:
|
|
for n in $Combatants.get_children():
|
|
if not n.name == "Player":
|
|
winner = n
|
|
break
|
|
finish_combat(winner, combatant)
|