avatar_doll_editor.gd 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. extends Control
  2. @onready var mode_option_button: OptionButton = $VBoxContainer/ToolBar/ModeOptionButton
  3. @onready var open_button: Button = $VBoxContainer/ToolBar/OpenButton
  4. @onready var open_file_dialog: FileDialog = $VBoxContainer/ToolBar/OpenButton/OpenFileDialog
  5. @onready var save_button: Button = $VBoxContainer/ToolBar/SaveButton
  6. @onready var save_as_button: Button = $VBoxContainer/ToolBar/SaveAsButton
  7. @onready var save_file_dialog: FileDialog = $VBoxContainer/ToolBar/SaveAsButton/SaveFileDialog
  8. @onready var setting_mode: TabContainer = $VBoxContainer/VBoxContainer/Content/SettingMode
  9. @onready var asset_mode: Control = $VBoxContainer/VBoxContainer/Content/AssetMode
  10. @onready var design_mode: PanelContainer = $VBoxContainer/VBoxContainer/Content/DesignMode
  11. @onready var palette_mode: Control = $VBoxContainer/VBoxContainer/Content/PaletteMode
  12. @onready var dressing_mode: PanelContainer = $VBoxContainer/VBoxContainer/Content/DressingMode
  13. @onready var config_panel: PanelContainer = $VBoxContainer/VBoxContainer/Content/SettingMode/ConfigPanel
  14. var mode_panels = []
  15. var body_panels = []
  16. var cloth_panels = []
  17. func _ready() -> void:
  18. _init_gui()
  19. func _init_gui():
  20. mode_panels.append(setting_mode)
  21. mode_panels.append(asset_mode)
  22. mode_panels.append(design_mode)
  23. mode_panels.append(palette_mode)
  24. mode_panels.append(dressing_mode)
  25. mode_option_button.item_selected.connect(_on_option_selected)
  26. open_button.pressed.connect(_on_open_button_pressed)
  27. open_file_dialog.file_selected.connect(_on_open_file_dialog_file_selected)
  28. save_as_button.pressed.connect(_on_save_as_button_pressed)
  29. save_file_dialog.file_selected.connect(_on_save_file_dialog_file_selected)
  30. save_button.pressed.connect(_on_save_button_pressed)
  31. asset_mode.goto_asset_using.connect(_on_asset_panel_goto_using)
  32. _on_option_selected(mode_option_button.selected)
  33. func _on_option_selected(index):
  34. for i in range(mode_panels.size()):
  35. if i != index: mode_panels[i].visible = false
  36. else: mode_panels[i].visible = true
  37. func _on_open_button_pressed():
  38. open_file_dialog.popup()
  39. func _on_open_file_dialog_file_selected(path):
  40. if AvatarDollDataMgr.load_json(path):
  41. config_panel.load_data()
  42. asset_mode.load_data()
  43. design_mode.load_data()
  44. palette_mode.load_data()
  45. func _on_save_as_button_pressed():
  46. save_file_dialog.popup()
  47. func _on_save_file_dialog_file_selected(path):
  48. if path != "":
  49. AvatarDollDataMgr.save_json(path)
  50. func _on_save_button_pressed():
  51. AvatarDollDataMgr.save_json()
  52. func _on_asset_panel_goto_using(using_type: String, asset_id: int, avatar_type: String, avatar_part_index: int, state_code: String, element_index: int):
  53. if using_type == "icon":
  54. pass
  55. else:
  56. var index = mode_panels.find(design_mode)
  57. mode_option_button.selected = index
  58. _on_option_selected(index)
  59. design_mode.set_select(avatar_type, avatar_part_index, state_code, element_index)
  60. func switch_mode(target_panel):
  61. for i in range(mode_panels.size()):
  62. if mode_panels[i] != target_panel: mode_panels[i].visible = false
  63. else: mode_panels[i].visible = true