71 lines
1.8 KiB
GDScript3
71 lines
1.8 KiB
GDScript3
|
tool
|
||
|
extends EditorPlugin
|
||
|
|
||
|
|
||
|
const DialogueResource = preload("res://addons/dialogue_manager/dialogue_resource.gd")
|
||
|
const DialogueExportPlugin = preload("res://addons/dialogue_manager/editor_export_plugin.gd")
|
||
|
|
||
|
const MainView = preload("res://addons/dialogue_manager/views/main_view.tscn")
|
||
|
|
||
|
|
||
|
var export_plugin = DialogueExportPlugin.new()
|
||
|
var main_view
|
||
|
|
||
|
|
||
|
func _enter_tree() -> void:
|
||
|
add_autoload_singleton("DialogueManager", "res://addons/dialogue_manager/dialogue_manager.gd")
|
||
|
add_custom_type("DialogueLabel", "RichTextLabel", preload("res://addons/dialogue_manager/dialogue_label.gd"), get_plugin_icon())
|
||
|
|
||
|
if Engine.editor_hint:
|
||
|
add_export_plugin(export_plugin)
|
||
|
|
||
|
main_view = MainView.instance()
|
||
|
get_editor_interface().get_editor_viewport().add_child(main_view)
|
||
|
main_view.plugin = self
|
||
|
make_visible(false)
|
||
|
|
||
|
|
||
|
func _exit_tree() -> void:
|
||
|
remove_custom_type("DialogueLabel")
|
||
|
remove_autoload_singleton("DialogueManager")
|
||
|
|
||
|
if is_instance_valid(main_view):
|
||
|
main_view.queue_free()
|
||
|
|
||
|
if export_plugin:
|
||
|
remove_export_plugin(export_plugin)
|
||
|
|
||
|
|
||
|
func has_main_screen() -> bool:
|
||
|
return true
|
||
|
|
||
|
|
||
|
func make_visible(next_visible: bool) -> void:
|
||
|
if is_instance_valid(main_view):
|
||
|
main_view.visible = next_visible
|
||
|
|
||
|
|
||
|
func get_plugin_name() -> String:
|
||
|
return "Dialogue"
|
||
|
|
||
|
|
||
|
func get_plugin_icon() -> Texture:
|
||
|
var scale = get_editor_interface().get_editor_scale()
|
||
|
var base_color = get_editor_interface().get_editor_settings().get_setting("interface/theme/base_color")
|
||
|
var theme = "light" if base_color.v > 0.5 else "dark"
|
||
|
return load("res://addons/dialogue_manager/assets/icons/icon_%s_%d.svg" % [theme, scale]) as Texture
|
||
|
|
||
|
|
||
|
func handles(object) -> bool:
|
||
|
return object is DialogueResource
|
||
|
|
||
|
|
||
|
func edit(object) -> void:
|
||
|
if is_instance_valid(main_view):
|
||
|
main_view.open_resource(object)
|
||
|
|
||
|
|
||
|
func apply_changes() -> void:
|
||
|
if is_instance_valid(main_view):
|
||
|
main_view.apply_changes()
|