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.

CharacterJoinBlock.gd 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. tool
  2. extends Control
  3. var editor_reference
  4. onready var portrait_picker = $PanelContainer/VBoxContainer/Header/PortraitPicker
  5. var current_color = Color('#ffffff')
  6. var default_icon_color = Color("#65989898")
  7. # This is the information of this event and it will get parsed and saved to the JSON file.
  8. var event_data = {
  9. 'action': 'join',
  10. 'character': '',
  11. 'portrait': '',
  12. 'position': {"0":false,"1":false,"2":false,"3":false,"4":false}
  13. }
  14. func _ready():
  15. for p in $PanelContainer/VBoxContainer/Header/PositionsContainer.get_children():
  16. p.connect('pressed', self, "position_button_pressed", [p.name])
  17. $PanelContainer/VBoxContainer/Header/CharacterPicker.connect('character_selected', self , '_on_character_selected')
  18. portrait_picker.get_popup().connect("index_pressed", self, '_on_portrait_selected')
  19. portrait_picker.allow_dont_change = false
  20. func _on_character_selected(data):
  21. # Updating icon Color
  22. current_color = Color(data['color'])
  23. var c_c_ind = 0
  24. for p in $PanelContainer/VBoxContainer/Header/PositionsContainer.get_children():
  25. if event_data['position'][str(c_c_ind)]:
  26. p.set('self_modulate', Color(data['color']))
  27. else:
  28. p.set('self_modulate', default_icon_color)
  29. c_c_ind += 1
  30. event_data['character'] = data['file']
  31. portrait_picker.set_character(event_data['character'], event_data['portrait'])
  32. portrait_picker.text = 'Default'
  33. func _on_portrait_selected(index):
  34. var text = portrait_picker.get_popup().get_item_text(index)
  35. if portrait_picker.allow_dont_change:
  36. if text == "[Don't change]":
  37. text = ''
  38. event_data['portrait'] = text
  39. portrait_picker.set_character(event_data['character'], event_data['portrait'])
  40. func position_button_pressed(name):
  41. clear_all_positions()
  42. var selected_index = name.split('-')[1]
  43. var button = $PanelContainer/VBoxContainer/Header/PositionsContainer.get_node('position-' + selected_index)
  44. button.set('self_modulate', Color("#ffffff"))
  45. button.set('self_modulate', current_color)
  46. button.pressed = true
  47. event_data['position'][selected_index] = true
  48. func clear_all_positions():
  49. for i in range(5):
  50. event_data['position'][str(i)] = false
  51. for p in $PanelContainer/VBoxContainer/Header/PositionsContainer.get_children():
  52. p.set('self_modulate', default_icon_color)
  53. p.pressed = false
  54. func check_active_position(active_color = Color("#ffffff")):
  55. var index = 0
  56. for p in $PanelContainer/VBoxContainer/Header/PositionsContainer.get_children():
  57. if event_data['position'][str(index)]:
  58. p.pressed = true
  59. p.set('self_modulate', active_color)
  60. index += 1
  61. func load_data(data):
  62. event_data = data
  63. if data['character'] != '':
  64. var character_data = DialogicUtil.load_json(DialogicUtil.get_path('CHAR_DIR', data['character']))
  65. $PanelContainer/VBoxContainer/Header/CharacterPicker.set_data(character_data['name'], Color(character_data['color']))
  66. portrait_picker.set_character(data['character'], data['portrait'])
  67. current_color = Color(character_data['color'])
  68. check_active_position(current_color)
  69. return
  70. check_active_position()