diff --git a/src/Interactables/ItemPickup.gd b/src/Interactables/ItemPickup.gd index 2164b62..f98be58 100644 --- a/src/Interactables/ItemPickup.gd +++ b/src/Interactables/ItemPickup.gd @@ -6,6 +6,7 @@ extends Interactable # var a = 2 # var b = "text" export var item :Resource +export var count :int = 1 diff --git a/src/actors/players/playerE/PlayerE.gd b/src/actors/players/playerE/PlayerE.gd index 6c128d6..bc2d17a 100644 --- a/src/actors/players/playerE/PlayerE.gd +++ b/src/actors/players/playerE/PlayerE.gd @@ -65,8 +65,8 @@ func touch_the_thing(the_thing: Interactable) -> bool: movement_state_machine.change_to_known_state('enter_right') the_thing.trigger_interaction() if the_thing is ItemPickup: - player_inventory.add_to_inventory(the_thing.item) - player_inventory.select_secondary(the_thing.item) + player_inventory.add_to_inventory(the_thing.item, the_thing.count) + #player_inventory.select_secondary(the_thing.item) the_thing.trigger_interaction() return true diff --git a/src/classes/inventory_manager.gd b/src/classes/inventory_manager.gd index 0c3695c..3ea997b 100644 --- a/src/classes/inventory_manager.gd +++ b/src/classes/inventory_manager.gd @@ -87,14 +87,17 @@ func select_secondary(_item :Item) -> void: if _items.has(_item): secondary_selection = _item -func add_to_inventory(_item :Item) -> int: +func add_to_inventory(_item :Item, _count :int = 1) -> int: if _items.has(_item): - _items[_item] += 1 + _items[_item] += _count else: - _items[_item] = 1 + _items[_item] = _count + if primary_selection == null: + primary_selection = _item + elif secondary_selection == null: + secondary_selection = _item return _items[_item] - func remove_from_inventory (_item :Item) -> int: if _items.has(_item): if _item.consumable: @@ -115,6 +118,10 @@ func remove_from_inventory (_item :Item) -> int: else: return 0 +func get_item_inventory_count(_item :Item) -> int: + if _items.has(_item): + return _items[_item] + return 0 func clear_item_from_inventory (_item :Item) -> void: if _items.has(_item): diff --git a/src/levels/TestBox.tscn b/src/levels/TestBox.tscn index acab2a4..67dbed8 100644 --- a/src/levels/TestBox.tscn +++ b/src/levels/TestBox.tscn @@ -123,6 +123,7 @@ tile_data = PoolIntArray( -65536, 0, 0, -65521, 0, 0, 65535, 0, 0, 16, 0, 0, 524 position = Vector2( 203, 38 ) type_name = "item_pickup" item = ExtResource( 8 ) +count = 10 [node name="CollisionShape2D" type="CollisionShape2D" parent="ItemPickup" index="0"] shape = SubResource( 6 ) diff --git a/src/ui/HUD.tscn b/src/ui/HUD.tscn index a1b5dad..1040419 100644 --- a/src/ui/HUD.tscn +++ b/src/ui/HUD.tscn @@ -112,7 +112,21 @@ script = ExtResource( 8 ) [node name="PrimaryItem" type="TextureRect" parent="SelectedInventoryItems"] margin_bottom = 16.0 +[node name="Label" type="Label" parent="SelectedInventoryItems/PrimaryItem"] +margin_right = 20.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 2 ) +align = 2 +valign = 2 + [node name="SecondaryItem" type="TextureRect" parent="SelectedInventoryItems"] margin_left = 4.0 margin_right = 4.0 margin_bottom = 16.0 + +[node name="Label" type="Label" parent="SelectedInventoryItems/SecondaryItem"] +margin_right = 20.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 2 ) +align = 2 +valign = 2 diff --git a/src/ui/SelectedInventoryItems.gd b/src/ui/SelectedInventoryItems.gd index 2da103e..38dd364 100644 --- a/src/ui/SelectedInventoryItems.gd +++ b/src/ui/SelectedInventoryItems.gd @@ -7,6 +7,8 @@ extends HBoxContainer onready var primary_item = $PrimaryItem onready var secondary_item = $SecondaryItem +onready var _primary_item_count = $PrimaryItem/Label +onready var _secondary_item_count = $SecondaryItem/Label # Called when the node enters the scene tree for the first time. func _ready(): @@ -16,10 +18,22 @@ func _ready(): func _process(delta): if (PlayerInfo.player_inventory.primary_selection): primary_item.texture = PlayerInfo.player_inventory.primary_selection.inventory_icon + var count = PlayerInfo.player_inventory.get_item_inventory_count(PlayerInfo.player_inventory.primary_selection) + if count > 1: + _primary_item_count.text = str(count) + else: + _primary_item_count.text = '' else: primary_item.texture = null + _primary_item_count.text = '' if (PlayerInfo.player_inventory.secondary_selection): secondary_item.texture = PlayerInfo.player_inventory.secondary_selection.inventory_icon + var count = PlayerInfo.player_inventory.get_item_inventory_count(PlayerInfo.player_inventory.secondary_selection) + if count > 1: + _secondary_item_count.text = str(count) + else: + _secondary_item_count.text = '' else: secondary_item.texture = null + _secondary_item_count.text = ''