diff --git a/resources/skills/brick_throw.tres b/resources/skills/brick_throw.tres index 6c593eb..492ddf6 100644 --- a/resources/skills/brick_throw.tres +++ b/resources/skills/brick_throw.tres @@ -18,3 +18,4 @@ config = { } cost = 50 icon = ExtResource("2_yimbq") +type = 1 diff --git a/resources/skills/explosive_brick.tres b/resources/skills/explosive_brick.tres index 703d088..f3f3e5d 100644 --- a/resources/skills/explosive_brick.tres +++ b/resources/skills/explosive_brick.tres @@ -19,3 +19,4 @@ config = { } cost = 180 icon = ExtResource("3_wkqmb") +type = 1 diff --git a/resources/skills/fire_brick.tres b/resources/skills/fire_brick.tres index 500893f..fb74ccb 100644 --- a/resources/skills/fire_brick.tres +++ b/resources/skills/fire_brick.tres @@ -19,3 +19,4 @@ config = { } cost = 150 icon = ExtResource("3_w87qb") +type = 1 diff --git a/resources/skills/ice_brick.tres b/resources/skills/ice_brick.tres index 1b4701e..65914ef 100644 --- a/resources/skills/ice_brick.tres +++ b/resources/skills/ice_brick.tres @@ -19,3 +19,4 @@ config = { } cost = 150 icon = ExtResource("3_6btth") +type = 1 diff --git a/resources/skills/magnetic.tres b/resources/skills/magnetic.tres index 031faf9..cb4aa35 100644 --- a/resources/skills/magnetic.tres +++ b/resources/skills/magnetic.tres @@ -16,3 +16,4 @@ config = { } cost = 70 icon = ExtResource("1_16qcg") +type = 2 diff --git a/scripts/game_manager.gd b/scripts/game_manager.gd index cd1f22a..1292bbe 100644 --- a/scripts/game_manager.gd +++ b/scripts/game_manager.gd @@ -163,7 +163,6 @@ func reset_current_session_state() -> void: } - func restart_game() -> void: reset_player_state() reset_current_session_state() @@ -212,3 +211,15 @@ func on_level_complete() -> void: reset_current_session_state() try_to_go_to_next_level() SaveSystem.save_game() + + + +func get_unlocked_skills() -> Array: + var skills_unlocked = player_state.get("unlocked_skills", []) + var skills_current_session = current_session_state.get("skills_unlocked", []) + if not skills_current_session: + return skills_unlocked + if not skills_unlocked: + return skills_current_session + + return skills_unlocked + skills_current_session diff --git a/scripts/resources/skill_data.gd b/scripts/resources/skill_data.gd index 8cadbec..d41275c 100644 --- a/scripts/resources/skill_data.gd +++ b/scripts/resources/skill_data.gd @@ -1,9 +1,15 @@ class_name SkillData extends Resource +enum SkillType { + ATTACK, + THROW, + MISC, +} @export var name: String = "" @export var description: String = "" @export var node: PackedScene @export var config: Dictionary = {} @export var cost: int = 0 -@export var icon: Texture2D \ No newline at end of file +@export var icon: Texture2D +@export var type: SkillType = SkillType.ATTACK \ No newline at end of file diff --git a/scripts/skill_manager.gd b/scripts/skill_manager.gd index ab99cc2..15b4970 100644 --- a/scripts/skill_manager.gd +++ b/scripts/skill_manager.gd @@ -16,6 +16,18 @@ func add_skill(skill_data: SkillData) -> void: if active_components.has(skill_data.name): return + if skill_data.type == SkillData.SkillType.THROW: + var unlocked_skills: Array = gm.get_unlocked_skills() + for skill in unlocked_skills: + var data = null + for s in available_skills: + if s.name == skill: + data = s + break + if data and data.type == SkillData.SkillType.THROW: + print("Removing previous throw skill: ", data.name) + remove_skill(data.name) + var skill_instance := skill_data.node.instantiate() for key in skill_data.config.keys(): if key in skill_instance: diff --git a/scripts/ui/marketplace.gd b/scripts/ui/marketplace.gd index b640343..c4c9a61 100644 --- a/scripts/ui/marketplace.gd +++ b/scripts/ui/marketplace.gd @@ -39,8 +39,6 @@ func _input(event: InputEvent) -> void: root.show() for component in components_to_disable: component.process_mode = PROCESS_MODE_DISABLED - if buttons: - buttons[0].grab_focus() func get_button_text(skill: SkillData) -> String: