Bull roll ability, console screen, tests

This commit is contained in:
2026-07-28 23:10:38 +03:00
parent a0b248748c
commit ebb6ec6335
16 changed files with 1494 additions and 283 deletions
+23 -8
View File
@@ -1,19 +1,26 @@
extends Node3D
signal matador_killed
signal wave_changed(wave: int)
const MATADOR := preload("res://Matador.tscn")
const RESPAWN_COOLDOWN := 8.0
var _respawn_cooldown: float = 0.0
var _wave_count: int = 1
var _spawn_count: int = 1 # matadors in the current wave — doubles on each clear
var _wave: int = 1 # wave number, surfaced on the HUD
var _alive: int = 0
func _ready() -> void:
add_to_group(&"matador_spawn")
_wave_count = maxi(1, int(DP.f("mat_spawn_count")))
_spawn.call_deferred()
_spawn_count = maxi(1, int(DP.f("mat_spawn_count")))
_start_wave(1)
# Latest wave number, for a HUD that connects after the first wave has begun.
func current_wave() -> int:
return _wave
func _process(delta: float) -> void:
@@ -27,8 +34,16 @@ func _unhandled_input(event: InputEvent) -> void:
reset_spawn()
# Announce a wave and spawn its matadors. Deferred spawn keeps it safe to call
# from _ready and from inside a kill handler mid-signal.
func _start_wave(number: int) -> void:
_wave = number
wave_changed.emit(_wave)
_spawn.call_deferred()
func _spawn() -> void:
var positions := _spread_positions(_wave_count)
var positions := _spread_positions(_spawn_count)
for pos: Vector3 in positions:
_spawn_at(pos)
@@ -57,14 +72,14 @@ func _on_matador_killed() -> void:
matador_killed.emit()
_alive -= 1
if _alive <= 0:
_wave_count *= 2
_spawn.call_deferred()
_spawn_count *= 2
_start_wave(_wave + 1)
func reset_spawn() -> void:
for m: Node in get_tree().get_nodes_in_group(&"matador"):
m.queue_free()
await get_tree().process_frame
_wave_count = maxi(1, int(DP.f("mat_spawn_count")))
_spawn_count = maxi(1, int(DP.f("mat_spawn_count")))
_alive = 0
_spawn()
_start_wave(1)