prototype vibe

This commit is contained in:
Marek Lenczewski
2026-04-16 17:20:57 +02:00
parent cf5979803e
commit f21e30eb55
72 changed files with 1330 additions and 70 deletions

47
systems/wave_system.gd Normal file
View File

@@ -0,0 +1,47 @@
extends Node
const WAVE_DURATION := 60.0
var tick_accumulator := 0.0
func _ready() -> void:
EventBus.portal_defeated.connect(_on_portal_defeated)
EventBus.invasion_ended.connect(_on_invasion_ended)
call_deferred("_start_run")
func _start_run() -> void:
if not GameState.run_initialized:
GameState.current_wave = 1
GameState.wave_timer_remaining = WAVE_DURATION
GameState.run_initialized = true
EventBus.run_started.emit(GameState.current_wave)
EventBus.wave_started.emit(GameState.current_wave)
func _process(delta: float) -> void:
if GameState.wave_timer_remaining <= 0:
return
GameState.wave_timer_remaining -= delta
tick_accumulator += delta
if tick_accumulator >= 1.0:
tick_accumulator -= 1.0
EventBus.wave_timer_tick.emit(max(0.0, GameState.wave_timer_remaining))
if GameState.wave_timer_remaining <= 0:
GameState.wave_timer_remaining = 0.0
EventBus.wave_timer_tick.emit(0.0)
func _on_portal_defeated(portal: Node) -> void:
if not portal.is_in_group("red_portal"):
return
_advance_wave()
func _on_invasion_ended(success: bool) -> void:
if not success:
return
_advance_wave()
func _advance_wave() -> void:
EventBus.wave_ended.emit(GameState.current_wave, true)
GameState.current_wave += 1
GameState.wave_timer_remaining = WAVE_DURATION
tick_accumulator = 0.0
EventBus.wave_started.emit(GameState.current_wave)