diff --git a/Characters/Player/Player.gd b/Characters/Player/Player.gd index 86cb68b..1fa606e 100644 --- a/Characters/Player/Player.gd +++ b/Characters/Player/Player.gd @@ -85,6 +85,15 @@ func _ready(): _inventory = get_node("HUD") assert(null != _inventory) + for object in Inventory.get_items(): + if object is Key: + var key = object as Key + key_chain.append(key) + elif object is Keycard: + var keycard = object as Keycard + if keycard_lvl < keycard.card_lvl: + keycard_lvl = keycard.card_lvl + # Set special fast time when in labyrinth if IsInLabyrinth: Daytime.increase_per_second = 100 @@ -198,6 +207,7 @@ func check_interact(): if Input.is_action_just_pressed("interact"): collider.do_interact(self) if collider.is_in_group("Collectibles"): + Logger.info("should add collectible: " + collider.name) _inventory.add_item(collider) Inventory.add_item(collider.duplicate()) _prev_look = null # remove after taken @@ -289,10 +299,12 @@ func _on_respawn (): if _save_areas < 1 and not IsInLabyrinth: Logger.info("move back to home") + Inventory.clear() Pills._set_level(Pills.get_max()) IsInFactory = false IsOutside = true - # TODO: move not change_scene! - get_tree().change_scene("res://Level/OutsideWorld.tscn") + + # TODO: move not change_scene! + get_tree().change_scene("res://Level/OutsideWorld.tscn") _inventory.show() # enable hud again diff --git a/Global/Inventory.gd b/Global/Inventory.gd index 7efb47d..3c20716 100644 --- a/Global/Inventory.gd +++ b/Global/Inventory.gd @@ -17,5 +17,15 @@ func contains_item (item): return items.has(item) +func contains_item_with_name (name): + for item in items: + if item.name == name: + return true + + func get_items (): - return items \ No newline at end of file + return items + + +func clear (): + items.clear() \ No newline at end of file diff --git a/Level/Interactables/Key/Key.gd b/Level/Interactables/Key/Key.gd index fe82ee8..6f69d2b 100644 --- a/Level/Interactables/Key/Key.gd +++ b/Level/Interactables/Key/Key.gd @@ -6,6 +6,12 @@ export(int) var key_id onready var outline = get_node("KeyMesh/Outline") as MeshInstance +func _ready (): + if Inventory.contains_item_with_name(self.name): + Logger.info("key allready collected: TODO: delete") + queue_free() + + func do_interact(var player): player.key_chain.append(key_id) queue_free() @@ -14,4 +20,4 @@ func do_interact(var player): func is_class(type): return type == "Key" or .is_class(type) -func get_class(): return "Key" \ No newline at end of file +func get_class(): return "Key" \ No newline at end of file diff --git a/Level/Interactables/Keycard/Keycard.gd b/Level/Interactables/Keycard/Keycard.gd index a973c06..dc1720c 100644 --- a/Level/Interactables/Keycard/Keycard.gd +++ b/Level/Interactables/Keycard/Keycard.gd @@ -6,6 +6,12 @@ export(int) var card_lvl onready var outline = get_node("KeycardMesh/Outline") as MeshInstance +func _ready (): + if Inventory.contains_item_with_name(self.name): + Logger.info("keycard allready collected: TODO: delete") + queue_free() + + func do_interact(var player): if card_lvl > player.keycard_lvl: player.keycard_lvl = card_lvl @@ -15,4 +21,4 @@ func do_interact(var player): func is_class(type): return type == "Keycard" or .is_class(type) -func get_class(): return "Keycard" \ No newline at end of file +func get_class(): return "Keycard" \ No newline at end of file