Adding PhonePhreak Puzzle
- Import 10 new MP3 sound files for puzzle audio feedback - Implement PhonePhreak puzzle scene and game logic script
This commit is contained in:
1 parent
1eccb9bc67
commit
52cd38cc2d
30 files changed
+364
-7
No files matched your search
@@ -0,0 +1,76 @@
|
||||
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()
|
||||
Reference in new issue
Block a user