Refactor save system and game manager; improve game restart functionality and state management
This commit is contained in:
@@ -22,7 +22,7 @@ func try_unlock_skill(skill_data: SkillData) -> bool:
|
||||
return false
|
||||
|
||||
game_manager.remove_coins(skill_data.cost)
|
||||
game_manager.current_session_state["unlocked_skills"].append(skill_data.name)
|
||||
game_manager.current_session_state["skills_unlocked"].append(skill_data.name)
|
||||
skill_manager.add_skill(skill_data)
|
||||
return true
|
||||
|
||||
@@ -35,4 +35,4 @@ func unlock_all_skills() -> void:
|
||||
skills.append(skill.name)
|
||||
|
||||
game_manager.unlock_skills(skills)
|
||||
skill_manager.apply_unlocked_skills()
|
||||
skill_manager.apply_unlocked_skills()
|
||||
|
@@ -8,13 +8,12 @@ extends Node
|
||||
"lives": 3,
|
||||
"unlocked_skills": [],
|
||||
"current_level": 0,
|
||||
"unlocked_levels": [],
|
||||
"unlocked_levels": [0],
|
||||
"completed_levels": [],
|
||||
}
|
||||
|
||||
var nodes_in_scene := []
|
||||
|
||||
|
||||
var current_session_state := {
|
||||
"coins_collected": 0,
|
||||
"skills_unlocked": [],
|
||||
@@ -135,6 +134,8 @@ func reset_player_state() -> void:
|
||||
"coins": 0,
|
||||
"lives": 3,
|
||||
"unlocked_skills": [],
|
||||
"current_level": 0,
|
||||
"unlocked_levels": [0],
|
||||
"completed_levels": [],
|
||||
}
|
||||
|
||||
@@ -150,7 +151,6 @@ func try_to_go_to_next_level() -> void:
|
||||
get_tree().change_scene_to_packed(level_scenes[next_level])
|
||||
|
||||
|
||||
|
||||
func mark_level_complete(level_index: int) -> void:
|
||||
unlock_level(level_index + 1)
|
||||
if level_index not in player_state["completed_levels"]: player_state["completed_levels"].append(level_index)
|
||||
@@ -163,6 +163,14 @@ func reset_current_session_state() -> void:
|
||||
}
|
||||
|
||||
|
||||
|
||||
func restart_game() -> void:
|
||||
reset_player_state()
|
||||
reset_current_session_state()
|
||||
get_tree().change_scene_to_packed(level_scenes[0])
|
||||
SaveSystem.save_game()
|
||||
|
||||
|
||||
func quit_game() -> void:
|
||||
get_tree().quit()
|
||||
|
||||
@@ -177,9 +185,9 @@ func resume_game() -> void:
|
||||
|
||||
func start_new_game() -> void:
|
||||
reset_player_state()
|
||||
player_state["current_level"] = 0
|
||||
player_state["unlocked_levels"] = [0] # Start with the first level unlocked
|
||||
reset_current_session_state()
|
||||
get_tree().change_scene_to_packed(level_scenes[0])
|
||||
SaveSystem.save_game()
|
||||
|
||||
|
||||
func continue_game() -> void:
|
||||
|
@@ -22,9 +22,7 @@ func on_restart_button_pressed() -> void:
|
||||
if not gm:
|
||||
return
|
||||
|
||||
gm.reset_player_state()
|
||||
gm.reset_current_session_state()
|
||||
get_tree().reload_current_scene()
|
||||
gm.restart_game()
|
||||
|
||||
|
||||
func on_main_menu_button_pressed() -> void:
|
||||
|
Reference in New Issue
Block a user