First commit 🎉
This commit is contained in:
commit
43ea213f9b
728 changed files with 37080 additions and 0 deletions
192
addons/popochiu/popochiu_plugin.gd
Normal file
192
addons/popochiu/popochiu_plugin.gd
Normal file
|
@ -0,0 +1,192 @@
|
|||
@tool
|
||||
extends EditorPlugin
|
||||
## Plugin setup.
|
||||
##
|
||||
## Some icons that might be useful: godot\editor\editor_themes.cpp
|
||||
|
||||
const ES := "[es] Estás usando Popochiu, un plugin para crear juegos point n' click"
|
||||
const EN := "[en] You're using Popochiu, a plugin for making point n' click games"
|
||||
const SYMBOL := "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ \\( u )3(u )/ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒"
|
||||
const POPOCHIU_CANVAS_EDITOR_MENU = preload(
|
||||
"res://addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn"
|
||||
)
|
||||
|
||||
var dock: Panel
|
||||
|
||||
var _editor_file_system := EditorInterface.get_resource_filesystem()
|
||||
var _is_first_install := false
|
||||
var _input_actions := preload("res://addons/popochiu/engine/others/input_actions.gd")
|
||||
var _export_plugin: EditorExportPlugin = null
|
||||
var _inspector_plugins := []
|
||||
|
||||
|
||||
#region Godot ######################################################################################
|
||||
func _get_plugin_name():
|
||||
return "Popochiu 2.0"
|
||||
|
||||
|
||||
func _init():
|
||||
if Engine.is_editor_hint():
|
||||
_is_first_install = PopochiuResources.init_file_structure()
|
||||
|
||||
# Load Popochiu singletons
|
||||
add_autoload_singleton("Globals", PopochiuResources.GLOBALS_SNGL)
|
||||
add_autoload_singleton("Cursor", PopochiuResources.CURSOR_SNGL)
|
||||
add_autoload_singleton("E", PopochiuResources.POPOCHIU_SNGL)
|
||||
add_autoload_singleton("R", PopochiuResources.R_SNGL)
|
||||
add_autoload_singleton("C", PopochiuResources.C_SNGL)
|
||||
add_autoload_singleton("I", PopochiuResources.I_SNGL)
|
||||
add_autoload_singleton("D", PopochiuResources.D_SNGL)
|
||||
add_autoload_singleton("A", PopochiuResources.A_SNGL)
|
||||
add_autoload_singleton("G", PopochiuResources.IGRAPHIC_INTERFACE_SNGL)
|
||||
|
||||
|
||||
func _enter_tree() -> void:
|
||||
# Good morning, starshine. The Earth says hello.
|
||||
prints(ES)
|
||||
prints(EN)
|
||||
print_rich("[wave]%s[/wave]" % SYMBOL)
|
||||
|
||||
# ---- Assign values to the utility script for the Editor side of the plugin -------------------
|
||||
PopochiuEditorHelper.undo_redo = get_undo_redo()
|
||||
|
||||
# ---- Add custom categories to the Editor settings and Project settings -----------------------
|
||||
PopochiuEditorConfig.initialize_editor_settings()
|
||||
PopochiuConfig.initialize_project_settings()
|
||||
|
||||
# ---- Load Popochiu's Inspector plugins -------------------------------------------------------
|
||||
for path in [
|
||||
"res://addons/popochiu/editor/inspector/character_inspector_plugin.gd",
|
||||
"res://addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd",
|
||||
"res://addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd",
|
||||
"res://addons/popochiu/editor/inspector/prop_inspector_plugin.gd",
|
||||
]:
|
||||
var eip: EditorInspectorPlugin = load(path).new()
|
||||
_inspector_plugins.append(eip)
|
||||
add_inspector_plugin(eip)
|
||||
|
||||
_export_plugin = preload("popochiu_export_plugin.gd").new()
|
||||
add_export_plugin(_export_plugin)
|
||||
|
||||
# ---- Load the Popochiu dock and add it to the Editor -----------------------------------------
|
||||
dock = load(PopochiuResources.MAIN_DOCK_PATH).instantiate()
|
||||
dock.focus_mode = Control.FOCUS_ALL
|
||||
dock.ready.connect(_on_dock_ready)
|
||||
|
||||
add_control_to_dock(DOCK_SLOT_RIGHT_BL, dock)
|
||||
|
||||
# ---- Add Popochiu's menus for the Canvas Editor ----------------------------------------------
|
||||
add_control_to_container(
|
||||
EditorPlugin.CONTAINER_CANVAS_EDITOR_MENU,
|
||||
POPOCHIU_CANVAS_EDITOR_MENU.instantiate()
|
||||
)
|
||||
|
||||
|
||||
func _exit_tree() -> void:
|
||||
remove_control_from_docks(dock)
|
||||
|
||||
if is_instance_valid(dock):
|
||||
dock.queue_free()
|
||||
|
||||
if is_instance_valid(_export_plugin):
|
||||
remove_export_plugin(_export_plugin)
|
||||
|
||||
for eip in _inspector_plugins:
|
||||
if is_instance_valid(eip):
|
||||
remove_inspector_plugin(eip)
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Virtual ####################################################################################
|
||||
func _enable_plugin() -> void:
|
||||
_create_input_actions()
|
||||
EditorInterface.set_plugin_enabled("popochiu/editor/gizmos", true)
|
||||
|
||||
|
||||
func _disable_plugin() -> void:
|
||||
remove_autoload_singleton("Globals")
|
||||
remove_autoload_singleton("Cursor")
|
||||
remove_autoload_singleton("E")
|
||||
remove_autoload_singleton("R")
|
||||
remove_autoload_singleton("C")
|
||||
remove_autoload_singleton("I")
|
||||
remove_autoload_singleton("D")
|
||||
remove_autoload_singleton("G")
|
||||
remove_autoload_singleton("A")
|
||||
_remove_input_actions()
|
||||
EditorInterface.set_plugin_enabled("popochiu/editor/gizmos", false)
|
||||
remove_control_from_docks(dock)
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private ####################################################################################
|
||||
func _create_input_actions() -> void:
|
||||
# Register in the Project settings the Inputs for popochiu-interact,
|
||||
# popochiu-look and popochiu-skip. Thanks QuentinCaffeino ;)
|
||||
for d in _input_actions.ACTIONS:
|
||||
var setting_name = "input/" + d.name
|
||||
|
||||
if not ProjectSettings.has_setting(setting_name):
|
||||
var event: InputEvent
|
||||
|
||||
if d.has("button"):
|
||||
event = InputEventMouseButton.new()
|
||||
event.button_index = d.button
|
||||
elif d.has("key"):
|
||||
event = InputEventKey.new()
|
||||
event.keycode = d.key
|
||||
|
||||
ProjectSettings.set_setting(
|
||||
setting_name,
|
||||
{
|
||||
deadzone = float(d.deadzone if d.has("deadzone") else 0.5),
|
||||
events = [event]
|
||||
}
|
||||
)
|
||||
|
||||
var result = ProjectSettings.save()
|
||||
assert(result == OK)
|
||||
|
||||
|
||||
func _remove_input_actions() -> void:
|
||||
for d in _input_actions.ACTIONS:
|
||||
var setting_name = "input/" + d.name
|
||||
|
||||
if ProjectSettings.has_setting(setting_name):
|
||||
ProjectSettings.clear(setting_name)
|
||||
|
||||
var result = ProjectSettings.save()
|
||||
assert(result == OK)
|
||||
|
||||
|
||||
func _on_dock_ready() -> void:
|
||||
PopochiuEditorHelper.dock = dock
|
||||
|
||||
# Check if new migrations exist and run them if they do
|
||||
await MigrationsManager.do_migrations()
|
||||
|
||||
# Fill the dock with Rooms, Characters, Inventory items, Dialogs and AudioCues
|
||||
dock.grab_focus()
|
||||
|
||||
scene_changed.connect(dock.scene_changed)
|
||||
scene_closed.connect(dock.scene_closed)
|
||||
|
||||
if EditorInterface.get_edited_scene_root():
|
||||
dock.scene_changed(EditorInterface.get_edited_scene_root())
|
||||
else:
|
||||
dock.check_open_scenes()
|
||||
|
||||
PopochiuResources.update_autoloads(true)
|
||||
_editor_file_system.scan_sources()
|
||||
dock.fill_data()
|
||||
|
||||
if not PopochiuResources.is_setup_done() or not PopochiuResources.is_gui_set():
|
||||
PopochiuEditorHelper.show_setup(true)
|
||||
|
||||
if not EditorInterface.is_plugin_enabled("popochiu/editor/gizmos"):
|
||||
EditorInterface.set_plugin_enabled("popochiu/editor/gizmos", true)
|
||||
|
||||
|
||||
#endregion
|
Loading…
Add table
Add a link
Reference in a new issue