online multiplayer chess game (note server currently down)
Diffstat (limited to 'saveload.gd')
-rw-r--r--saveload.gd30
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"]