29 lines
1.0 KiB
GDScript
29 lines
1.0 KiB
GDScript
class_name TrapDisplay extends PanelContainer
|
|
|
|
|
|
const trap_hud_icon = preload("res://templates/trap_icon.tscn")
|
|
@onready var trap_container : HBoxContainer = %TrapsContainer
|
|
@onready var cycle_sound : AudioStreamPlayer = %CycleSound
|
|
func clear_traps() -> void:
|
|
for child in trap_container.get_children():
|
|
child.queue_free()
|
|
|
|
func _on_trap_list_changed(traps, trap_index) -> void:
|
|
clear_traps()
|
|
for trap in traps:
|
|
var ticon = trap_hud_icon.instantiate()
|
|
trap_container.add_child(ticon)
|
|
ticon.setup(trap.type, trap.quantity)
|
|
%LeftArrow.visible = (trap_index != 0)
|
|
%RightArrow.visible = (trap_index != trap_container.get_children().size() - 1)
|
|
|
|
func _on_trap_quantity_changed(trap_index, qty) -> void:
|
|
var ticon = trap_container.get_child(trap_index) as TrapIcon
|
|
ticon.set_quantity(qty)
|
|
|
|
func _on_trap_cycled(trap_index) -> void:
|
|
trap_container.position.x = -trap_index * 150
|
|
%LeftArrow.visible = (trap_index != 0)
|
|
%RightArrow.visible = (trap_index != trap_container.get_children().size() - 1)
|
|
cycle_sound.play()
|