aboutsummaryrefslogtreecommitdiff
path: root/client/player
diff options
context:
space:
mode:
authortpart <tpart120@proton.me>2025-09-21 22:19:39 +0200
committertpart <tpart120@proton.me>2025-09-21 22:19:44 +0200
commit483fba84229b42202157e9e9cc0ae2c394e48060 (patch)
tree2ccad6b215fdd809a5603c0eff95c650ba17b33c /client/player
parentf8c0f3a15a80bbf01ac5f6586269b3b506d0c21a (diff)
downloadhurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar
hurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar.bz2
hurrycurry-483fba84229b42202157e9e9cc0ae2c394e48060.tar.zst
Add rolling board model; Add rolling pin model; Add rolling pin animation (#393)
Diffstat (limited to 'client/player')
-rw-r--r--client/player/character/character.gd7
-rw-r--r--client/player/character/character.tscn220
2 files changed, 217 insertions, 10 deletions
diff --git a/client/player/character/character.gd b/client/player/character/character.gd
index c6401965..a6af254a 100644
--- a/client/player/character/character.gd
+++ b/client/player/character/character.gd
@@ -35,6 +35,7 @@ var walking := false
var holding := false
var boosting := false
var cutting := false
+var rolling := false
var was_boosting := boosting
var current_animation := "idle"
@@ -57,7 +58,6 @@ var headwears: Array[PackedScene]= [
@onready var hand_animations = $HandAnimations
@onready var main = $Main
-@onready var tram = $Tram
@onready var default_height = main.position.y
@onready var main_height_target = default_height
@onready var walking_particles = $Walking
@@ -65,6 +65,7 @@ var headwears: Array[PackedScene]= [
@onready var username_tag = $Username
@onready var tie = $Main/Tie
@onready var knife = $Main/HandRight/Knife
+@onready var rolling_pin = $Main/RollingPin
@onready var head_default: MeshInstance3D = $Main/HeadDefault
@onready var head_robot: MeshInstance3D = $Main/HeadRobot
@@ -82,6 +83,7 @@ func _process(delta):
var next_animation: String
if holding: next_animation = "hold"
elif cutting: next_animation = "cut"
+ elif rolling: next_animation = "roll"
elif walking: next_animation = "walk"
else: next_animation = "idle"
@@ -106,8 +108,6 @@ func set_style(style: Dictionary, character_class: String):
tie.visible = character_class != "customer"
head_robot.visible = character_class == "bot"
head_default.visible = is_human
- main.visible = character_class != "tram"
- tram.visible = character_class == "tram"
# Hairstyle
hair_mesh.mesh = hairstyles[hairstyle_idx]
@@ -131,6 +131,7 @@ func play_animation(name_: String):
else: step_sounds.stop_autoplay()
knife.visible = name_ == "cut"
+ rolling_pin.visible = name_ == "roll"
func _on_hand_animations_animation_finished(_name):
hand_animations.play(current_animation)
diff --git a/client/player/character/character.tscn b/client/player/character/character.tscn
index ccf987b9..748cdaed 100644
--- a/client/player/character/character.tscn
+++ b/client/player/character/character.tscn
@@ -1,10 +1,11 @@
-[gd_scene load_steps=26 format=3 uid="uid://b3hhir2fvnunu"]
+[gd_scene load_steps=27 format=3 uid="uid://b3hhir2fvnunu"]
[ext_resource type="Script" uid="uid://dwk3vd4nv2k65" path="res://player/character/character.gd" id="1_12lbh"]
[ext_resource type="ArrayMesh" uid="uid://bnmm01yjwultj" path="res://player/character/default/main.res" id="2_uovyg"]
[ext_resource type="ArrayMesh" uid="uid://46sp3fu3n6ls" path="res://player/character/default/hand_right.res" id="3_k28vh"]
[ext_resource type="ArrayMesh" uid="uid://r52cylox4imf" path="res://player/character/default/hand_left.res" id="4_tcrm3"]
[ext_resource type="PackedScene" uid="uid://cufype1bex3r3" path="res://map/tiles/knife.tscn" id="4_tjq3a"]
+[ext_resource type="PackedScene" uid="uid://c8t04dfp45a86" path="res://map/tiles/rolling_pin.tscn" id="5_kl3lh"]
[ext_resource type="ArrayMesh" uid="uid://csryncouqhwp1" path="res://player/character/default/head.res" id="5_n1vl0"]
[ext_resource type="ArrayMesh" uid="uid://c2qnwt44x8ujl" path="res://player/character/default/tie.res" id="9_kgric"]
[ext_resource type="AudioStream" uid="uid://bxiorkb4xb8t1" path="res://player/sounds/step1.ogg" id="10_qpd6x"]
@@ -14,7 +15,6 @@
[ext_resource type="Script" uid="uid://n4jwod1jfuiv" path="res://audio/play_random.gd" id="14_3rb6x"]
[ext_resource type="AudioStream" uid="uid://1jsqpnk3igj3" path="res://player/sounds/woosh1.ogg" id="14_ikcec"]
[ext_resource type="AudioStream" uid="uid://cwme7eatip0jc" path="res://player/sounds/woosh2.ogg" id="15_iv4wu"]
-[ext_resource type="PackedScene" uid="uid://xq5claqewtb3" path="res://player/character/tram/tram.tscn" id="18_8h5ka"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7ojaw"]
resource_local_to_scene = true
@@ -155,6 +155,39 @@ tracks/11/keys = {
"points": PackedFloat32Array(2.0944, -0.25, 0, 0.25, 0),
"times": PackedFloat32Array(0)
}
+tracks/12/type = "bezier"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Main/RollingPin:position:x")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/13/type = "bezier"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Main/RollingPin:position:y")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/14/type = "bezier"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Main/RollingPin:position:z")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
[sub_resource type="Animation" id="Animation_557hk"]
resource_name = "cut"
@@ -706,12 +739,183 @@ tracks/11/keys = {
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4)
}
+[sub_resource type="Animation" id="Animation_01ngc"]
+resource_name = "roll"
+loop_mode = 1
+step = 0.01
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Main/HandRight:position:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(-1, -0.125, 0, 0.125, 0, -1, -0.083333336, 0, 0, 0, -1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Main/HandRight:position:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 1, -0.083333336, 0, 0, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/2/type = "bezier"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Main/HandRight:position:z")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 2, -0.2, 0, 0.2, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/3/type = "bezier"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Main/HandRight:rotation:x")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/4/type = "bezier"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Main/HandRight:rotation:y")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(-2.0943952, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/5/type = "bezier"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Main/HandRight:rotation:z")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(-3.1415927, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/6/type = "bezier"
+tracks/6/imported = false
+tracks/6/enabled = true
+tracks/6/path = NodePath("Main/HandLeft:position:x")
+tracks/6/interp = 1
+tracks/6/loop_wrap = true
+tracks/6/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 1, -0.083333336, 0, 0, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/7/type = "bezier"
+tracks/7/imported = false
+tracks/7/enabled = true
+tracks/7/path = NodePath("Main/HandLeft:position:y")
+tracks/7/interp = 1
+tracks/7/loop_wrap = true
+tracks/7/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 1, -0.083333336, 0, 0, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/8/type = "bezier"
+tracks/8/imported = false
+tracks/8/enabled = true
+tracks/8/path = NodePath("Main/HandLeft:position:z")
+tracks/8/interp = 1
+tracks/8/loop_wrap = true
+tracks/8/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 2, -0.2, 0, 0.2, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/9/type = "bezier"
+tracks/9/imported = false
+tracks/9/enabled = true
+tracks/9/path = NodePath("Main/HandLeft:rotation:x")
+tracks/9/interp = 1
+tracks/9/loop_wrap = true
+tracks/9/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/10/type = "bezier"
+tracks/10/imported = false
+tracks/10/enabled = true
+tracks/10/path = NodePath("Main/HandLeft:rotation:y")
+tracks/10/interp = 1
+tracks/10/loop_wrap = true
+tracks/10/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(1.3962634, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/11/type = "bezier"
+tracks/11/imported = false
+tracks/11/enabled = true
+tracks/11/path = NodePath("Main/HandLeft:rotation:z")
+tracks/11/interp = 1
+tracks/11/loop_wrap = true
+tracks/11/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(-3.1415927, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/12/type = "bezier"
+tracks/12/imported = false
+tracks/12/enabled = true
+tracks/12/path = NodePath("Main/RollingPin:position:x")
+tracks/12/interp = 1
+tracks/12/loop_wrap = true
+tracks/12/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(0, -0.125, 0, 0.125, 0, 0, -0.083333336, 0, 0, 0, 0, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/13/type = "bezier"
+tracks/13/imported = false
+tracks/13/enabled = true
+tracks/13/path = NodePath("Main/RollingPin:position:y")
+tracks/13/interp = 1
+tracks/13/loop_wrap = true
+tracks/13/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 1, -0.083333336, 0, 0, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+tracks/14/type = "bezier"
+tracks/14/imported = false
+tracks/14/enabled = true
+tracks/14/path = NodePath("Main/RollingPin:position:z")
+tracks/14/interp = 1
+tracks/14/loop_wrap = true
+tracks/14/keys = {
+"handle_modes": PackedInt32Array(0, 2, 0),
+"points": PackedFloat32Array(1, -0.125, 0, 0.125, 0, 2, -0.2, 0, 0.2, 0, 1, -0.125, 0, 0.125, 0),
+"times": PackedFloat32Array(0, 0.5, 1)
+}
+
[sub_resource type="AnimationLibrary" id="AnimationLibrary_xtrfe"]
_data = {
&"RESET": SubResource("Animation_tdhvg"),
&"cut": SubResource("Animation_557hk"),
&"hold": SubResource("Animation_cvcpd"),
&"idle": SubResource("Animation_r1hej"),
+&"roll": SubResource("Animation_01ngc"),
&"walk": SubResource("Animation_7kiho")
}
@@ -734,16 +938,21 @@ mesh = ExtResource("2_uovyg")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_7ojaw")
+[node name="RollingPin" parent="Main" instance=ExtResource("5_kl3lh")]
+transform = Transform3D(3.030303, -1.1268961e-05, -1.5955811e-05, 1.7894663e-05, 0.47404197, 2.992996, -8.746808e-06, -2.992996, 0.47404295, 0, 1, 1)
+visible = false
+
[node name="HandRight" type="MeshInstance3D" parent="Main"]
-transform = Transform3D(0.287144, 0.2864, -1.17785e-06, 0.402357, -0.133775, 0.337554, 0.292329, -0.0971941, -0.464603, -1.302, -0.17, 0)
+transform = Transform3D(0.28714395, 0.28639996, -1.177853e-06, 0.40235722, -0.13377503, 0.33755422, 0.29232922, -0.09719407, -0.46460304, -1.302, -0.17, 0)
mesh = ExtResource("3_k28vh")
skeleton = NodePath("")
[node name="Knife" parent="Main/HandRight" instance=ExtResource("4_tjq3a")]
transform = Transform3D(3.69699, 2.68602, 2.63837, -3.70658, -2.69301, 7.93544, 3.10156, -4.26893, -1.08623e-05, -0.157983, 0.472216, -0.19819)
+visible = false
[node name="HandLeft" type="MeshInstance3D" parent="Main"]
-transform = Transform3D(0.287143, -0.2864, 1.45591e-06, -0.497341, -0.165355, -2.37987e-16, 7.2796e-07, -7.26076e-07, -0.574281, 1.302, -0.17, 0)
+transform = Transform3D(0.2871431, -0.28640002, 1.4559066e-06, -0.49734095, -0.16535497, -2.3798664e-16, 7.2796e-07, -7.2607605e-07, -0.574281, 1.302, -0.17, 0)
mesh = ExtResource("4_tcrm3")
skeleton = NodePath("")
@@ -833,7 +1042,4 @@ billboard = 1
no_depth_test = true
text = "Username"
-[node name="Tram" parent="." instance=ExtResource("18_8h5ka")]
-visible = false
-
[connection signal="animation_finished" from="HandAnimations" to="." method="_on_hand_animations_animation_finished"]