aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-24 18:21:51 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-24 18:21:51 +0200
commit28077fda347b7aaf5cc482409164a93d85e9a4dc (patch)
tree38d8aa8ddcfa974fc3ca70550015d9a90f6203d2
parente72b9cc631290ec2d3d8d3cc9451d6dced9f984a (diff)
parent9905a63865545ef118bd6e2d0ce1b290f307bf81 (diff)
downloadhurrycurry-28077fda347b7aaf5cc482409164a93d85e9a4dc.tar
hurrycurry-28077fda347b7aaf5cc482409164a93d85e9a4dc.tar.bz2
hurrycurry-28077fda347b7aaf5cc482409164a93d85e9a4dc.tar.zst
Merge branch 'master' of https://codeberg.org/metamuffin/undercooked
-rw-r--r--client/map/items/cut.tscn22
-rw-r--r--client/map/items/pot.gd15
-rw-r--r--client/map/items/steam.tscn26
-rw-r--r--client/map/items/tomato.gd12
-rw-r--r--client/map/tiles/cutting_board.gd3
-rw-r--r--client/map/tiles/oven.gd12
-rw-r--r--client/map/tiles/oven.tscn49
-rw-r--r--client/map/tiles/oven_model.gd19
-rw-r--r--client/player/character/character.gd35
-rw-r--r--client/player/character/character.tscn73
-rw-r--r--client/player/controllable_player.gd1
-rw-r--r--client/player/player.gd5
12 files changed, 231 insertions, 41 deletions
diff --git a/client/map/items/cut.tscn b/client/map/items/cut.tscn
new file mode 100644
index 00000000..0a15a2c8
--- /dev/null
+++ b/client/map/items/cut.tscn
@@ -0,0 +1,22 @@
+[gd_scene load_steps=3 format=3 uid="uid://bbjair4iw1841"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iypba"]
+vertex_color_use_as_albedo = true
+
+[sub_resource type="SphereMesh" id="SphereMesh_0blsq"]
+material = SubResource("StandardMaterial3D_iypba")
+radius = 0.05
+height = 0.1
+
+[node name="Cut" type="CPUParticles3D"]
+emitting = false
+amount = 25
+lifetime = 0.3
+explosiveness = 1.0
+lifetime_randomness = 0.5
+mesh = SubResource("SphereMesh_0blsq")
+direction = Vector3(0, 1, 0)
+spread = 90.0
+initial_velocity_min = 1.0
+initial_velocity_max = 3.0
+scale_amount_min = 0.4
diff --git a/client/map/items/pot.gd b/client/map/items/pot.gd
index fa5b038d..ac865329 100644
--- a/client/map/items/pot.gd
+++ b/client/map/items/pot.gd
@@ -16,9 +16,24 @@
class_name Pot
extends Item
+var steam: CPUParticles3D = load("res://map/items/steam.tscn").instantiate()
+
func _init(owned_by_: Node3D):
super(owned_by_)
base.add_child(load("res://map/items/pot.tscn").instantiate())
+ base.add_child(steam)
+
+func progress(p: float, warn: bool):
+ super(p, warn)
+ steam.emitting = true
+ if warn:
+ steam.color = Color(.2, .2, .2)
+ else:
+ steam.color = Color(1., 1., 1.)
+
+func finish(warn: bool):
+ super(warn)
+ steam.emitting = false
static func base_position() -> Vector3:
return Vector3(0., 0.015, 0.)
diff --git a/client/map/items/steam.tscn b/client/map/items/steam.tscn
new file mode 100644
index 00000000..4a112278
--- /dev/null
+++ b/client/map/items/steam.tscn
@@ -0,0 +1,26 @@
+[gd_scene load_steps=4 format=3 uid="uid://g1wsqgb56o1o"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e1q7j"]
+vertex_color_use_as_albedo = true
+
+[sub_resource type="SphereMesh" id="SphereMesh_mk24m"]
+material = SubResource("StandardMaterial3D_e1q7j")
+radius = 0.1
+height = 0.2
+
+[sub_resource type="Curve" id="Curve_s1bty"]
+_data = [Vector2(0, 1), 0.0, 0.0, 0, 0, Vector2(1, 0.10989), 0.0, 0.0, 0, 0]
+point_count = 2
+
+[node name="Steam" type="CPUParticles3D"]
+emitting = false
+amount = 25
+lifetime = 2.0
+mesh = SubResource("SphereMesh_mk24m")
+direction = Vector3(0, 1, 0)
+spread = 30.0
+gravity = Vector3(0, -0.1, 0)
+initial_velocity_min = 0.2
+initial_velocity_max = 0.5
+scale_amount_min = 0.4
+scale_amount_curve = SubResource("Curve_s1bty")
diff --git a/client/map/items/tomato.gd b/client/map/items/tomato.gd
index 989e4a54..43e2e64d 100644
--- a/client/map/items/tomato.gd
+++ b/client/map/items/tomato.gd
@@ -16,6 +16,18 @@
class_name Tomato
extends Item
+var cut: CPUParticles3D = load("res://map/items/cut.tscn").instantiate()
+
func _init(owned_by_: Node3D):
super(owned_by_)
base.add_child(load("res://map/items/tomato.tscn").instantiate())
+ base.add_child(cut)
+ cut.color = Color(1., 0., 0.)
+
+func progress(p: float, warn: bool):
+ super(p, warn)
+ cut.emitting = true
+
+func finish(warn: bool):
+ super(warn)
+ cut.emitting = false
diff --git a/client/map/tiles/cutting_board.gd b/client/map/tiles/cutting_board.gd
index cadfccfa..280235e8 100644
--- a/client/map/tiles/cutting_board.gd
+++ b/client/map/tiles/cutting_board.gd
@@ -19,3 +19,6 @@ extends CounterBase
func _init(rename: String, neighbors: Array):
super(rename, neighbors)
base.add_child(load("res://map/tiles/cutting_board.tscn").instantiate())
+
+static func interact_target() -> Vector3:
+ return Vector3(0., 0.575, 0.)
diff --git a/client/map/tiles/oven.gd b/client/map/tiles/oven.gd
index 59d734e1..c6e446cf 100644
--- a/client/map/tiles/oven.gd
+++ b/client/map/tiles/oven.gd
@@ -16,6 +16,16 @@
class_name Oven
extends Counter
+var oven: OvenModel = load("res://map/tiles/oven.tscn").instantiate()
+
func _init(rename: String, neighbors: Array):
super(rename, neighbors)
- base.add_child(load("res://map/tiles/oven.tscn").instantiate())
+ base.add_child(oven)
+
+func put_item(i: Item):
+ oven.open()
+ super(i)
+
+func take_item() -> Item:
+ oven.open()
+ return super()
diff --git a/client/map/tiles/oven.tscn b/client/map/tiles/oven.tscn
index 369a1fa5..44535678 100644
--- a/client/map/tiles/oven.tscn
+++ b/client/map/tiles/oven.tscn
@@ -1,9 +1,45 @@
-[gd_scene load_steps=3 format=3 uid="uid://bil6eip7uwqvs"]
+[gd_scene load_steps=7 format=3 uid="uid://bil6eip7uwqvs"]
+[ext_resource type="Script" path="res://map/tiles/oven_model.gd" id="1_3v43w"]
[ext_resource type="ArrayMesh" uid="uid://blc1q50d5ky86" path="res://map/tiles/oven_base.res" id="1_d1hwl"]
[ext_resource type="ArrayMesh" uid="uid://blb5oew3sh7ek" path="res://map/tiles/oven_door.res" id="2_i5vso"]
+[sub_resource type="Animation" id="Animation_yb3ht"]
+resource_name = "open"
+length = 0.5
+tracks/0/type = "rotation_3d"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Base/Door")
+tracks/0/interp = 2
+tracks/0/loop_wrap = true
+tracks/0/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1, 0.1, 1, 0.766044, 0, 0, 0.642788, 0.2, 1, 0.707107, 0, 0, 0.707107, 0.4, 1, 0, 0, 0, 1)
+tracks/1/type = "scale_3d"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Base/Door")
+tracks/1/interp = 2
+tracks/1/loop_wrap = true
+tracks/1/keys = PackedFloat32Array(0, 1, 1, 1, 1, 0.1, 1, 1, 1, 1, 0.2, 1, 1, 1, 1, 0.4, 1, 1, 1, 1)
+
+[sub_resource type="Animation" id="Animation_yo2v1"]
+length = 0.001
+tracks/0/type = "rotation_3d"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Base/Door")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = PackedFloat32Array(0, 1, 0, 0, 0, 1)
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_io5nw"]
+_data = {
+"RESET": SubResource("Animation_yo2v1"),
+"open": SubResource("Animation_yb3ht")
+}
+
[node name="Oven" type="Node3D"]
+script = ExtResource("1_3v43w")
[node name="Base" type="MeshInstance3D" parent="."]
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0)
@@ -14,3 +50,14 @@ skeleton = NodePath("")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0.43, 0.9)
mesh = ExtResource("2_i5vso")
skeleton = NodePath("")
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_io5nw")
+}
+
+[node name="OmniLight3D" type="OmniLight3D" parent="."]
+transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.7, 0)
+light_color = Color(0.944743, 0.70243, 0.38641, 1)
+light_energy = 2.0
+shadow_enabled = true
diff --git a/client/map/tiles/oven_model.gd b/client/map/tiles/oven_model.gd
new file mode 100644
index 00000000..52a876a8
--- /dev/null
+++ b/client/map/tiles/oven_model.gd
@@ -0,0 +1,19 @@
+# Copyright 2024 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name OvenModel
+extends Node3D
+
+func open():
+ $AnimationPlayer.play("open")
diff --git a/client/player/character/character.gd b/client/player/character/character.gd
index 847bd7b6..76e7b6b3 100644
--- a/client/player/character/character.gd
+++ b/client/player/character/character.gd
@@ -16,13 +16,46 @@
extends Node3D
class_name Character
+const WALK_ANIM_STRENGTH := 0.05
+const WALK_ANIM_SPEED:= 15.0
+
+var walking := false
+var holding := false
+
+var current_animation := "idle"
+
@onready var hand_animations = $HandAnimations
+@onready var main = $Main
+@onready var default_height = main.position.y
+@onready var main_height_target = default_height
func _ready():
play_animation("idle")
+var t := 0.0
+func _process(delta):
+ if walking:
+ t += delta
+ main_height_target = default_height + sin(t * WALK_ANIM_SPEED) * WALK_ANIM_STRENGTH
+ else:
+ t = 0
+ main.position.y = main_height_target
+
+ # Update animation:
+ var next_animation: String
+ if holding:
+ next_animation = "hold"
+ elif walking:
+ next_animation = "walk"
+ else:
+ next_animation = "idle"
+
+ if current_animation != next_animation:
+ play_animation(next_animation)
+
func play_animation(name_: String):
+ current_animation = name_
hand_animations.play(name_)
func _on_hand_animations_animation_finished(name_):
- hand_animations.play(name_)
+ hand_animations.play(current_animation)
diff --git a/client/player/character/character.tscn b/client/player/character/character.tscn
index fc06f448..d33a424e 100644
--- a/client/player/character/character.tscn
+++ b/client/player/character/character.tscn
@@ -419,6 +419,7 @@ tracks/11/keys = {
[sub_resource type="Animation" id="Animation_7kiho"]
resource_name = "walk"
+length = 0.4
loop_mode = 1
step = 0.05
tracks/0/type = "bezier"
@@ -428,9 +429,9 @@ tracks/0/path = NodePath("Main/HandLeft:position:x")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(1.302, 0, 0, 0, 0, 1.302, -0.25, 0, 0.25, 0, 1.302, 0, 0, 0, 0, 1.302, -0.25, 0, 0.25, 0, 1.302, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(1.302, 0, 0, 0, 0, 1.302, 0, 0, 0, 0, 1.302, 0, 0, 0, 0, 1.302, 0, 0, 0, 0, 1.302, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/1/type = "bezier"
tracks/1/imported = false
@@ -439,9 +440,9 @@ tracks/1/path = NodePath("Main/HandLeft:position:y")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-0.17, 0, 0, 0, 0, -0.17, -0.25, 0, 0.25, 0, -0.17, 0, 0, 0, 0, -0.17, -0.25, 0, 0.25, 0, -0.17, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/2/type = "bezier"
tracks/2/imported = false
@@ -450,9 +451,9 @@ tracks/2/path = NodePath("Main/HandLeft:position:z")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(0, 0, 0, 0, 0, 0.25, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0, -0.25, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/3/type = "bezier"
tracks/3/imported = false
@@ -461,9 +462,9 @@ tracks/3/path = NodePath("Main/HandLeft:rotation:x")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(4.14408e-16, 0, 0, 0, 0, 0.436332, -0.25, 0, 0.25, 0, 4.14408e-16, 0, 0, 0, 0, -0.436332, -0.25, 0, 0.25, 0, 4.14408e-16, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(4.14408e-16, 0, 0, 0, 0, 0.436332, 0, 0, 0, 0, 4.14408e-16, 0, 0, 0, 0, -0.436332, 0, 0, 0, 0, 4.14408e-16, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/4/type = "bezier"
tracks/4/imported = false
@@ -472,9 +473,9 @@ tracks/4/path = NodePath("Main/HandLeft:rotation:y")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(3.14159, 0, 0, 0, 0, 3.14159, -0.25, 0, 0.25, 0, 3.14159, 0, 0, 0, 0, 3.14159, -0.25, 0, 0.25, 0, 3.14159, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(3.14159, 0, 0, 0, 0, 3.14159, 0, 0, 0, 0, 3.14159, 0, 0, 0, 0, 3.14159, 0, 0, 0, 0, 3.14159, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/5/type = "bezier"
tracks/5/imported = false
@@ -483,9 +484,9 @@ tracks/5/path = NodePath("Main/HandLeft:rotation:z")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-2.0944, 0, 0, 0, 0, -2.0944, -0.25, 0, 0.25, 0, -2.0944, 0, 0, 0, 0, -2.0944, -0.25, 0, 0.25, 0, -2.0944, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-2.0944, 0, 0, 0, 0, -2.0944, 0, 0, 0, 0, -2.0944, 0, 0, 0, 0, -2.0944, 0, 0, 0, 0, -2.0944, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/6/type = "bezier"
tracks/6/imported = false
@@ -494,9 +495,9 @@ tracks/6/path = NodePath("Main/HandRight:position:x")
tracks/6/interp = 1
tracks/6/loop_wrap = true
tracks/6/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-1.302, 0, 0, 0, 0, -1.302, -0.25, 0, 0.25, 0, -1.302, 0, 0, 0, 0, -1.302, -0.25, 0, 0.25, 0, -1.302, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-1.302, 0, 0, 0, 0, -1.302, 0, 0, 0, 0, -1.302, 0, 0, 0, 0, -1.302, 0, 0, 0, 0, -1.302, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/7/type = "bezier"
tracks/7/imported = false
@@ -505,9 +506,9 @@ tracks/7/path = NodePath("Main/HandRight:position:y")
tracks/7/interp = 1
tracks/7/loop_wrap = true
tracks/7/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-0.17, 0, 0, 0, 0, -0.17, -0.25, 0, 0.25, 0, -0.17, 0, 0, 0, 0, -0.17, -0.25, 0, 0.25, 0, -0.17, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0, -0.17, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/8/type = "bezier"
tracks/8/imported = false
@@ -516,9 +517,9 @@ tracks/8/path = NodePath("Main/HandRight:position:z")
tracks/8/interp = 1
tracks/8/loop_wrap = true
tracks/8/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(0, 0, 0, 0, 0, -0.25, -0.25, 0, 0.25, 0, -7.09899e-06, 0, 0, 0, 0, 0.25, -0.25, 0, 0.25, 0, 0, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(0, 0, 0, 0, 0, -0.25, 0, 0, 0, 0, -7.09899e-06, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/9/type = "bezier"
tracks/9/imported = false
@@ -527,9 +528,9 @@ tracks/9/path = NodePath("Main/HandRight:rotation:x")
tracks/9/interp = 1
tracks/9/loop_wrap = true
tracks/9/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-0.628319, 0, 0, 0, 0, -1.06465, -0.25, 0, 0.25, 0, -0.628331, 0, 0, 0, 0, -0.191986, -0.25, 0, 0.25, 0, -0.628319, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-0.628319, 0, 0, 0, 0, -1.06465, 0, 0, 0, 0, -0.628331, 0, 0, 0, 0, -0.191986, 0, 0, 0, 0, -0.628319, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/10/type = "bezier"
tracks/10/imported = false
@@ -538,9 +539,9 @@ tracks/10/path = NodePath("Main/HandRight:rotation:y")
tracks/10/interp = 1
tracks/10/loop_wrap = true
tracks/10/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(-3.14159, 0, 0, 0, 0, -3.14159, -0.25, 0, 0.25, 0, -3.14159, 0, 0, 0, 0, -3.14159, -0.25, 0, 0.25, 0, -3.14159, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(-3.14159, 0, 0, 0, 0, -3.14159, 0, 0, 0, 0, -3.14159, 0, 0, 0, 0, -3.14159, 0, 0, 0, 0, -3.14159, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
tracks/11/type = "bezier"
tracks/11/imported = false
@@ -549,9 +550,9 @@ tracks/11/path = NodePath("Main/HandRight:rotation:z")
tracks/11/interp = 1
tracks/11/loop_wrap = true
tracks/11/keys = {
-"handle_modes": PackedInt32Array(1, 0, 1, 0, 1),
-"points": PackedFloat32Array(2.0944, 0, 0, 0, 0, 2.0944, -0.25, 0, 0.25, 0, 2.0944, 0, 0, 0, 0, 2.0944, -0.25, 0, 0.25, 0, 2.0944, 0, 0, 0, 0),
-"times": PackedFloat32Array(0, 0.25, 0.5, 0.75, 1)
+"handle_modes": PackedInt32Array(1, 1, 0, 1, 0),
+"points": PackedFloat32Array(2.0944, 0, 0, 0, 0, 2.0944, 0, 0, 0, 0, 2.0944, 0, 0, 0, 0, 2.0944, 0, 0, 0, 0, 2.0944, 0, 0, 0, 0),
+"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xtrfe"]
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index bb9c75e8..65fcf960 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -50,6 +50,7 @@ func _process(delta):
interact()
update(delta, input)
super(delta)
+ character.walking = input.length_squared() > 0.1
func update(dt: float, input: Vector2):
var direction = input.limit_length(1.);
diff --git a/client/player/player.gd b/client/player/player.gd
index d64b5d43..41ba1059 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -56,14 +56,14 @@ func set_item(i: Item):
if i == null:
push_error("tile is null")
hand = i
- character.play_animation("hold")
+ character.holding = true
func remove_item() -> Item:
var i = hand
if i == null:
push_error("holding nothing")
hand = null
- character.play_animation("idle")
+ character.holding = false
return i
func take_item(tile: Floor):
@@ -84,3 +84,4 @@ func _process(delta):
position.x = position_anim.x
position.z = position_anim.y
rotation.y = rotation_anim
+ character.walking = position_.distance_squared_to(position_anim) > 0.001