hero-mark-2/menus/sound_select.gd

45 lines
1.3 KiB
GDScript

tool
extends TextureButton
export (Array, String) var titles
export (Array, AudioStream) var sounds
export (Array, Dictionary) var categories setget set_categories
var current_selection = 0
onready var body = $SoundLabel/Label
onready var category = $SoundLabel/Category
func _ready():
if Engine.editor_hint and categories.empty():
categories = [SoundCategory.new()]
func _gui_input(event):
if Input.is_action_just_pressed("ui_left"):
current_selection -= 1
elif Input.is_action_just_pressed("ui_right"):
current_selection += 1
elif Input.is_action_just_pressed("ui_accept"):
Audio.play_sound(sounds[current_selection],Audio.ac_collectible)
elif Input.is_action_just_pressed("ui_cancel"):
Audio.ac_music.stop()
current_selection = posmod(current_selection,sounds.size())
body.text = titles[current_selection]
# for c in categories:
# if current_selection >= c.index:
# category.text = c.name
# category.add_color_override("font_color", c.color)
class SoundCategory extends Resource:
export var starting_index: int = 0
export var title: String = ""
export var color: Color = Color.white
func set_categories(value: Array) -> void:
categories = value
for i in categories.size():
if !categories[i]:
categories[i] = {
index = 0,
name = "",
color = Color.white,
}