mirror of
				https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
				synced 2025-10-26 09:20:49 +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)
 | 
