extends Node var Rounds: int = 5 var pieces: Array[int] = [] var guessed: Array[int] = [] var to_play: Array[int] = [] var buttons: Array[Button] = [] const PhoneSounds = [ preload("res://assets/sounds/0.mp3"), preload("res://assets/sounds/1.mp3"), preload("res://assets/sounds/2.mp3"), preload("res://assets/sounds/3.mp3"), preload("res://assets/sounds/4.mp3"), preload("res://assets/sounds/5.mp3"), preload("res://assets/sounds/6.mp3"), preload("res://assets/sounds/7.mp3"), preload("res://assets/sounds/8.mp3"), preload("res://assets/sounds/9.mp3"), ] # Called when the node enters the scene tree for the first time. func _ready() -> void: var origin = Vector2(0, 0) var offset = 125 $Button0.position.x = origin.x + 1 * offset $Button0.position.y = origin.y + 3 * offset buttons.append($Button0) for i in range(0, 9): var col = i % 3 var row = i / 3 var b: Button = $Button0.duplicate() var label: Label = b.get_child(0) label.text = "%s" %(i+1) var rect: ColorRect = b.get_child(1) rect.color = Color.from_rgba8(255, 255, 255, 0) b.position.x = origin.x + col * offset b.position.y = origin.y + row * offset b.pressed.connect(_on_button_pressed.bind(i+1)) buttons.append(b) b.name = "Button%i" %(i) add_child(b) $Button0.pressed.connect(_on_button_pressed.bind(0)) for i in Rounds: var item = randi() % len(PhoneSounds) pieces.append(item) to_play.append(item) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: if guessed.size() >= pieces.size(): if guessed == pieces: print("Got it") else: print("Nope") if !$AudioStreamPlayer2D.playing and !to_play.is_empty(): actuate_button(to_play.pop_front()) for b in buttons: var rect: ColorRect = b.get_child(1) if rect.color.a8 != 0: rect.color = Color.from_rgba8(255, 255, 255, rect.color.a8 - 5) func _on_button_pressed(button: int) -> void: guessed.append(button) actuate_button(button) func actuate_button(button: int) -> void: var rect: ColorRect = buttons[button].get_child(1) rect.color = Color.from_rgba8(255, 255, 255, 255) $AudioStreamPlayer2D.stream = PhoneSounds[button] $AudioStreamPlayer2D.play()