No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CharacterPicker.gd 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. tool
  2. extends HBoxContainer
  3. signal character_selected(value)
  4. func _ready():
  5. $Dropdown.get_popup().connect("index_pressed", self, '_on_character_selected')
  6. func _on_Dropdown_about_to_show():
  7. var popup = $Dropdown.get_popup()
  8. popup.clear()
  9. popup.add_item('No Character')
  10. popup.set_item_metadata(0, {'file': '', 'color': Color('#ffffff')})
  11. var index = 1
  12. for c in DialogicUtil.get_sorted_character_list():
  13. popup.add_item(c['name'])
  14. popup.set_item_metadata(index, {'file': c['file'],'color': c['color']})
  15. index += 1
  16. func _on_character_selected(index: int):
  17. var data = {'file': '', 'color': Color('#FFFFFF')}
  18. if index == 0:
  19. set_data('[Character]', Color('#FFFFFF'))
  20. else:
  21. var metadata = $Dropdown.get_popup().get_item_metadata(index)
  22. set_data($Dropdown.get_popup().get_item_text(index), metadata['color'])
  23. data['file'] = metadata['file']
  24. data['color'] = metadata['color']
  25. emit_signal('character_selected', data)
  26. return data
  27. func set_data_by_file(file_name):
  28. # This method is used when you don't know the character's color
  29. var character = DialogicResources.get_character_json(file_name)
  30. set_data(character['name'], Color(character['color']))
  31. func set_data(text: String, color:Color = Color('#FFFFFF')) -> void:
  32. $Dropdown.text = text
  33. $Icon.set("self_modulate", Color(color))