Actually, I made a mistake there. Try this instead.
extends Node2D
# I haven't mastered arrays and dictionaries yet. My code sort of does the same thing still after rearranging the variables.
const FILE_NAME = "user://save_file.file"
var file
var air: float
var bullets: int
var tanks: int
var lives: int
var health: float
var player: int
var level
var var_names := {
player = 1, # player must come first.
air = 1,
bullets = 10,
tanks = 1,
lives = 0,
health = 1,
level = 1,
}
func save_data():
file = File.new()
file.open(FILE_NAME, File.WRITE)
for n in var_names.keys():
file.store_var(get(n))
file.close()
func load_data():
file = File.new()
if file.file_exists(FILE_NAME):
file.open(FILE_NAME, File.READ)
for n in var_names.keys():
set(n, file.get_var())
file.close()
else:
for n in var_names.keys():
set(n, var_names[n])
save_data()
func start_game():
save_data()
# get_tree().change_scene("res://Maze" + str(level + 1) +".tscn")
print('change maze %d ' % [level + 1])
load_data()
func _ready():
load_data()
func reset():
# reset the variables, then load player over them.
for n in var_names.keys():
set(n, var_names[n])
file = File.new()
file.open(FILE_NAME, File.READ)
player = file.get_var() # The first variable will be player.
file.close()
save_data()
# get_tree().change_scene("res://Maze" + str(level) +".tscn")
print('change maze %d' % [level])
func print_data():
for n in var_names.keys():
print('%s: %s' % [n, str(get(n))])