Big refactor: Fix plugin issues when disabling/reenabling plugins (#598)

Co-authored-by: balloonpopper <5151242+balloonpopper@users.noreply.github.com>
Co-authored-by: Duncan Brown <duncan@prometheussoftware.ca>
This commit is contained in:
Julian Murgia
2022-07-10 20:40:08 +02:00
committed by GitHub
parent dfbceadd1c
commit ad79aa69d1
113 changed files with 2977 additions and 2072 deletions

View File

@@ -2,59 +2,95 @@
tool
extends EditorPlugin
var _escoria
const MANAGER_CLASS="res://addons/escoria-dialog-simple/esc_dialog_simple.gd"
func _init() -> void:
_escoria = preload("res://addons/escoria-core/game/escoria.tscn")\
.instance()
# Register ourselves after setup
func _ready() -> void:
call_deferred("_register")
# Override function to return the plugin name.
func get_plugin_name():
return "escoria-dialog-simple"
# Unregister ourselves
func _exit_tree() -> void:
_escoria.deregister_dialog_manager(MANAGER_CLASS)
func disable_plugin():
print("Disabling plugin Escoria Dialog Simple")
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE,
"",
{}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.AVATARS_PATH,
null,
{}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.TEXT_SPEED_PER_CHARACTER,
null,
{}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.FAST_TEXT_SPEED_PER_CHARACTER,
null,
{}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.MAX_TIME_TO_DISAPPEAR,
null,
{}
)
EscoriaPlugin.deregister_dialog_manager(MANAGER_CLASS)
# Add ourselves to the list of dialog managers
func _register():
_escoria.register_dialog_manager(MANAGER_CLASS)
_escoria.project_settings_manager.register_setting(
_escoria.project_settings_manager.AVATARS_PATH,
"",
{
"type": TYPE_STRING,
"hint": PROPERTY_HINT_DIR
}
)
func enable_plugin():
print("Enabling plugin Escoria Dialog Simple")
if EscoriaPlugin.register_dialog_manager(self, MANAGER_CLASS):
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE,
"floating",
{
"type": TYPE_STRING
}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.AVATARS_PATH,
"",
{
"type": TYPE_STRING,
"hint": PROPERTY_HINT_DIR
}
)
_escoria.project_settings_manager.register_setting(
_escoria.project_settings_manager.TEXT_SPEED_PER_CHARACTER,
0.1,
{
"type": TYPE_REAL
}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.TEXT_SPEED_PER_CHARACTER,
0.1,
{
"type": TYPE_REAL
}
)
_escoria.project_settings_manager.register_setting(
_escoria.project_settings_manager.FAST_TEXT_SPEED_PER_CHARACTER,
0.25,
{
"type": TYPE_REAL
}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.FAST_TEXT_SPEED_PER_CHARACTER,
0.25,
{
"type": TYPE_REAL
}
)
_escoria.project_settings_manager.register_setting(
_escoria.project_settings_manager.MAX_TIME_TO_DISAPPEAR,
1.0,
{
"type": TYPE_REAL
}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.MAX_TIME_TO_DISAPPEAR,
1.0,
{
"type": TYPE_REAL
}
)
else:
get_editor_interface().set_plugin_enabled(
get_plugin_name(),
false
)