pir-serious-game-ethics/addons/dialogic/Editor/Events/Common/Characters/CharacterPicker.gd
2021-04-16 16:35:07 +02:00

45 lines
1.2 KiB
GDScript

tool
extends HBoxContainer
signal character_selected(data)
func _ready():
$Dropdown.get_popup().connect("index_pressed", self, '_on_character_selected')
func _on_Dropdown_about_to_show():
var popup = $Dropdown.get_popup()
popup.clear()
popup.add_item('[Character]')
popup.set_item_metadata(0, {})
var index = 1
for c in DialogicUtil.get_sorted_character_list():
popup.add_item(c['name'])
popup.set_item_metadata(index, c)
index += 1
func _on_character_selected(index: int):
var metadata = $Dropdown.get_popup().get_item_metadata(index)
if index == 0:
set_data('[Character]', Color('#FFFFFF'))
else:
set_data($Dropdown.get_popup().get_item_text(index), metadata['color'])
emit_signal('character_selected', metadata)
return metadata
func set_data_by_file(file_name: String):
# This method is used when you don't know the character's color
var character = DialogicResources.get_character_json(file_name)
set_data(character['name'], Color(character['color']))
func set_data(text: String, color: Color = Color('#FFFFFF')):
if not text.empty():
$Dropdown.text = text
else:
$Dropdown.text = '[Character]'
$Icon.set("self_modulate", Color(color))