First commit 🎉
This commit is contained in:
commit
43ea213f9b
728 changed files with 37080 additions and 0 deletions
117
addons/popochiu/editor/main_dock/popochiu_dock.gd
Normal file
117
addons/popochiu/editor/main_dock/popochiu_dock.gd
Normal file
|
@ -0,0 +1,117 @@
|
|||
@tool
|
||||
extends Panel
|
||||
|
||||
signal move_folders_pressed
|
||||
|
||||
@onready var tab_container: TabContainer = %TabContainer
|
||||
@onready var tab_main: VBoxContainer = %Main
|
||||
@onready var tab_room: VBoxContainer = %Room
|
||||
@onready var tab_audio: VBoxContainer = %Audio
|
||||
@onready var tab_gui: VBoxContainer = %GUI
|
||||
# ---- FOOTER --------------------------------------------------------------------------------------
|
||||
@onready var version: Label = %Version
|
||||
@onready var btn_setup: Button = %BtnSetup
|
||||
@onready var btn_docs: Button = %BtnDocs
|
||||
|
||||
|
||||
#region Godot ######################################################################################
|
||||
func _ready() -> void:
|
||||
version.text = "v" + PopochiuResources.get_version()
|
||||
btn_setup.icon = get_theme_icon("Edit", "EditorIcons")
|
||||
btn_docs.icon = get_theme_icon("HelpSearch", "EditorIcons")
|
||||
|
||||
# Set the Main tab selected by default
|
||||
tab_container.current_tab = 0
|
||||
|
||||
# Hide the GUI tab while we decide how it will work based on devs feedback
|
||||
tab_container.set_tab_hidden(tab_gui.get_index(), true)
|
||||
|
||||
# Connect to children's signals
|
||||
tab_container.tab_changed.connect(_on_tab_changed)
|
||||
btn_setup.pressed.connect(open_setup)
|
||||
btn_docs.pressed.connect(OS.shell_open.bind(PopochiuResources.DOCUMENTATION))
|
||||
|
||||
# Connect to parent signals
|
||||
get_tree().node_added.connect(_check_node)
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public #####################################################################################
|
||||
func fill_data() -> void:
|
||||
tab_main.fill_data()
|
||||
tab_audio.fill_data()
|
||||
|
||||
|
||||
func scene_changed(scene_root: Node) -> void:
|
||||
if not is_instance_valid(tab_room): return
|
||||
tab_room.scene_changed(scene_root)
|
||||
|
||||
# TODO: Uncomment these lines when working on the GUI tab again
|
||||
#if not is_instance_valid(tab_gui): return
|
||||
#tab_gui.on_scene_changed(scene_root)
|
||||
|
||||
if (
|
||||
not scene_root
|
||||
or (
|
||||
not scene_root is PopochiuRoom
|
||||
# TODO: Uncomment this line when working on the GUI tab again
|
||||
#and not scene_root.scene_file_path == PopochiuResources.GUI_GAME_SCENE
|
||||
)
|
||||
):
|
||||
# Open the Popochiu Main tab if the opened scene in the Editor2D is not a PopochiuRoom nor
|
||||
# the GUI scene
|
||||
tab_container.current_tab = 0
|
||||
|
||||
|
||||
func scene_closed(filepath: String) -> void:
|
||||
if not is_instance_valid(tab_room): return
|
||||
tab_room.scene_closed(filepath)
|
||||
check_open_scenes()
|
||||
|
||||
|
||||
func search_audio_files() -> void:
|
||||
if not is_instance_valid(tab_audio): return
|
||||
|
||||
tab_audio.search_audio_files()
|
||||
|
||||
|
||||
func open_setup() -> void:
|
||||
PopochiuEditorHelper.show_setup()
|
||||
|
||||
|
||||
## If there are no other opened scenes in the Editor, this function connects to
|
||||
## [signal EditorSelection.selection_changed] in order to make sure the Popochiu dock behaves as
|
||||
## expected when the [signal EditorPlugin.scene_changed] signal is not emitted.
|
||||
func check_open_scenes() -> void:
|
||||
# Fixes #273: Since Godot is not triggering the EditorPlugin.scene_changed signal when opening a
|
||||
# scene when no other scenes are opened, listen to the EditorSelection.selection_changed signal
|
||||
await get_tree().process_frame
|
||||
if EditorInterface.get_open_scenes().is_empty():
|
||||
EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed)
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private ####################################################################################
|
||||
func _on_tab_changed(tab: int) -> void:
|
||||
if tab == tab_main.get_index():
|
||||
tab_main.check_data()
|
||||
|
||||
if tab == tab_gui.get_index():
|
||||
tab_gui.open_gui_scene()
|
||||
|
||||
|
||||
func _check_node(node: Node) -> void:
|
||||
if node is PopochiuCharacter and node.get_parent() is Node2D:
|
||||
# The node is a PopochiuCharacter in a room
|
||||
node.set_name.call_deferred("Character%s *" % node.script_name)
|
||||
|
||||
|
||||
func _on_editor_selection_changed() -> void:
|
||||
if EditorInterface.get_edited_scene_root():
|
||||
EditorInterface.get_selection().selection_changed.disconnect(_on_editor_selection_changed)
|
||||
scene_changed(EditorInterface.get_edited_scene_root())
|
||||
|
||||
|
||||
#endregion
|
Loading…
Add table
Add a link
Reference in a new issue