52 lines
1.7 KiB
GDScript
52 lines
1.7 KiB
GDScript
## HUD.gd
|
|
## In-game heads-up display: minerals, gas, wave counter, Security System HP.
|
|
extends CanvasLayer
|
|
|
|
@onready var minerals_label: Label = $MineralsLabel
|
|
@onready var gas_label: Label = $GasLabel
|
|
@onready var wave_label: Label = $WaveLabel
|
|
@onready var ss_bar: ProgressBar = $SSBar
|
|
@onready var phase_label: Label = $PhaseLabel
|
|
@onready var next_wave_btn: Button = $NextWaveButton
|
|
|
|
const PLAYER_ID = 0 # local player
|
|
|
|
func _ready() -> void:
|
|
EventBus.minerals_changed.connect(_on_minerals_changed)
|
|
EventBus.gas_changed.connect(_on_gas_changed)
|
|
EventBus.wave_started.connect(_on_wave_started)
|
|
EventBus.security_system_damaged.connect(_on_ss_damaged)
|
|
EventBus.phase_changed.connect(_on_phase_changed)
|
|
next_wave_btn.pressed.connect(_on_next_wave_pressed)
|
|
|
|
func _on_minerals_changed(player_id: int, amount: int) -> void:
|
|
if player_id == PLAYER_ID:
|
|
minerals_label.text = "Minerals: %d" % amount
|
|
|
|
func _on_gas_changed(player_id: int, amount: int) -> void:
|
|
if player_id == PLAYER_ID:
|
|
gas_label.text = "Gas: %d" % amount
|
|
|
|
func _on_wave_started(wave_number: int) -> void:
|
|
wave_label.text = "Wave %d / 31" % wave_number
|
|
next_wave_btn.disabled = true
|
|
|
|
func _on_ss_damaged(_damage: int, hp_remaining: int) -> void:
|
|
ss_bar.value = hp_remaining
|
|
|
|
func _on_phase_changed(new_phase: GameState.Phase) -> void:
|
|
match new_phase:
|
|
GameState.Phase.BUILD:
|
|
phase_label.text = "BUILD PHASE"
|
|
next_wave_btn.disabled = false
|
|
GameState.Phase.COMBAT:
|
|
phase_label.text = "COMBAT"
|
|
next_wave_btn.disabled = true
|
|
GameState.Phase.INCOME:
|
|
phase_label.text = "INCOME"
|
|
GameState.Phase.GAME_OVER:
|
|
phase_label.text = "GAME OVER"
|
|
next_wave_btn.disabled = true
|
|
|
|
func _on_next_wave_pressed() -> void:
|
|
EventBus.emit_signal("next_wave_requested")
|