item pickups
This commit is contained in:
parent
3b39ff2970
commit
262928664a
8 changed files with 53 additions and 7 deletions
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=16 format=3 uid="uid://dttyp3682enn7"]
|
||||
[gd_scene load_steps=17 format=3 uid="uid://dttyp3682enn7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://crbrniwi6kd3p" path="res://scenes/player.tscn" id="1_2q6dc"]
|
||||
[ext_resource type="Script" uid="uid://csjccrhj5wnx7" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_klq6b"]
|
||||
|
@ -10,6 +10,7 @@
|
|||
[ext_resource type="Resource" uid="uid://cqfnwpmo4fyv4" path="res://resources/items/key.tres" id="7_8c41q"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn7tgd4y67wnd" path="res://scenes/inventory.tscn" id="8_b121j"]
|
||||
[ext_resource type="PackedScene" uid="uid://c0cf6jkxasplk" path="res://scenes/enemy.tscn" id="10_olg7q"]
|
||||
[ext_resource type="PackedScene" uid="uid://iwn3rk6leull" path="res://scenes/pistol_pickup.tscn" id="11_t1rx8"]
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_rd3vj"]
|
||||
|
||||
|
@ -72,6 +73,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 10,
|
|||
[node name="Door" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5)
|
||||
collision_layer = 3
|
||||
collision_mask = 0
|
||||
script = ExtResource("2_w8frs")
|
||||
is_locked = true
|
||||
key = ExtResource("7_8c41q")
|
||||
|
@ -119,6 +121,9 @@ visible = false
|
|||
[node name="Enemy" parent="." instance=ExtResource("10_olg7q")]
|
||||
transform = Transform3D(1.75, 0, 0, 0, 1.75, 0, 0, 0, 1.75, 6, 0, 0)
|
||||
|
||||
[node name="PistolPickup" parent="." instance=ExtResource("11_t1rx8")]
|
||||
transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 2, -3)
|
||||
|
||||
[connection signal="opened" from="Door" to="Door" method="hide"]
|
||||
[connection signal="interacted" from="Door/Interactable" to="Door" method="_on_interact"]
|
||||
[connection signal="pressed" from="CanvasLayer/Control/HBoxContainer/SaveButton" to="CanvasLayer/Control/Persistence" method="save" binds= ["save1.sav"]]
|
||||
|
|
26
godot/scenes/pistol_pickup.tscn
Normal file
26
godot/scenes/pistol_pickup.tscn
Normal file
|
@ -0,0 +1,26 @@
|
|||
[gd_scene load_steps=6 format=3 uid="uid://iwn3rk6leull"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dyghf5fq7s72x" path="res://src/interactable.gd" id="1_2t8sx"]
|
||||
[ext_resource type="Script" uid="uid://cb3fj8dexn6i6" path="res://src/item_pickup.gd" id="1_naliw"]
|
||||
[ext_resource type="Resource" uid="uid://crgwey6ibaf2h" path="res://resources/items/pistol.tres" id="2_2t8sx"]
|
||||
[ext_resource type="PackedScene" uid="uid://5a023hrws3gx" path="res://assets/Glock 17 Gen 4/Main.glb" id="2_ewanq"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_ewanq"]
|
||||
|
||||
[node name="PistolPickup" type="StaticBody3D"]
|
||||
collision_layer = 2
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_naliw")
|
||||
item = ExtResource("2_2t8sx")
|
||||
|
||||
[node name="Main" parent="." instance=ExtResource("2_ewanq")]
|
||||
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0, 0)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("SphereShape3D_ewanq")
|
||||
|
||||
[node name="Interactable" type="Node3D" parent="."]
|
||||
script = ExtResource("1_2t8sx")
|
||||
metadata/_custom_type_script = "uid://dyghf5fq7s72x"
|
||||
|
||||
[connection signal="interacted" from="Interactable" to="." method="add_to_inventory"]
|
|
@ -23,7 +23,6 @@ func remove_equipment():
|
|||
func equip_item(item: EquippableItem):
|
||||
remove_equipment()
|
||||
if item != null:
|
||||
print(item.scene)
|
||||
primary_node = item.scene.instantiate()
|
||||
add_child(primary_node)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
class_name Interactable extends Node3D
|
||||
|
||||
signal interacted(interactor: Interactor)
|
||||
signal interacted(interactor: Node)
|
||||
|
||||
func interact(interactor: Node):
|
||||
interacted.emit(interactor)
|
||||
|
|
|
@ -62,7 +62,7 @@ func _sort_by_distance():
|
|||
_sorted = true
|
||||
|
||||
func interact(interactable: InteractableNode):
|
||||
interactable.interact(self)
|
||||
interactable.interact(root_node)
|
||||
|
||||
func interact_nearest():
|
||||
if not _sorted:
|
||||
|
|
|
@ -53,9 +53,14 @@ func find(item: Item) -> Option:
|
|||
|
||||
func add_item(item: Item, quantity: int = 1):
|
||||
var id = _get_id(item)
|
||||
var inst = items.get_or_add(id)
|
||||
inst.quantity += quantity
|
||||
item_added.emit(item, inst.quantity)
|
||||
var updated_quantity = quantity
|
||||
if items.has(id):
|
||||
items[id].quantity += quantity
|
||||
updated_quantity = items[id].quantity
|
||||
else:
|
||||
items[id] = ItemInstance.new(item, quantity)
|
||||
|
||||
item_added.emit(item, updated_quantity)
|
||||
updated.emit()
|
||||
|
||||
func remove_item(item: Item, quantity: int = 1):
|
||||
|
|
10
godot/src/item_pickup.gd
Normal file
10
godot/src/item_pickup.gd
Normal file
|
@ -0,0 +1,10 @@
|
|||
class_name ItemPickup extends Node
|
||||
|
||||
@export var item: Item
|
||||
@export var quantity: int = 1
|
||||
|
||||
func add_to_inventory(node: Node):
|
||||
match NodeExt.find_child_variant(node, ItemContainer):
|
||||
var opt when opt.is_some():
|
||||
opt.unwrap().add_item(item, quantity)
|
||||
queue_free()
|
1
godot/src/item_pickup.gd.uid
Normal file
1
godot/src/item_pickup.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cb3fj8dexn6i6
|
Loading…
Add table
Reference in a new issue