channel-switcher/games/bomb defusal/bomb_defusal.gd

65 lines
1.6 KiB
GDScript3
Raw Normal View History

2025-05-11 21:04:36 +10:00
extends Node
2025-05-16 22:13:34 +10:00
signal game_win
signal game_lose
2025-05-11 21:04:36 +10:00
@export var code_length : int = 8
@export_group("Node References")
@export var progress1 : ProgressBar
@export var progress2 : ProgressBar
@export var prompt : Label
var numbers_typed : int = 0
var current_number : int
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pick_new_number()
2025-05-11 21:04:36 +10:00
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
progress1.value = numbers_typed
progress2.value = numbers_typed
prompt.text = str(current_number)
#TODO Surely theres a better way
if Input.is_action_just_pressed("bomb_0"):
enter_number(0)
elif Input.is_action_just_pressed("bomb_1"):
enter_number(1)
elif Input.is_action_just_pressed("bomb_2"):
enter_number(2)
elif Input.is_action_just_pressed("bomb_3"):
enter_number(3)
elif Input.is_action_just_pressed("bomb_4"):
enter_number(4)
elif Input.is_action_just_pressed("bomb_5"):
enter_number(5)
elif Input.is_action_just_pressed("bomb_6"):
enter_number(6)
elif Input.is_action_just_pressed("bomb_7"):
enter_number(7)
elif Input.is_action_just_pressed("bomb_8"):
enter_number(8)
elif Input.is_action_just_pressed("bomb_9"):
enter_number(9)
func enter_number(number : int):
if(number == current_number):
numbers_typed += 1
pick_new_number()
else:
#womp womp (lose channel)
2025-05-16 22:13:34 +10:00
game_lose.emit()
2025-05-11 21:04:36 +10:00
pass
2025-05-16 22:13:34 +10:00
if(numbers_typed >= code_length):
game_win.emit()
2025-05-11 21:04:36 +10:00
func pick_new_number():
2025-05-12 17:10:37 +10:00
var new_number = current_number
while(new_number == current_number):
new_number = randi_range(0,9)
current_number = new_number