diff --git a/autoloads/game.gd b/autoloads/game.gd index 9784b39..62e7a51 100644 --- a/autoloads/game.gd +++ b/autoloads/game.gd @@ -83,6 +83,12 @@ func change_map(map: PackedScene): Fade.fade_out(0.4) yield(Fade, "fade_finished") can_pause = true + # save deaths + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + save_data.deaths += deaths + Save.current_file.save_to_file() + # clear clear_collectibles() #Loop is so no more than one level is loaded at a time SceneManager.current_scene = map.instance() @@ -169,6 +175,7 @@ func has_collection_bonus(): # called when player dies func _on_player_died() -> void: + deaths += 1 if lives <= 0 and use_lives: Audio.play_sound(Audio.a_gover, Audio.ac_die) get_tree().get_nodes_in_group("player")[0].queue_free() @@ -181,7 +188,6 @@ func _on_player_died() -> void: else: # count death lives -= 1 - deaths += 1 # play death sound Audio.play_sound(Audio.a_die, Audio.ac_die) # death score penalty diff --git a/autoloads/save.gd b/autoloads/save.gd index 18e62bc..760c916 100644 --- a/autoloads/save.gd +++ b/autoloads/save.gd @@ -10,9 +10,12 @@ class LevelSaveData: var time_any: float = INF var time_100: float = INF + var deaths: int + var keys_collected: int = 0 var shards_collected: Array + func _init(id: String) -> void: save_id = id shards_collected = [] @@ -28,6 +31,8 @@ class LevelSaveData: # set times file.set_value(save_id, "time_any", time_any) file.set_value(save_id, "time_100", time_100) + # set deaths + file.set_value(save_id, "deaths", deaths) # set collected keys file.set_value(save_id, "keys", keys_collected) # set collected shards @@ -42,6 +47,8 @@ class LevelSaveData: # get times time_any = file.get_value(save_id, "time_any", INF) time_100 = file.get_value(save_id, "time_100", INF) + # get deaths + deaths = file.get_value(save_id, "deaths", 0) # get collected keys keys_collected = file.get_value(save_id, "keys", keys_collected) # get collected shards @@ -80,6 +87,13 @@ class SaveFile: total += level.keys_collected return total + # return total number of deaths + func get_total_deaths() -> int: + var total = 0 + for level in levels.values(): + total += level.deaths + return total + func load_from_file() -> void: var file = ConfigFile.new() file.load(file_path)