summaryrefslogtreecommitdiff
path: root/src/save_data.gd
blob: cbb3ed8e84f89ce3a187abad25f3dfa8cb95d434 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
extends Node

const DATA_PATH: String = "user://data.save"

var _stats: Stats


func _ready() -> void:
	_load_data()


# called when setting "stats" and thus saving
func save_data(stats: Stats) -> void:
	_stats = stats
	var file: File = File.new()
	file.open(DATA_PATH, File.WRITE)
	file.store_line(to_json(_stats.get_stats()))
	file.close()


func get_stats() -> Stats:
	return _stats


func _load_data() -> void:
	# create an empty file if not present to avoid error while loading settings
	_handle_new_file()

	var file = File.new()
	file.open(DATA_PATH, File.READ)
	_stats = Stats.new()
	_stats.set_stats(parse_json(file.get_line()))
	file.close()


func _handle_new_file() -> void:
	var file: File = File.new()
	if not file.file_exists(DATA_PATH):
		file.open(DATA_PATH, File.WRITE)
		_stats = Stats.new()
		file.store_line(to_json(_stats.get_stats()))
		file.close()