Implement custom data save in settings and savegames (#484)
This commit is contained in:
@@ -11,7 +11,7 @@ bus/2/name = "Music"
|
|||||||
bus/2/solo = false
|
bus/2/solo = false
|
||||||
bus/2/mute = false
|
bus/2/mute = false
|
||||||
bus/2/bypass_fx = false
|
bus/2/bypass_fx = false
|
||||||
bus/2/volume_db = 0.0
|
bus/2/volume_db = -60.0
|
||||||
bus/2/send = "Master"
|
bus/2/send = "Master"
|
||||||
bus/3/name = "Speech"
|
bus/3/name = "Speech"
|
||||||
bus/3/solo = false
|
bus/3/solo = false
|
||||||
|
|||||||
@@ -282,6 +282,20 @@ func hide_main_menu():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Custom function that is meant to apply custom settings. Called right after
|
||||||
|
# Escoria settings file was loaded.
|
||||||
|
func apply_custom_settings(custom_settings: Dictionary):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
# Custom function automatically called when save game is created.
|
||||||
|
#
|
||||||
|
# *Returns* A Dictionary containing the custom data to be saved within the
|
||||||
|
# game file.
|
||||||
|
func get_custom_data() -> Dictionary:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
# Shows the crash popup when a crash occurs
|
# Shows the crash popup when a crash occurs
|
||||||
#
|
#
|
||||||
# #### Parameters
|
# #### Parameters
|
||||||
|
|||||||
@@ -154,6 +154,8 @@ func _do_save_game(p_savename: String) -> ESCSaveGame:
|
|||||||
escoria.globals_manager.save_game(save_game)
|
escoria.globals_manager.save_game(save_game)
|
||||||
escoria.object_manager.save_game(save_game)
|
escoria.object_manager.save_game(save_game)
|
||||||
escoria.main.save_game(save_game)
|
escoria.main.save_game(save_game)
|
||||||
|
save_game.custom_data = escoria.game_scene.get_custom_data()
|
||||||
|
|
||||||
return save_game
|
return save_game
|
||||||
|
|
||||||
|
|
||||||
@@ -323,6 +325,7 @@ func save_settings():
|
|||||||
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.skip_dialog = escoria.settings.skip_dialog
|
||||||
|
settings_res.custom_settings = escoria.settings.custom_settings
|
||||||
|
|
||||||
var directory: Directory = Directory.new()
|
var directory: Directory = Directory.new()
|
||||||
if not directory.dir_exists(settings_folder):
|
if not directory.dir_exists(settings_folder):
|
||||||
|
|||||||
@@ -27,3 +27,6 @@ export var globals: Dictionary = {}
|
|||||||
|
|
||||||
# Escoria objects exported from ESCObjectsManager
|
# Escoria objects exported from ESCObjectsManager
|
||||||
export var objects: Dictionary = {}
|
export var objects: Dictionary = {}
|
||||||
|
|
||||||
|
# Custom data
|
||||||
|
export var custom_data: Dictionary = {}
|
||||||
|
|||||||
@@ -41,3 +41,6 @@ export var fullscreen: bool = false
|
|||||||
|
|
||||||
# True if skipping dialogs is allowed
|
# True if skipping dialogs is allowed
|
||||||
export var skip_dialog: bool = true
|
export var skip_dialog: bool = true
|
||||||
|
|
||||||
|
# Dictionary containing all user-defined settings.
|
||||||
|
export var custom_settings: Dictionary
|
||||||
|
|||||||
@@ -307,6 +307,8 @@ func apply_settings(p_settings: ESCSaveSettings) -> void:
|
|||||||
)
|
)
|
||||||
TranslationServer.set_locale(settings.text_lang)
|
TranslationServer.set_locale(settings.text_lang)
|
||||||
|
|
||||||
|
game_scene.apply_custom_settings(settings.custom_settings)
|
||||||
|
|
||||||
|
|
||||||
# Input function to manage specific input keys
|
# Input function to manage specific input keys
|
||||||
func _input(event):
|
func _input(event):
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ func _ready():
|
|||||||
set_escoria_ui_settings()
|
set_escoria_ui_settings()
|
||||||
set_escoria_sound_settings()
|
set_escoria_sound_settings()
|
||||||
set_escoria_platform_settings()
|
set_escoria_platform_settings()
|
||||||
|
ProjectSettings.save()
|
||||||
|
|
||||||
|
|
||||||
# Prepare the settings in the Escoria UI category
|
# Prepare the settings in the Escoria UI category
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ func _on_speech_volume_value_changed(value: float) -> void:
|
|||||||
|
|
||||||
# Save the settings
|
# Save the settings
|
||||||
func _on_apply_pressed():
|
func _on_apply_pressed():
|
||||||
|
escoria.settings.custom_settings["a_custom_setting"] = 100
|
||||||
escoria.save_manager.save_settings()
|
escoria.save_manager.save_settings()
|
||||||
settings_changed = false
|
settings_changed = false
|
||||||
emit_signal("back_button_pressed")
|
emit_signal("back_button_pressed")
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ Implement methods to react to inputs.
|
|||||||
- show_main_menu()
|
- show_main_menu()
|
||||||
- hide_main_menu()
|
- hide_main_menu()
|
||||||
|
|
||||||
|
- apply_custom_settings()
|
||||||
|
|
||||||
- _on_event_done(event_name: String)
|
- _on_event_done(event_name: String)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -340,3 +342,17 @@ func _on_MenuButton_pressed() -> void:
|
|||||||
func _on_action_finished() -> void:
|
func _on_action_finished() -> void:
|
||||||
verbs_menu.unselect_actions()
|
verbs_menu.unselect_actions()
|
||||||
tooltip.clear()
|
tooltip.clear()
|
||||||
|
|
||||||
|
|
||||||
|
func apply_custom_settings(custom_settings: Dictionary):
|
||||||
|
if custom_settings.has("a_custom_setting"):
|
||||||
|
escoria.logger.info(
|
||||||
|
"custom setting value loaded:",
|
||||||
|
[custom_settings["a_custom_setting"]]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func get_custom_data() -> Dictionary:
|
||||||
|
return {
|
||||||
|
"ui_type": "9verbs"
|
||||||
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ Implement methods to react to inputs.
|
|||||||
- show_main_menu()
|
- show_main_menu()
|
||||||
- hide_main_menu()
|
- hide_main_menu()
|
||||||
|
|
||||||
|
- apply_custom_settings()
|
||||||
|
|
||||||
- _on_event_done(event_name: String)
|
- _on_event_done(event_name: String)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@@ -211,6 +213,20 @@ func pause_game():
|
|||||||
escoria.main.current_scene.hide()
|
escoria.main.current_scene.hide()
|
||||||
|
|
||||||
|
|
||||||
|
func apply_custom_settings(custom_settings: Dictionary):
|
||||||
|
if custom_settings.has("a_custom_setting"):
|
||||||
|
escoria.logger.info(
|
||||||
|
"custom setting value loaded:",
|
||||||
|
[custom_settings["a_custom_setting"]]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func get_custom_data() -> Dictionary:
|
||||||
|
return {
|
||||||
|
"ui_type": "simplemouse"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Update the tooltip
|
# Update the tooltip
|
||||||
#
|
#
|
||||||
# #### Parameters
|
# #### Parameters
|
||||||
|
|||||||
@@ -144,11 +144,6 @@ _global_script_classes=[ {
|
|||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/escoria-core/game/core-scripts/esc/types/esc_condition.gd"
|
"path": "res://addons/escoria-core/game/core-scripts/esc/types/esc_condition.gd"
|
||||||
}, {
|
}, {
|
||||||
"base": "Reference",
|
|
||||||
"class": "ESCController",
|
|
||||||
"language": "GDScript",
|
|
||||||
"path": "res://addons/escoria-core/game/core-scripts/esc_controller.gd"
|
|
||||||
}, {
|
|
||||||
"base": "ESCStatement",
|
"base": "ESCStatement",
|
||||||
"class": "ESCDialog",
|
"class": "ESCDialog",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
@@ -587,7 +582,6 @@ _global_script_class_icons={
|
|||||||
"ESCCommandRegistry": "",
|
"ESCCommandRegistry": "",
|
||||||
"ESCCompiler": "",
|
"ESCCompiler": "",
|
||||||
"ESCCondition": "",
|
"ESCCondition": "",
|
||||||
"ESCController": "",
|
|
||||||
"ESCDialog": "",
|
"ESCDialog": "",
|
||||||
"ESCDialogManager": "",
|
"ESCDialogManager": "",
|
||||||
"ESCDialogOption": "",
|
"ESCDialogOption": "",
|
||||||
@@ -756,7 +750,7 @@ main/game_migration_path=""
|
|||||||
|
|
||||||
esc_show_debug_prompt={
|
esc_show_debug_prompt={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777245,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777245,"physical_scancode":0,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
switch_action_verb={
|
switch_action_verb={
|
||||||
|
|||||||
Reference in New Issue
Block a user