TowerDefense/addons/LevelEditor/UI/CustomOptionButton.gd
Varylios 23e0c03fc0 feat: add autoloader for menu level buttons
fix: wave not restartable when winned
clean: remove useless files + warnings
2025-09-03 03:44:44 +02:00

51 lines
1.1 KiB
GDScript

@tool
extends OptionButton
class_name CustomOptionButton
signal onValueChanged(value : String)
var selectedValue : String
var options : Dictionary
func _ready() -> void:
allow_reselect = true
item_selected.connect(itemHasBeenSelected)
func setOptions(options : Dictionary, defaultSelectedValue : String = "") -> void:
self.options = options
clear()
options.keys().map(add_item)
selectItemByValue(defaultSelectedValue)
func addOption(value : String, displayName : String, autoSelect : bool = false) -> void:
add_item(displayName)
options.set(value, displayName)
if autoSelect:
selected = options.size() - 1
selectedValue = value
func itemHasBeenSelected(index : int) -> void:
var value = options.get(get_item_text(index))
if selectedValue != value:
selectedValue = value
onValueChanged.emit(selectedValue)
func selectItemByValue(value : String) -> void:
var name = options.find_key(value)
for i in item_count:
if get_item_text(i) == name:
selected = i
selectedValue = value
return
if options:
selected = 0
itemHasBeenSelected(0)