inventaire de 3 items #52
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=7 format=3 uid="uid://bcj812ox8xv2t"]
|
||||
[gd_scene load_steps=8 format=3 uid="uid://bcj812ox8xv2t"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://reliyx2pg7kf" path="res://entities/interactables/item_object/script/item_object_sprite.gd" id="1_wing4"]
|
||||
[ext_resource type="Texture2D" uid="uid://bo3o2qf3i20ke" path="res://common/icons/scuba-diving-tank.svg" id="2_ng3e4"]
|
||||
@@ -30,6 +30,18 @@ tracks/1/keys = {
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath(".:scale")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ng201"]
|
||||
resource_name = "default"
|
||||
@@ -60,10 +72,27 @@ tracks/1/keys = {
|
||||
"values": [Vector2(0, 0), Vector2(0, -8), Vector2(0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ng3e4"]
|
||||
resource_name = "pickup"
|
||||
length = 0.3
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:scale")
|
||||
tracks/0/interp = 2
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(1, 1), Vector2(0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ng3e4"]
|
||||
_data = {
|
||||
&"RESET": SubResource("Animation_wing4"),
|
||||
&"default": SubResource("Animation_ng201")
|
||||
&"default": SubResource("Animation_ng201"),
|
||||
&"pickup": SubResource("Animation_ng3e4")
|
||||
}
|
||||
|
||||
[node name="ItemObjectSprite" type="Node2D"]
|
||||
@@ -80,6 +109,7 @@ scale = Vector2(0.875, 0.875)
|
||||
texture = ExtResource("2_ng201")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
unique_name_in_owner = true
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_ng3e4")
|
||||
}
|
||||
|
||||
@@ -43,9 +43,7 @@ func inspector_info() -> Inspector.Info:
|
||||
)
|
||||
|
||||
func interact(player : Player) -> bool:
|
||||
var swapped_item = player.inventory.get_item()
|
||||
|
||||
player.get_item(item)
|
||||
var swapped_item = player.pick_item(item)
|
||||
|
||||
if swapped_item:
|
||||
item = swapped_item
|
||||
@@ -63,6 +61,7 @@ func pickup_animation(player : Player):
|
||||
func():
|
||||
queue_free()
|
||||
)
|
||||
object_sprite.pickup_animation()
|
||||
|
||||
func generate_sprite() -> ItemObjectSprite:
|
||||
var spriteNode = SPRITE_SCENE.instantiate() as ItemObjectSprite
|
||||
|
||||
@@ -10,3 +10,6 @@ func apply_texture_to_sprite(texture, item_sprite_size = 50.):
|
||||
1./(texture.get_width()/item_sprite_size),
|
||||
1./(texture.get_height()/item_sprite_size)
|
||||
)
|
||||
|
||||
func pickup_animation():
|
||||
%AnimationPlayer.play("pickup")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_resource type="Resource" script_class="MachineType" load_steps=3 format=3 uid="uid://cv2tf0tydqj5v"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="1_8ajib"]
|
||||
[ext_resource type="Script" uid="uid://bhncww816fjsb" path="res://entities/interactables/machines/scripts/machine_info.gd" id="1_vktn1"]
|
||||
[ext_resource type="Script" path="res://entities/interactables/machines/scripts/machine_info.gd" id="1_vktn1"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("1_vktn1")
|
||||
|
||||
@@ -30,7 +30,7 @@ func interact(p : Player) -> bool:
|
||||
return false
|
||||
|
||||
p.play_sfx("harvest")
|
||||
p.delete_item(p.inventory.get_item())
|
||||
p.inventory.remove_current_item()
|
||||
containing_seed += 1
|
||||
if containing_seed >= get_seed_needed():
|
||||
$AnimationPlayer.play("empty")
|
||||
|
||||
@@ -4,7 +4,7 @@ class_name Interactable
|
||||
var available : bool = true
|
||||
|
||||
func can_interact(_p : Player) -> bool:
|
||||
return true
|
||||
return available
|
||||
|
||||
func interaction_cost(_p : Player) -> int:
|
||||
return 0
|
||||
|
||||
@@ -34,6 +34,15 @@ func _ready():
|
||||
inventory.inventory_changed.connect(_on_inventory_updated)
|
||||
Pointer.player = self
|
||||
|
||||
func _input(_event) -> void:
|
||||
if Input.is_action_pressed("change_item_left"):
|
||||
inventory.change_current_item(1)
|
||||
if Input.is_action_pressed("change_item_right"):
|
||||
inventory.change_current_item(-1)
|
||||
for i in range(1, 10):
|
||||
if Input.is_action_pressed("item_" + str(i)):
|
||||
inventory.set_current_item(i - 1)
|
||||
|
||||
# Méthode déclenchée par la classe planet
|
||||
func _start_pass_day():
|
||||
controlling_player = false
|
||||
@@ -67,16 +76,17 @@ func _process(_delta):
|
||||
move_and_slide()
|
||||
|
||||
func _on_inventory_updated(_inventory: Inventory):
|
||||
if inventory.get_item():
|
||||
setup_preview_zone(inventory.get_item().usage_zone_radius)
|
||||
var item_texture = inventory.get_item().icon
|
||||
var item : Item = inventory.get_item()
|
||||
if item:
|
||||
setup_preview_zone(item.usage_zone_radius)
|
||||
var item_texture = item.icon
|
||||
%ItemSprite.texture = item_texture
|
||||
%ItemSprite.scale = Vector2(
|
||||
1./(item_texture.get_width()/HOLDING_ITEM_SPRITE_SIZE),
|
||||
1./(item_texture.get_height()/HOLDING_ITEM_SPRITE_SIZE)
|
||||
)
|
||||
%HideEyes.visible = inventory.get_item() != null
|
||||
%ItemSprite.visible = inventory.get_item() != null
|
||||
%HideEyes.visible = item != null
|
||||
%ItemSprite.visible = item != null
|
||||
emit_signal("player_updated", self)
|
||||
|
||||
|
||||
@@ -112,9 +122,18 @@ func try_interact(interactable : Interactable):
|
||||
func try_move(move_to : Vector2):
|
||||
instruction = MoveInstruction.new(move_to)
|
||||
|
||||
func get_item(item : Item):
|
||||
inventory.set_item(item)
|
||||
func pick_item(item : Item) -> Item:
|
||||
var itemAdded = inventory.add_item(item)
|
||||
var currentItem : Item = inventory.get_item()
|
||||
var itemSwapped : bool = false
|
||||
if itemAdded:
|
||||
inventory.set_current_item(inventory.length() - 1)
|
||||
else:
|
||||
itemSwapped = inventory.set_item(item, inventory.current_item_ind)
|
||||
play_sfx("pick")
|
||||
if !itemSwapped:
|
||||
currentItem = null
|
||||
return currentItem
|
||||
|
||||
func drop_item():
|
||||
var item_to_drop = inventory.pop_item()
|
||||
@@ -148,7 +167,7 @@ func use_item(item : Item):
|
||||
if is_item_used:
|
||||
energy -= item.energy_usage
|
||||
if item.is_one_time_use():
|
||||
delete_item(item)
|
||||
inventory.remove_current_item()
|
||||
|
||||
func upgrade_max_energy(amount = 1):
|
||||
max_energy += amount
|
||||
|
||||
Reference in New Issue
Block a user