48 lines
1.4 KiB
GDScript
48 lines
1.4 KiB
GDScript
extends Node2D
|
|
class_name Arena
|
|
|
|
@export var player: Player
|
|
|
|
@export var normal_color: Color
|
|
@export var bloacked_color: Color
|
|
@export var critical_color: Color
|
|
@export var hp_color: Color
|
|
|
|
@onready var wave_index_label: Label = %WaveIndexLabel
|
|
@onready var wave_time_label: Label = %WaveTimeLabel
|
|
@onready var spawner: Spawner = $Spawner
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
Global.player = player
|
|
Global.on_create_block_text.connect(_on_create_block_text)
|
|
Global.on_create_damage_text.connect(_on_create_damage_text)
|
|
|
|
func _process(delta: float) -> void:
|
|
if Global.game_paused:
|
|
return
|
|
wave_index_label.text = spawner.get_wave_text()
|
|
wave_time_label.text = spawner.get_wave_timer_text()
|
|
|
|
func crteat_floating_text(unit: Node2D) -> FloatingText:
|
|
var instace := Global.FLOATING_TEXT_SCENE.instantiate() as FloatingText
|
|
get_tree().root.add_child(instace)
|
|
var random_pos := randf_range(0, TAU) * 35
|
|
var spawn_pos := unit.global_position + Vector2.RIGHT.rotated(random_pos)
|
|
instace.global_position = spawn_pos
|
|
|
|
return instace
|
|
|
|
func _on_create_block_text(unit: Node2D) -> void:
|
|
var text := crteat_floating_text(unit)
|
|
text.setup("Blocked!", bloacked_color)
|
|
|
|
|
|
|
|
func _on_create_damage_text(unit: Node2D, hitbox: HitboxComponent) -> void:
|
|
var text := crteat_floating_text(unit)
|
|
var color := critical_color if hitbox.critical else normal_color
|
|
text.setup(str(hitbox.damage), color)
|
|
|
|
|