extends Node ## SAVE DATA #PERSISTENT DATA var last_hit_path var player_deaths var enemies_killed #GAME DATA var data_cleared var player_loc var player_rot var player_health var player_money var held_guns var current_gun var current_ammo var reserve_ammo var enemies = [] ## SAVE DATA PATHS var persistent_save_path = "user://persistent_data.save" var game_save_path = "user://game_save_data.save" func _ready() -> void: if player_deaths == null: player_deaths = 0 if enemies_killed == null: enemies_killed = 0 func save_persistent_data(): var file = FileAccess.open(persistent_save_path, FileAccess.WRITE) print("LAST HIT PATH " + str(last_hit_path)) file.store_var(last_hit_path) file.store_var(player_deaths) print("SAVING PLAYER DEATHS " + str(player_deaths)) file.store_var(enemies_killed) print("SAVING ENEMIES KILLED " + str(enemies_killed)) file.close() func load_persistent_data(): if FileAccess.file_exists(persistent_save_path): var file = FileAccess.open(persistent_save_path, FileAccess.READ) last_hit_path = file.get_var() print("CROWN PARENT : " + str(last_hit_path)) player_deaths = file.get_var() print("PLAYER DEATHS : " + str(player_deaths)) enemies_killed = file.get_var() print("ENEMIES KILLED : " + str(enemies_killed)) file.close() else: print("no data saved...") last_hit_path = null player_deaths = null enemies_killed = null func save_game_data(): var level_control = get_tree().current_scene var player = level_control.player var file = FileAccess.open(game_save_path, FileAccess.WRITE) #ASSIGN DATA TO VARIABLES data_cleared = false player_loc = player.global_position player_rot = player.global_rotation player_health = level_control.health player_money = level_control.money held_guns = save_resource_path(level_control.held_guns) current_gun = level_control.current_gun_index current_ammo = level_control.ammo_current reserve_ammo = level_control.ammo_reserve #SAVE DATA file.store_var(data_cleared) file.store_var(player_loc) file.store_var(player_rot) file.store_var(player_health) file.store_var(player_money) file.store_var(held_guns) file.store_var(current_gun) file.store_var(current_ammo) file.store_var(reserve_ammo) file.store_var(enemies) file.close() func clear_save_game_data(): var file = FileAccess.open(game_save_path, FileAccess.WRITE) data_cleared = true file.store_var(data_cleared) file.store_var(player_loc) file.store_var(player_rot) file.store_var(player_health) file.store_var(player_money) file.store_var(held_guns) file.store_var(current_gun) file.store_var(current_ammo) file.store_var(reserve_ammo) file.store_var(enemies) func load_save_game_data(): var level_control = get_tree().current_scene var player = level_control.player if FileAccess.file_exists(game_save_path): var file = FileAccess.open(game_save_path, FileAccess.READ) #GET DATA data_cleared = file.get_var() if !data_cleared: player_loc = file.get_var() player_rot = file.get_var() player_health = file.get_var() player_money = file.get_var() var held_guns_encoded = file.get_var() held_guns = load_resource_path(held_guns_encoded) current_gun = file.get_var() current_ammo = file.get_var() reserve_ammo = file.get_var() enemies = file.get_var() #APPLY DATA player.global_position = player_loc player.global_rotation = player_rot level_control.health = player_health level_control.money = player_money level_control.held_guns = held_guns player.gun.queue_free() level_control.gun_spawn(current_gun) level_control.ammo_current = current_ammo level_control.ammo_reserve = reserve_ammo file.close() else: print("no data saved...") func data_validate(file,variable): if file.get_var(variable): return file.get_var(variable) else: return null func persistent_data_calc(variable,amount): if variable == null: variable = amount print(str(variable) +" "+ str(amount)) else: variable += amount func load_data(): load_persistent_data() load_save_game_data() func save_resource_path(array): var final_array = [] for i in array: if i is PackedScene: var resource_path = i.resource_path if resource_path != "": final_array.append(resource_path) return final_array func load_resource_path(array): var final_array = [] for i in array: var i_loaded = load(i) final_array.append(i_loaded) return final_array