40 lines
1.0 KiB
GDScript
40 lines
1.0 KiB
GDScript
class_name ChooseCassetteScreen extends Control
|
|
|
|
signal cassette_chosen(cassette: Cassette)
|
|
|
|
@export var choice_buttons: VBoxContainer
|
|
@export var cassette_desc: CassetteDescriptionUI
|
|
@export var cassette_name_label: Label
|
|
|
|
var choices: Array[Cassette] = []
|
|
var chosen_cassette: Cassette = null
|
|
var side_a: bool = true
|
|
|
|
|
|
func add_cassettes(cassettes: Array[Cassette]) -> void:
|
|
var x: int = 0
|
|
for cassette: Cassette in cassettes:
|
|
var button: Button = Button.new()
|
|
button.text = tr(cassette.display_name)
|
|
button.pressed.connect(choose_cassette.bind(x))
|
|
choices.append(cassette)
|
|
choice_buttons.add_child(button)
|
|
x += 1
|
|
choose_cassette(0)
|
|
|
|
|
|
func choose_cassette(choice: int) -> void:
|
|
chosen_cassette = choices[choice]
|
|
cassette_name_label.text = tr(chosen_cassette.display_name)
|
|
choose_side(side_a)
|
|
|
|
|
|
func choose_side(side_a_chosen: bool) -> void:
|
|
side_a = side_a_chosen
|
|
cassette_desc.set_cassette(chosen_cassette, side_a)
|
|
|
|
|
|
func _on_confirm_button_pressed() -> void:
|
|
cassette_chosen.emit(chosen_cassette)
|
|
queue_free()
|