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

54 lines
1.3 KiB
GDScript

tool
extends MenuButton
var character := {}
var portrait := ""
var allow_dont_change := true
signal portrait_selected(portrait)
func _ready():
visible = false
connect("about_to_show", self, '_on_about_to_show')
get_popup().connect("index_pressed", self, '_on_portrait_selected')
if not allow_dont_change:
_set_portrait('Default')
func set_character(c: Dictionary, p: String = '') -> void:
character = c
visible = character.has('portraits') and character['portraits'].size() > 1
_set_portrait('Default')
if allow_dont_change and (p == "[Don't change]" or p.empty()):
_set_portrait('')
elif visible:
for port in character['portraits']:
if port['name'] == p:
_set_portrait(p)
func _set_portrait(val: String):
if (val.empty() or val == "[Don't change]") and allow_dont_change:
text = "[Don't change]"
portrait = ""
else:
text = val
portrait = val
func _on_about_to_show():
get_popup().clear()
var index = 0
if allow_dont_change:
get_popup().add_item("[Don't change]")
index += 1
if character.has('portraits'):
for p in character['portraits']:
get_popup().add_item(p['name'])
index += 1
func _on_portrait_selected(index: int):
set_character(character, get_popup().get_item_text(index))
emit_signal("portrait_selected", portrait)