Vore_Sandbox_Remaster/scripts/save-load-tools.gd

81 lines
2.8 KiB
GDScript

tool
extends Node
export(bool) var save = false
export(String) var predNamee = "test"
export(String, FILE) var fileNamee = "res://preds/test.conf"
onready var field = get_node("..")
var filee = File.new()
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
field = get_parent()
if save:
save = false
savee(fileNamee,predNamee)
func savee(fname,namee):
field = get_parent()
var datat = {}
datat['name'] = namee
datat['type'] = "pred"
datat['char-position'] = field.get_node("pred").position
datat['char-sprite'] = field.get_node("pred/Sprite").texture.get_data().save_png_to_buffer()
datat['char-shape'] = field.get_node("pred/CollisionShape2D").shape
datat['char-collectorposition'] = field.get_node("pred/Collector/Collision").position
datat['char-collectorshape'] = field.get_node("pred/Collector/Collision").shape
datat['structure'] = field.get_node("structure").tile_data
datat['invwalls'] = field.get_node("invwalls").tile_data
var cams = {}
var statics = {}
for node in field.get_children():
if node is Camera2D:
cams[node.name] = {}
cams[node.name]["position"] = node.position
cams[node.name]["limit_top"] = node.limit_top
cams[node.name]["limit_bottom"] = node.limit_bottom
cams[node.name]["limit_left"] = node.limit_left
cams[node.name]["limit_right"] = node.limit_right
elif node is StaticBody2D:
statics[node.name] = {}
statics[node.name]["position"] = node.position
statics[node.name]["sprites"] = {}
statics[node.name]["collisions"] = {}
for i in node.get_children():
if i is Sprite:
statics[node.name]["sprites"][i.name] = {}
statics[node.name]["sprites"][i.name]["position"] = i.position
#statics[node.name]["sprites"][i.name]["res"] = i.texture.get_data().save_png_to_buffer()
statics[node.name]["sprites"][i.name]["z"] = i.z_index
elif i is CollisionPolygon2D:
statics[node.name]["collisions"][i.name] = {}
statics[node.name]["collisions"][i.name]["shape"] = i.polygon
#data.set_value("data","cameras",cams)
#data.set_value("data","statics",statics)
datat["cameras"] = cams
datat["statics"] = statics
filee.open(fname+"b",filee.WRITE)
#filee.store_string(var2str(datat))
filee.store_var(datat,false)
filee.close()
filee.open_compressed(fname+"testgz",filee.WRITE,filee.COMPRESSION_GZIP)
filee.store_var(datat,false)
filee.close()
filee.open_compressed(fname+"testlz",filee.WRITE,filee.COMPRESSION_FASTLZ)
filee.store_var(datat,false)
filee.close()
filee.open_compressed(fname+"testzs",filee.WRITE,filee.COMPRESSION_ZSTD)
filee.store_var(datat,false)
filee.close()
filee.open(fname+"test",filee.WRITE)
filee.store_var(datat,false)
filee.close()
filee.open(fname+"test",filee.READ)
var testsets = filee.get_var(false)
filee.close()
print(to_json(testsets))