diff --git a/assets/items/doodad.tres b/assets/items/doodad.tres new file mode 100644 index 0000000..8b65333 --- /dev/null +++ b/assets/items/doodad.tres @@ -0,0 +1,27 @@ +[gd_resource type="Resource" load_steps=7 format=2] + +[ext_resource path="res://src/classes/item.gd" type="Script" id=1] +[ext_resource path="res://assets/levels/LegacyFantasy-High_Forest/Tiles/Tiles.png" type="Texture" id=2] +[ext_resource path="res://assets/items/mushroom_icon.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 256, 240, 32, 32 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 288, 240, 32, 32 ) + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 1.0 +} ] + +[resource] +script = ExtResource( 1 ) +name = "mushroom" +inventory_icon = ExtResource( 3 ) +in_game_sprite = SubResource( 3 ) diff --git a/assets/items/mushroom_icon.png b/assets/items/mushroom_icon.png new file mode 100644 index 0000000..dfd47df Binary files /dev/null and b/assets/items/mushroom_icon.png differ diff --git a/assets/items/mushroom_icon.png.import b/assets/items/mushroom_icon.png.import new file mode 100644 index 0000000..6a76e8e --- /dev/null +++ b/assets/items/mushroom_icon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_icon.png-692f5daaafe395b280b8df070c417867.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/items/mushroom_icon.png" +dest_files=[ "res://.import/mushroom_icon.png-692f5daaafe395b280b8df070c417867.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/project.godot b/project.godot index 2bfcaa4..2d21481 100644 --- a/project.godot +++ b/project.godot @@ -54,6 +54,21 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://lib/templates/Interactable/Interactable_Receiver.gd" }, { +"base": "Resource", +"class": "InventoryManager", +"language": "GDScript", +"path": "res://src/classes/inventory_manager.gd" +}, { +"base": "Resource", +"class": "Item", +"language": "GDScript", +"path": "res://src/classes/item.gd" +}, { +"base": "Interactable", +"class": "ItemPickup", +"language": "GDScript", +"path": "res://src/Interactables/ItemPickup.gd" +}, { "base": "Node2D", "class": "Level", "language": "GDScript", @@ -129,6 +144,9 @@ _global_script_class_icons={ "HealthPickup": "", "Interactable": "", "Interactable_Receiver": "", +"InventoryManager": "", +"Item": "", +"ItemPickup": "", "Level": "", "LevelTransition": "", "Modifier_Receiver": "", diff --git a/src/Interactables/ItemPickup.gd b/src/Interactables/ItemPickup.gd new file mode 100644 index 0000000..8047382 --- /dev/null +++ b/src/Interactables/ItemPickup.gd @@ -0,0 +1,17 @@ +class_name ItemPickup +extends Interactable + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/src/Interactables/ItemPickup.tscn b/src/Interactables/ItemPickup.tscn new file mode 100644 index 0000000..83c4b57 --- /dev/null +++ b/src/Interactables/ItemPickup.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://src/Interactables/ItemPickup.gd" type="Script" id=1] + +[node name="ItemPickup" type="Area2D"] +script = ExtResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_Interactable_Component_body_entered"] +[connection signal="body_exited" from="." to="." method="_on_Interactable_Component_body_exited"] diff --git a/src/classes/inventory_manager.gd b/src/classes/inventory_manager.gd new file mode 100644 index 0000000..6c263c7 --- /dev/null +++ b/src/classes/inventory_manager.gd @@ -0,0 +1,46 @@ +class_name InventoryManager +extends Resource + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" +var primary_selection: Item +var secondary_selection: Item + +# count of items in dictionary value +var _items :Dictionary + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func add_to_inventory(_item :Item) -> int: + if _items.has(_item): + _items[_item] += 1 + else: + _items[_item] = 1 + return _items[_item] + + +func remove_from_inventory (_item :Item) -> int: + if _items.has(_item): + _items[_item] -= 1 + if _items[_item] == 0: + _items.erase(_item) + return 0 + else: + return _items[_item] + else: + return 0 + + +func clear_item_from_inventory (_item :Item) -> void: + if _items.has(_item): + _items.erase(_item) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/src/classes/item.gd b/src/classes/item.gd new file mode 100644 index 0000000..7604f3e --- /dev/null +++ b/src/classes/item.gd @@ -0,0 +1,19 @@ +class_name Item +extends Resource + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" +export var name :String +export var inventory_icon :Texture +export var in_game_sprite :SpriteFrames + +# Called when the node enters the scene tree for the first time. +func _ready(): + assert ( name != '', "Name never given to Item" + self.resource_path ) + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass