diff --git a/Characters/Player/Player.gd b/Characters/Player/Player.gd index d94ca77..3883cc0 100644 --- a/Characters/Player/Player.gd +++ b/Characters/Player/Player.gd @@ -195,7 +195,7 @@ func check_interact(): if Input.is_action_just_pressed("interact"): collider.do_interact(self) if collider.is_in_group("Collectibles"): - _inventory.add_item(collider.name) + _inventory.add_item(collider) _prev_look = null # remove after taken _labelInteract.hide() else: diff --git a/Characters/Player/UI/UI.gd b/Characters/Player/UI/UI.gd index de0bf77..eb34a5a 100644 --- a/Characters/Player/UI/UI.gd +++ b/Characters/Player/UI/UI.gd @@ -8,7 +8,10 @@ var _dayTime: ProgressBar var _dayTimeVisual: TextureRect onready var _keyTexture = load("res://Resources/Models/key/key.png") -onready var _cardTexture = load("res://Resources/Models/keycard/keycard.png") +var _cardTexture = { + 1: preload("res://Resources/Models/keycard/lvl1_keycard.png"), + 2: preload("res://Resources/Models/keycard/lvl2_keycard.png") +} # Called when the node enters the scene tree for the first time. func _ready(): @@ -24,18 +27,26 @@ func _ready(): _dayTime.max_value = Daytime.get_max() -func add_item (name): - Logger.info("Adding item \"" + name + "\" to inventory") - var text - if name == "Key": - text = _keyTexture - elif name == "Keycard": - text = _cardTexture +func add_item (object): + Logger.info("Adding item \"" + object.name + "\" with class \"" + String(object.get_class()) + "\" to inventory") + var texture + if object is Key: + Logger.info("key") + texture = _keyTexture + elif object is Keycard: + Logger.info("keycard") + var lvl = (object as Keycard).card_lvl + if _cardTexture.has(lvl) == false: + Logger.info("no keycard model for lvl: " + String(lvl)) + return + + texture = _cardTexture[lvl] else: + Logger.info("no texture found for: " + object.name) return var rect = TextureRect.new() - rect.texture = text + rect.texture = texture _container.add_child(rect) func _process(_delta): diff --git a/Characters/Player/UI/UI.tscn b/Characters/Player/UI/UI.tscn index 02ea1b1..1b8f2bf 100644 --- a/Characters/Player/UI/UI.tscn +++ b/Characters/Player/UI/UI.tscn @@ -52,9 +52,9 @@ anchor_left = 1.0 anchor_top = 0.5 anchor_right = 1.0 anchor_bottom = 0.5 -margin_left = -151.0 +margin_left = -146.0 margin_top = -258.5 -margin_right = -12.0 +margin_right = -7.0 margin_bottom = 258.5 [node name="PillLevel" type="Label" parent="."] diff --git a/Level/Interactables/Key/Key.gd b/Level/Interactables/Key/Key.gd index 8109923..fe82ee8 100644 --- a/Level/Interactables/Key/Key.gd +++ b/Level/Interactables/Key/Key.gd @@ -1,4 +1,5 @@ -extends StaticBody +extends StaticBody +class_name Key export(int) var key_id @@ -6,6 +7,11 @@ onready var outline = get_node("KeyMesh/Outline") as MeshInstance func do_interact(var player): - # TODO: move to global inventory player.key_chain.append(key_id) - queue_free() \ No newline at end of file + queue_free() + + +func is_class(type): return type == "Key" or .is_class(type) + + +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 a2c3b00..a973c06 100644 --- a/Level/Interactables/Keycard/Keycard.gd +++ b/Level/Interactables/Keycard/Keycard.gd @@ -1,4 +1,5 @@ extends StaticBody +class_name Keycard export(int) var card_lvl @@ -6,7 +7,12 @@ onready var outline = get_node("KeycardMesh/Outline") as MeshInstance func do_interact(var player): - # TODO: move to global inventory if card_lvl > player.keycard_lvl: player.keycard_lvl = card_lvl - queue_free() \ No newline at end of file + queue_free() + + +func is_class(type): return type == "Keycard" or .is_class(type) + + +func get_class(): return "Keycard" \ No newline at end of file diff --git a/project.godot b/project.godot index cf57a99..7533e1c 100644 --- a/project.godot +++ b/project.godot @@ -29,6 +29,16 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://Util/gs-logger-3.1-R3/gs_logger/layouts/html_layout.gd" }, { +"base": "StaticBody", +"class": "Key", +"language": "GDScript", +"path": "res://Level/Interactables/Key/Key.gd" +}, { +"base": "StaticBody", +"class": "Keycard", +"language": "GDScript", +"path": "res://Level/Interactables/Keycard/Keycard.gd" +}, { "base": "Reference", "class": "Layout", "language": "GDScript", @@ -54,6 +64,8 @@ _global_script_class_icons={ "ConsoleAppender": "", "FileAppender": "", "HtmlLayout": "", +"Key": "", +"Keycard": "", "Layout": "", "Message": "", "NPC": "",