From bf802571a2e87945ee0ed3c559c8eef5668be79d Mon Sep 17 00:00:00 2001 From: Jakob Feldmann Date: Tue, 10 Oct 2023 14:00:11 +0200 Subject: [PATCH] feat: Level reveals only after first play --- src/Autoload/GlobalState.gd | 12 +++++++++ src/Autoload/SaveManager.gd | 26 +++++++++---------- src/UserInterface/Buttons/PlayButton.gd | 2 +- .../Screens/MainMenu/LevelList.gd | 2 ++ src/Utilities/LevelState.gd | 1 + 5 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/Autoload/GlobalState.gd b/src/Autoload/GlobalState.gd index 3f657d2..9939c2b 100644 --- a/src/Autoload/GlobalState.gd +++ b/src/Autoload/GlobalState.gd @@ -112,6 +112,18 @@ func get_savepoint(levelName: String) -> Vector2: else: return Vector2() +func was_level_touched(levelName: String) -> bool: + if OS.is_debug_build(): + return true + if !gsr.progress_dict.has(levelName) || !gsr.progress_dict[levelName].has("touched"): + return false + return gsr.progress_dict[levelName]["touched"] + +func touch_level(levelName: String) -> void: + if !gsr.progress_dict.has(levelName): + gsr.progress_dict[levelName] = {} + gsr.progress_dict[levelName]["touched"] = true + # TODO This is permanent immediatly func set_wallet(value) -> void: diff --git a/src/Autoload/SaveManager.gd b/src/Autoload/SaveManager.gd index dcc13c8..33f5577 100644 --- a/src/Autoload/SaveManager.gd +++ b/src/Autoload/SaveManager.gd @@ -3,18 +3,18 @@ extends Node export var save_location: String = "res://savefile.tres" func _ready() -> void: - load_initial_save() - + load_initial_save() + func load_initial_save() -> void: - var initial_state = load(save_location) - if !initial_state: - initial_state = GlobalStateResource.new() - GlobalState.gsr = initial_state - GlobalState.reinstate() - + var initial_state = load(save_location) + if !initial_state: + initial_state = GlobalStateResource.new() + GlobalState.gsr = initial_state + GlobalState.reinstate() + func save_default() -> void: - var signal_manager = get_tree().root.get_child(4).get_node("%SignalManager") - for action in InputMap.get_actions(): - GlobalState.gsr.input_map[action] = InputMap.get_action_list(action) - ResourceSaver.save(save_location, GlobalState.gsr) - signal_manager.emit_signal("savemanager_saved") + var signal_manager = get_tree().root.get_child(4).get_node("%SignalManager") + for action in InputMap.get_actions(): + GlobalState.gsr.input_map[action] = InputMap.get_action_list(action) + ResourceSaver.save(save_location, GlobalState.gsr) + signal_manager.emit_signal("savemanager_saved") diff --git a/src/UserInterface/Buttons/PlayButton.gd b/src/UserInterface/Buttons/PlayButton.gd index bdc9a8d..2a920e2 100644 --- a/src/UserInterface/Buttons/PlayButton.gd +++ b/src/UserInterface/Buttons/PlayButton.gd @@ -1,6 +1,6 @@ extends AudibleButton -export(String, FILE) var next_scene_path: String = "" +export(String, FILE) var next_scene_path: String = "res://src/Levels/Level 0.1.tscn" onready var selected_level_base_path: String = "res://src/Levels/" func _on_button_up() -> void: diff --git a/src/UserInterface/Screens/MainMenu/LevelList.gd b/src/UserInterface/Screens/MainMenu/LevelList.gd index ad445d4..7996bef 100644 --- a/src/UserInterface/Screens/MainMenu/LevelList.gd +++ b/src/UserInterface/Screens/MainMenu/LevelList.gd @@ -38,6 +38,8 @@ func _fill_level_list(): func _spawn_level_options(levels: Array): var first = true for level in levels: + if !GlobalState.was_level_touched(LEVELS_PATH + level) && !first: + continue var level_check_box = LEVEL_CHECK_BOX.instance() vbox.add_child(level_check_box) level_check_box.initialize_with_progress(LEVELS_PATH + level) diff --git a/src/Utilities/LevelState.gd b/src/Utilities/LevelState.gd index 49cc42f..cf63c8c 100644 --- a/src/Utilities/LevelState.gd +++ b/src/Utilities/LevelState.gd @@ -13,6 +13,7 @@ var is_dead := false setget set_dead var level_time := 0.0 func _ready() -> void: + GlobalState.touch_level(levelName) GlobalState.gsr.last_played_level = levelName SaveManager.save_default() signal_manager.connect("level_completed", self, "_on_level_completed")