-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathSaveLoadManager.gd
88 lines (62 loc) · 2.24 KB
/
SaveLoadManager.gd
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
extends Node
var LoadedGame : String
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
func SaveGame(name):
var dir = DirAccess.open("user://")
if !dir.dir_exists("savedGames"):
dir.make_dir("savedGames")
dir = DirAccess.open("user://savedGames")
if !dir.dir_exists(name):
dir.make_dir(name)
var saveData = {
"gamemanager":{
"scene" : GameManager.LoadedLevel,
"spawnIndex" : GameManager.SpawnIndex
}
}
var saveJson = JSON.stringify(saveData)
var file = FileAccess.open("user://savedGames/" + name + "/" + name + ".json", FileAccess.WRITE)
file.store_string(saveJson)
var saveGameInfo = {
"name" : name,
"imgPath" : "user://savedGames/" + name + "/" + name + ".png",
"dateTime" : Time.get_unix_time_from_system()
}
var saveGameJson = JSON.stringify(saveGameInfo)
var saveGameFile = FileAccess.open("user://savedGames/" + name + "/" + name + "_saveGame.json", FileAccess.WRITE)
saveGameFile.store_string(saveGameJson)
GameManager.UIManager.HideUI()
await get_tree().physics_frame
await get_tree().physics_frame
await get_tree().physics_frame
await get_tree().physics_frame
await get_tree().physics_frame
var screenshot = get_viewport().get_texture().get_image()
screenshot.save_png("user://savedGames/" + name + "/" + name + ".png")
var objs = {}
for i in get_tree().get_nodes_in_group("Saveable"):
objs[i.name] = i.Save()
var sceneObjects = {
"objs" : objs
}
var sceneJson = JSON.stringify(objs)
var sceneFile = FileAccess.open("user://savedGames/" + name + "/" + name + "_scene.json", FileAccess.WRITE)
sceneFile.store_string(sceneJson)
LoadedGame = name
GameManager.UnpauseGame()
func LoadGame(name):
LoadedGame = name
var file = FileAccess.open("user://savedGames/" + name + "/" + name + ".json", FileAccess.READ)
var content = file.get_as_text()
var obj = JSON.parse_string(content)
return obj
func LoadSceneData():
var file = FileAccess.open("user://savedGames/" + LoadedGame + "/" + LoadedGame + "_scene.json", FileAccess.READ)
var content = file.get_as_text()
var obj = JSON.parse_string(content)
return obj