Files
gymkhana-actions/addons/escoria-dialog-simple/plugin.gd
2023-06-06 19:28:49 +02:00

150 lines
3.6 KiB
GDScript

# A simple dialog manager for Escoria
tool
extends EditorPlugin
const MANAGER_CLASS = "res://addons/escoria-dialog-simple/esc_dialog_simple.gd"
const READING_SPEED_IN_WPM_DEFAULT_VALUE = 200
const TEXT_TIME_PER_LETTER_MS_DEFAULT_VALUE = 100
const TEXT_TIME_PER_LETTER_MS_FAST_DEFAULT_VALUE = 25
var left_click_actions: PoolStringArray = [
SimpleDialogSettings.LEFT_CLICK_ACTION_SPEED_UP,
SimpleDialogSettings.LEFT_CLICK_ACTION_INSTANT_FINISH,
SimpleDialogSettings.LEFT_CLICK_ACTION_NOTHING
]
var stop_talking_animation_on_options: PoolStringArray = [
SimpleDialogSettings.STOP_TALKING_ANIMATION_ON_END_OF_TEXT,
SimpleDialogSettings.STOP_TALKING_ANIMATION_ON_END_OF_AUDIO
]
# Override function to return the plugin name.
func get_plugin_name():
return "escoria-dialog-simple"
# Unregister ourselves
func disable_plugin():
print("Disabling plugin Escoria Dialog Simple")
ESCProjectSettingsManager.remove_setting(
ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.AVATARS_PATH
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.TEXT_TIME_PER_LETTER_MS
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.TEXT_TIME_PER_LETTER_MS_FAST
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.CLEAR_TEXT_BY_CLICK_ONLY
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.READING_SPEED_IN_WPM
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.LEFT_CLICK_ACTION
)
ESCProjectSettingsManager.remove_setting(
SimpleDialogSettings.STOP_TALKING_ANIMATION_ON
)
EscoriaPlugin.deregister_dialog_manager(MANAGER_CLASS)
# Add ourselves to the list of dialog managers
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(
SimpleDialogSettings.AVATARS_PATH,
"res://game/dialog_avatars",
{
"type": TYPE_STRING,
"hint": PROPERTY_HINT_DIR
}
)
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.TEXT_TIME_PER_LETTER_MS,
TEXT_TIME_PER_LETTER_MS_DEFAULT_VALUE,
{
"type": TYPE_REAL
}
)
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.TEXT_TIME_PER_LETTER_MS_FAST,
TEXT_TIME_PER_LETTER_MS_FAST_DEFAULT_VALUE,
{
"type": TYPE_REAL
}
)
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.CLEAR_TEXT_BY_CLICK_ONLY,
false,
{
"type": TYPE_BOOL
}
)
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.READING_SPEED_IN_WPM,
READING_SPEED_IN_WPM_DEFAULT_VALUE,
{
"type": TYPE_INT
}
)
var left_click_actions_string: String = left_click_actions.join(",")
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.LEFT_CLICK_ACTION,
SimpleDialogSettings.LEFT_CLICK_ACTION_SPEED_UP,
{
"type": TYPE_STRING,
"hint": PROPERTY_HINT_ENUM,
"hint_string": left_click_actions_string
}
)
var stop_talking_animation_on_options_string: String = stop_talking_animation_on_options.join(",")
ESCProjectSettingsManager.register_setting(
SimpleDialogSettings.STOP_TALKING_ANIMATION_ON,
SimpleDialogSettings.STOP_TALKING_ANIMATION_ON_END_OF_AUDIO,
{
"type": TYPE_STRING,
"hint": PROPERTY_HINT_ENUM,
"hint_string": stop_talking_animation_on_options_string
}
)
else:
get_editor_interface().set_plugin_enabled(
get_plugin_name(),
false
)