Uma coisa que achei curiosa, segui o tuto da GODOT https://github.com/okamstudio/godot/wiki/tutorial_encrypting_savegames coloquei uma senha lá e na hora de ler os campos voltavam sempre nulos.
Bom sempre achei a encriptação para esse tipo de coisa algo pouco relevante. salvo que se queira evitar trapaceiros, mas esses sempre existirão, se eles acham graças num jogo sem desafio n vou tentar entender.
No fim das contas usei a função sem encriptação mesmo e funcionou.
Ele cria a pasta .NomeDoJogo na sua pasta de usuário com o arquivo que vocẽ nomeia na função.
No demais é um simples fopen do C transplantado para o ambiente da GDScript, ainda sou mais fã de Lua, onde dá p vc mapear a memória e salvar o estado do programa.
- Código: Selecionar todos
func carregaConfig():
var file = File.new()
var err = file.open("user://easteregg1.bin",File.READ)
if err == OK:
print("lendo arquivo de configuracao")
if not file.eof_reached():
if file.get_line().to_int() <= playerDT.GAME_VERSION:
if not file.eof_reached():
if file.get_line() == "True":
playerDT.tocarMusica = true
else:
playerDT.tocarMusica = false
if not file.eof_reached():
if file.get_line() == "True":
playerDT.isDebug = true
else:
playerDT.isDebug = false
file.close()
get_node("configuracoes/tocar_musicas").set_pressed(playerDT.tocarMusica)
get_node("configuracoes/mostrar_fps").set_pressed(playerDT.isDebug)
func saveConfig():
var file = File.new()
var err = file.open("user://easteregg1.bin",File.WRITE)
if err == OK:
var saves = ["True","True"]
if not playerDT.tocarMusica:
saves[0] = "False"
if not playerDT.isDebug:
saves[1] = "False"
file.store_line( str(playerDT.GAME_VERSION) ) # salva versao do game para nao conflitar arquivos posteriormente
file.store_line( saves[0] )
file.store_line( saves[1] )
file.close()