fix: Removing dialog settings from core

This commit is contained in:
Balloonpopper
2022-11-23 11:30:32 +11:00
parent 62f48621a4
commit 028de087fd
8 changed files with 82 additions and 62 deletions

View File

@@ -78,13 +78,6 @@ func validate(arguments: Array):
) )
return false return false
if ESCProjectSettingsManager.get_setting(ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE) == "" \
and arguments[2] == "":
escoria.logger.error(
self,
"[%s]: Project setting '%s' is not set. Please set a default dialog type."
% [get_command_name(), ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE]
)
return true return true

View File

@@ -422,7 +422,6 @@ func save_settings():
settings_res.sfx_volume = escoria.settings.sfx_volume settings_res.sfx_volume = escoria.settings.sfx_volume
settings_res.speech_volume = escoria.settings.speech_volume settings_res.speech_volume = escoria.settings.speech_volume
settings_res.fullscreen = escoria.settings.fullscreen settings_res.fullscreen = escoria.settings.fullscreen
settings_res.skip_dialog = escoria.settings.skip_dialog
settings_res.custom_settings = escoria.settings.custom_settings settings_res.custom_settings = escoria.settings.custom_settings
var directory: Directory = Directory.new() var directory: Directory = Directory.new()

View File

@@ -41,8 +41,5 @@ export var speech_volume: float = ProjectSettings.get_setting(
# True if game has to be fullscreen # True if game has to be fullscreen
export var fullscreen: bool = false export var fullscreen: bool = false
# True if skipping dialogs is allowed
export var skip_dialogs: bool = true
# Dictionary containing all user-defined settings. # Dictionary containing all user-defined settings.
export var custom_settings: Dictionary export var custom_settings: Dictionary

View File

@@ -103,10 +103,6 @@ func save_settings_resource_to_project_settings(settings: ESCSaveSettings):
ESCProjectSettingsManager.FULLSCREEN, ESCProjectSettingsManager.FULLSCREEN,
settings.fullscreen settings.fullscreen
) )
ESCProjectSettingsManager.set_setting(
ESCProjectSettingsManager.SKIP_DIALOGS,
settings.skip_dialogs
)
custom_settings = settings.custom_settings custom_settings = settings.custom_settings
@@ -157,13 +153,12 @@ func get_settings() -> ESCSaveSettings:
settings.fullscreen = ESCProjectSettingsManager.get_setting( settings.fullscreen = ESCProjectSettingsManager.get_setting(
ESCProjectSettingsManager.FULLSCREEN ESCProjectSettingsManager.FULLSCREEN
) )
settings.skip_dialogs = ESCProjectSettingsManager.get_setting(
ESCProjectSettingsManager.SKIP_DIALOGS
)
settings.custom_settings = custom_settings settings.custom_settings = custom_settings
return settings return settings
# Save the game settings in the settings file. # Save the game settings in the settings file.
func save_settings(): func save_settings():
var settings = get_settings() var settings = get_settings()

View File

@@ -16,7 +16,7 @@ const GAME_SCENE = "%s/%s/game_scene" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT]
const INVENTORY_ITEM_SIZE = "%s/%s/inventory_item_size" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const INVENTORY_ITEM_SIZE = "%s/%s/inventory_item_size" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT]
const INVENTORY_ITEMS_PATH = "%s/%s/inventory_items_path" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const INVENTORY_ITEMS_PATH = "%s/%s/inventory_items_path" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT]
const TRANSITION_PATHS = "%s/%s/transition_paths" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT] const TRANSITION_PATHS = "%s/%s/transition_paths" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT]
const SKIP_DIALOGS = "%s/%s/skip_dialogs" % [_ESCORIA_SETTINGS_ROOT, _UI_ROOT]
# Main Escoria project settings # Main Escoria project settings
const _MAIN_ROOT = "main" const _MAIN_ROOT = "main"
@@ -61,15 +61,6 @@ const _PLATFORM_ROOT = "platform"
const SKIP_CACHE = "%s/%s/skip_cache" % [_ESCORIA_SETTINGS_ROOT, _PLATFORM_ROOT] const SKIP_CACHE = "%s/%s/skip_cache" % [_ESCORIA_SETTINGS_ROOT, _PLATFORM_ROOT]
const SKIP_CACHE_MOBILE = "%s/%s/skip_cache.mobile" % [_ESCORIA_SETTINGS_ROOT, _PLATFORM_ROOT] const SKIP_CACHE_MOBILE = "%s/%s/skip_cache.mobile" % [_ESCORIA_SETTINGS_ROOT, _PLATFORM_ROOT]
# Simple dialog-related Escoria project settings
const _SIMPLE_DIALOG_ROOT = "dialog_simple"
const AVATARS_PATH = "%s/%s/avatars_path" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT]
const TEXT_SPEED_PER_CHARACTER = "%s/%s/text_speed_per_character" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT]
const FAST_TEXT_SPEED_PER_CHARACTER = "%s/%s/fast_text_speed_per_character" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT]
const READING_SPEED_IN_WPM = "%s/%s/reading_speed_in_wpm" % [_ESCORIA_SETTINGS_ROOT, _SIMPLE_DIALOG_ROOT]
# Godot Windows project settings # Godot Windows project settings
const DISPLAY = "display" const DISPLAY = "display"
const WINDOW = "window" const WINDOW = "window"
@@ -82,15 +73,39 @@ const FULLSCREEN = "%s/%s/%s/fullscreen" % [DISPLAY, WINDOW, SIZE]
# #### Parameters # #### Parameters
# #
# - name: Name of the project setting # - name: Name of the project setting
# - default: Default value # - default_value: Default value
# - info: Property info for the setting # - info: Property info for the setting
static func register_setting(name: String, default, info: Dictionary) -> void: static func register_setting(name: String, default_value, info: Dictionary) -> void:
if default_value == null:
push_error("Default_value cannot be null. Use remove_setting function to remove settings.")
assert(false)
ProjectSettings.set_setting( ProjectSettings.set_setting(
name, name,
default default_value
) )
info.name = name if default_value != null:
ProjectSettings.add_property_info(info) info.name = name
# Project settings require a "type" to be set
if not "type" in info:
info.type=typeof(default_value)
ProjectSettings.add_property_info(info)
# Removes the specified project setting.
#
# #### Parameters
#
# - name: Name of the project setting
static func remove_setting(name: String) -> void:
if not ProjectSettings.has_setting(name):
push_error("Cannot remove project setting %s - it does not exist." % name)
assert(false)
ProjectSettings.set_setting(
name,
null
)
# Retrieves the specified project setting. # Retrieves the specified project setting.

View File

@@ -404,6 +404,9 @@ func set_escoria_platform_settings():
# - info: Property info for the setting # - info: Property info for the setting
static func register_setting(name: String, default, info: Dictionary) -> void: static func register_setting(name: String, default, info: Dictionary) -> void:
if not ProjectSettings.has_setting(name): if not ProjectSettings.has_setting(name):
# Only core settings should set this to true. Settings configured in
# plugins should not set this to true.
info["core_setting"] = "true"
ProjectSettings.set_setting( ProjectSettings.set_setting(
name, name,
default default

View File

@@ -3,7 +3,14 @@ tool
extends EditorPlugin extends EditorPlugin
const MANAGER_CLASS="res://addons/escoria-dialog-simple/esc_dialog_simple.gd" const MANAGER_CLASS="res://addons/escoria-dialog-simple/esc_dialog_simple.gd"
const SETTINGS_ROOT="escoria/dialog_simple"
const AVATARS_PATH = "%s/avatars_path" % SETTINGS_ROOT
const TEXT_SPEED_PER_CHARACTER = "%s/text_speed_per_character" % SETTINGS_ROOT
const FAST_TEXT_SPEED_PER_CHARACTER = "%s/fast_text_speed_per_character" % SETTINGS_ROOT
const MAX_TIME_TO_DISAPPEAR = "%s/max_time_to_disappear" % SETTINGS_ROOT
const SKIP_DIALOGS = "%s/skip_dialogs" % SETTINGS_ROOT
const READING_SPEED_IN_WPM = "%s/reading_speed_in_wpm" % SETTINGS_ROOT
# Override function to return the plugin name. # Override function to return the plugin name.
func get_plugin_name(): func get_plugin_name():
@@ -13,33 +20,28 @@ func get_plugin_name():
# Unregister ourselves # Unregister ourselves
func disable_plugin(): func disable_plugin():
print("Disabling plugin Escoria Dialog Simple") print("Disabling plugin Escoria Dialog Simple")
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.remove_setting(
ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE, ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE
"",
{}
)
ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.AVATARS_PATH,
null,
{}
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.remove_setting(
ESCProjectSettingsManager.TEXT_SPEED_PER_CHARACTER, AVATARS_PATH
null,
{}
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.remove_setting(
ESCProjectSettingsManager.FAST_TEXT_SPEED_PER_CHARACTER, TEXT_SPEED_PER_CHARACTER
null,
{}
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.remove_setting(
ESCProjectSettingsManager.READING_SPEED_IN_WPM, FAST_TEXT_SPEED_PER_CHARACTER
null, )
{}
ESCProjectSettingsManager.remove_setting(
READING_SPEED_IN_WPM
)
ESCProjectSettingsManager.remove_setting(
MAX_TIME_TO_DISAPPEAR
) )
EscoriaPlugin.deregister_dialog_manager(MANAGER_CLASS) EscoriaPlugin.deregister_dialog_manager(MANAGER_CLASS)
@@ -48,6 +50,7 @@ func disable_plugin():
# Add ourselves to the list of dialog managers # Add ourselves to the list of dialog managers
func enable_plugin(): func enable_plugin():
print("Enabling plugin Escoria Dialog Simple") print("Enabling plugin Escoria Dialog Simple")
if EscoriaPlugin.register_dialog_manager(self, MANAGER_CLASS): if EscoriaPlugin.register_dialog_manager(self, MANAGER_CLASS):
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE, ESCProjectSettingsManager.DEFAULT_DIALOG_TYPE,
@@ -58,8 +61,8 @@ func enable_plugin():
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.AVATARS_PATH, AVATARS_PATH,
"", "res://game/dialog_avatars",
{ {
"type": TYPE_STRING, "type": TYPE_STRING,
"hint": PROPERTY_HINT_DIR "hint": PROPERTY_HINT_DIR
@@ -67,7 +70,7 @@ func enable_plugin():
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.TEXT_SPEED_PER_CHARACTER, TEXT_SPEED_PER_CHARACTER,
0.1, 0.1,
{ {
"type": TYPE_REAL "type": TYPE_REAL
@@ -75,7 +78,7 @@ func enable_plugin():
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.FAST_TEXT_SPEED_PER_CHARACTER, FAST_TEXT_SPEED_PER_CHARACTER,
0.25, 0.25,
{ {
"type": TYPE_REAL "type": TYPE_REAL
@@ -83,12 +86,29 @@ func enable_plugin():
) )
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.register_setting(
ESCProjectSettingsManager.READING_SPEED_IN_WPM, READING_SPEED_IN_WPM,
200, 200,
{ {
"type": TYPE_INT "type": TYPE_INT
} }
) )
ESCProjectSettingsManager.register_setting(
MAX_TIME_TO_DISAPPEAR,
1.0,
{
"type": TYPE_INT
}
)
ESCProjectSettingsManager.register_setting(
SKIP_DIALOGS,
true,
{
"type": TYPE_BOOL
}
)
#escoria.settings_manager.custom_settings[SKIP_DIALOGS] = true
else: else:
get_editor_interface().set_plugin_enabled( get_editor_interface().set_plugin_enabled(
get_plugin_name(), get_plugin_name(),

View File

@@ -43,10 +43,8 @@ func open_scene(path: String) -> void:
# Unregister ourselves # Unregister ourselves
func disable_plugin(): func disable_plugin():
print("Disabling Escoria Wizard plugin") print("Disabling Escoria Wizard plugin")
ESCProjectSettingsManager.register_setting( ESCProjectSettingsManager.remove_setting(
"escoria/wizard/path_to_rooms", "escoria/wizard/path_to_rooms"
null,
{}
) )
# Register ourselves # Register ourselves