diff options
| author | metamuffin <metamuffin@disroot.org> | 2024-06-24 18:21:51 +0200 | 
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2024-06-24 18:21:51 +0200 | 
| commit | 28077fda347b7aaf5cc482409164a93d85e9a4dc (patch) | |
| tree | 38d8aa8ddcfa974fc3ca70550015d9a90f6203d2 | |
| parent | e72b9cc631290ec2d3d8d3cc9451d6dced9f984a (diff) | |
| parent | 9905a63865545ef118bd6e2d0ce1b290f307bf81 (diff) | |
| download | hurrycurry-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.tscn | 22 | ||||
| -rw-r--r-- | client/map/items/pot.gd | 15 | ||||
| -rw-r--r-- | client/map/items/steam.tscn | 26 | ||||
| -rw-r--r-- | client/map/items/tomato.gd | 12 | ||||
| -rw-r--r-- | client/map/tiles/cutting_board.gd | 3 | ||||
| -rw-r--r-- | client/map/tiles/oven.gd | 12 | ||||
| -rw-r--r-- | client/map/tiles/oven.tscn | 49 | ||||
| -rw-r--r-- | client/map/tiles/oven_model.gd | 19 | ||||
| -rw-r--r-- | client/player/character/character.gd | 35 | ||||
| -rw-r--r-- | client/player/character/character.tscn | 73 | ||||
| -rw-r--r-- | client/player/controllable_player.gd | 1 | ||||
| -rw-r--r-- | client/player/player.gd | 5 | 
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 | 
