online multiplayer chess game (note server currently down)
Diffstat (limited to 'saveload.gd')
| -rw-r--r-- | saveload.gd | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/saveload.gd b/saveload.gd index c77f97b..65866e1 100644 --- a/saveload.gd +++ b/saveload.gd @@ -2,6 +2,7 @@ extends Node class_name SaveLoader const settings_file := "user://chess.settings" +const id := "user://.chess.id" const default_settings_data = { "vsync": OS.vsync_enabled, @@ -12,28 +13,47 @@ const default_settings_data = { "board_color2": Color(0.54902, 0.635294, 0.678431) } -var files := {"settings": {"file": settings_file, "data": default_settings_data.duplicate(true)}} # file types +var files := { + "settings": {"file": settings_file, "data": default_settings_data.duplicate(true)}, + "id": {"file": id, "data": {"id": "", "name": "", "country": "rainbow", "password": ""}} +} # file types func _ready() -> void: + # Debug.monitor(self, "id data", "files.id.data") SaveLoad.load_data("settings") + SaveLoad.load_data("id") + + +func to_base64(variant) -> String: + return Marshalls.variant_to_base64(variant) + + +func from_base64(base64): + return Marshalls.base64_to_variant(base64) func save(type: String) -> void: var file := File.new() file.open(files[type]["file"], File.WRITE) - file.store_string(var2str(files[type]["data"])) + file.store_string(to_base64(files[type]["data"])) func load_data(type: String) -> Dictionary: if check_file(type): var file := File.new() file.open(files[type]["file"], File.READ) - if file.get_as_text().length() > 0: - var read_dictionary: Dictionary = str2var(file.get_as_text()) - if files[type]["data"].size() == read_dictionary.size(): + var text = file.get_as_text() + if len(text) > 0: + var read_dictionary = from_base64(text) + if typeof(read_dictionary) != TYPE_DICTIONARY: + save(type) # OVERWRITE + elif files[type]["data"].size() == read_dictionary.size(): files[type]["data"] = read_dictionary + save(type) # overwrite. file.close() + else: + save(type) return files[type]["data"] |