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:
@@ -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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user