mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
65 lines
1.5 KiB
GDScript
65 lines
1.5 KiB
GDScript
extends Control
|
|
@onready var cursor: Label = %Cursor
|
|
|
|
var selected_boo := 0
|
|
|
|
var active := false
|
|
|
|
var lvl_idx := 0
|
|
|
|
signal boo_selected
|
|
signal cancelled
|
|
|
|
signal boo_changed
|
|
|
|
@onready var boos := [%Boo1, %Boo2, %Boo3, %Boo4, %Boo5]
|
|
|
|
func _process(_delta: float) -> void:
|
|
if active:
|
|
handle_input()
|
|
BooRaceHandler.boo_colour = selected_boo
|
|
for i in boos:
|
|
i.get_node("Cursor").visible = selected_boo == i.get_index()
|
|
|
|
func open() -> void:
|
|
grab_focus()
|
|
selected_boo = int(BooRaceHandler.cleared_boo_levels[lvl_idx])
|
|
update_visuals()
|
|
show()
|
|
await get_tree().process_frame
|
|
active = true
|
|
|
|
func update_visuals() -> void:
|
|
var idx := 0
|
|
for i in boos:
|
|
i.modulate = Color.WHITE if (int(BooRaceHandler.cleared_boo_levels[lvl_idx]) >= idx or Global.debug_mode) else Color.DIM_GRAY
|
|
idx += 1
|
|
|
|
func handle_input() -> void:
|
|
var old_colour = selected_boo
|
|
if Input.is_action_just_pressed("ui_left"):
|
|
selected_boo -= 1
|
|
if Input.is_action_just_pressed("ui_right"):
|
|
selected_boo += 1
|
|
selected_boo = clamp(selected_boo, 0, 4)
|
|
BooRaceHandler.boo_colour = selected_boo
|
|
if old_colour != selected_boo:
|
|
print(selected_boo)
|
|
boo_changed.emit()
|
|
if Input.is_action_just_pressed("ui_back"):
|
|
cancelled.emit()
|
|
close()
|
|
if Input.is_action_just_pressed("ui_accept"):
|
|
if int(BooRaceHandler.cleared_boo_levels[lvl_idx]) < selected_boo and not Global.debug_mode:
|
|
AudioManager.play_sfx("bump")
|
|
else:
|
|
select_world()
|
|
|
|
func select_world() -> void:
|
|
boo_selected.emit()
|
|
close()
|
|
|
|
func close() -> void:
|
|
active = false
|
|
hide()
|