extends Node class_name Game enum ITEM_TYPE {VALUABLE, WEAPON, MODULE, AMMUNITION} enum AMMO_TYPE {NULL, LASER_ENERGY, ROCKETS} const DEFAULT_ITEM = preload("res://items/test_item.tres") const DEFAULT_WEAPON = preload("res://scenes/weapons/presets/SingleLaserMk1.tscn") static var gameversion = "Ictar 1.1" static func profile_create(profile_name): var path = "user://"+profile_name+".cosmic" if FileAccess.file_exists(path): profile_save(profile_name, "menu") return var profile_meta = { 'hash' : {}, 'meta' : { 'created_in_version' : gameversion, 'creation_date' : Time.get_datetime_string_from_system(), 'last_version' : gameversion, 'last_updated' : Time.get_datetime_string_from_system(), 'profile_name' : profile_name, 'legit' : true } } var profile_meta_keys = profile_meta['meta'].keys() for i in range(len(profile_meta_keys)): if profile_meta_keys[i][0] == "_": profile_meta_keys.remove_at(i) for i in range(len(profile_meta_keys)): profile_meta['hash'][i] = str(profile_meta['meta'][profile_meta_keys[i]]).sha256_buffer().hex_encode() var file = FileAccess.open(path, FileAccess.WRITE) var json_string = JSON.stringify(profile_meta, "\t") file.store_string(json_string) static func profile_save(profile_name, _gamestate): var path = "user://"+profile_name+".cosmic" if not FileAccess.file_exists(path): profile_create(profile_name) return var profile_meta = profile_load(profile_name) profile_meta['meta']['lastversion'] = gameversion profile_meta['meta']['lastupdated'] = Time.get_datetime_string_from_system() var profile_meta_keys = profile_meta['meta'].keys() for i in range(len(profile_meta_keys)): if profile_meta_keys[i][0] == "_": profile_meta_keys.remove_at(i) for i in range(len(profile_meta_keys)): profile_meta['hash'][i] = str(profile_meta['meta'][profile_meta_keys[i]]).sha256_buffer().hex_encode() var file = FileAccess.open(path, FileAccess.WRITE) var json_string = JSON.stringify(profile_meta, "\t") file.store_string(json_string) static func profile_load(profile_name): var path = "user://"+profile_name+".cosmic" if not FileAccess.file_exists(path): return var file = FileAccess.open(path, FileAccess.READ) var string = file.get_as_text() var profile_meta = JSON.parse_string(string) for meta in profile_meta: print(meta, ": ", profile_meta[meta]) print(profile_meta[meta].keys()) return profile_meta static func get_item(id : String): var path_name = id.to_lower().replace(" ", "_") var path = "res://items/{name}.tres".format({"name": path_name}) var res = load(path) if res != null: return res.duplicate() else: return DEFAULT_ITEM.duplicate() static func get_weapon(id : String): var path_name = id.replace(" ", "") var path = "res://weapons/presets/{name}.tscn".format({"name": path_name}) var res = load(path) if res != null: return res else: return DEFAULT_WEAPON