mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
51 lines
1.5 KiB
GDScript
51 lines
1.5 KiB
GDScript
extends VBoxContainer
|
|
|
|
@export var category_name := "Hi"
|
|
@export var options: Array[Control] = []
|
|
|
|
var selected_index := -1
|
|
|
|
@export var minimum_idx := -1
|
|
|
|
@export var active := true
|
|
|
|
@export var description_node: Control = null
|
|
@export var scroll_container: ScrollContainer = null
|
|
@export var scroll_step := 8
|
|
|
|
var can_input := true
|
|
|
|
func _process(_delta: float) -> void:
|
|
visible = active
|
|
if active and can_input:
|
|
handle_input()
|
|
var idx := 0
|
|
for i in options:
|
|
if i != null:
|
|
i.selected = selected_index == idx and active and can_input
|
|
idx += 1
|
|
if description_node != null and selected_index >= 0 and options[selected_index] != null:
|
|
description_node.text = options[selected_index].value_descs[options[selected_index].selected_index]
|
|
if not active:
|
|
selected_index = minimum_idx
|
|
|
|
func handle_input() -> void:
|
|
if Input.is_action_just_pressed("ui_down"):
|
|
selected_index += 1
|
|
if Settings.file.audio.extra_sfx == 1:
|
|
AudioManager.play_global_sfx("menu_move")
|
|
if Input.is_action_just_pressed("ui_up"):
|
|
selected_index -= 1
|
|
if Settings.file.audio.extra_sfx == 1:
|
|
AudioManager.play_global_sfx("menu_move")
|
|
if scroll_container != null:
|
|
scroll_container.scroll_vertical = float(lerpf(0.0, scroll_container.get_v_scroll_bar().max_value, inverse_lerp(0.0, options.size() - 1, selected_index - 2)))
|
|
selected_index = clamp(selected_index, minimum_idx, options.size() - 1)
|
|
|
|
func auto_get_options() -> void:
|
|
options.clear()
|
|
selected_index = 0
|
|
for i in get_children():
|
|
if i is HBoxContainer:
|
|
options.append(i)
|