summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/game.gd8
-rw-r--r--client/map/items/bread.gd4
-rw-r--r--client/map/items/food_processor.gd9
-rw-r--r--client/map/items/item.gd11
-rw-r--r--client/map/items/pot.gd4
-rw-r--r--client/map/items/pot_items.gd4
-rw-r--r--client/map/items/strawberry.gd4
-rw-r--r--client/map/items/tomato.gd4
-rw-r--r--client/map/progress.gd21
-rw-r--r--client/map/tiles/cutting_board.gd10
-rw-r--r--client/map/tiles/cutting_board.tscn160
-rw-r--r--client/map/tiles/knife.tscn4
-rw-r--r--client/map/tiles/sink.gd4
-rw-r--r--client/map/tiles/tile.gd4
-rw-r--r--client/multiplayer.gd43
-rw-r--r--client/player/controllable_player.gd4
-rw-r--r--client/player/player.gd4
17 files changed, 237 insertions, 65 deletions
diff --git a/client/game.gd b/client/game.gd
index 09027d18..a3bef461 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -196,9 +196,9 @@ func _ready():
from_tile.pass_to(to_tile)
)
- mp.set_tile_progress.connect(func(tile: Vector2i, progress: float, warn: bool):
+ mp.set_tile_progress.connect(func(tile: Vector2i, position_: float, speed: float, warn: bool):
var t: Tile = map.get_tile_instance(tile)
- t.progress(progress, warn)
+ t.progress(position_, speed, warn)
)
mp.set_tile_finished.connect(func(tile: Vector2i, warn: bool):
@@ -206,9 +206,9 @@ func _ready():
t.finish(warn)
)
- mp.set_player_progress.connect(func(player: int, progress: float, warn: bool):
+ mp.set_player_progress.connect(func(player: int, position_: float, speed: float, warn: bool):
var p: Player = players[player]
- p.progress(progress, warn)
+ p.progress(position_, speed, warn)
)
mp.set_player_finished.connect(func(player: int, warn: bool):
diff --git a/client/map/items/bread.gd b/client/map/items/bread.gd
index b5143c53..d869aeb1 100644
--- a/client/map/items/bread.gd
+++ b/client/map/items/bread.gd
@@ -25,8 +25,8 @@ func _init(owned_by_: Node3D):
steam.color = Color(.6, .6, .6, .4)
base.add_child(steam)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
steam.emitting = warn
func finish(warn: bool):
diff --git a/client/map/items/food_processor.gd b/client/map/items/food_processor.gd
index 66d78168..ad4a6349 100644
--- a/client/map/items/food_processor.gd
+++ b/client/map/items/food_processor.gd
@@ -23,11 +23,12 @@ func _init(owned_by_: Node3D):
add_child(load("res://map/items/food_processor.tscn").instantiate())
add_child(processing)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
processing.emitting = true
- processing.rotation.y += p * TAU
- base.rotation.y += p * TAU
+ # TODO: Fix animation
+ # processing.rotation.y += p * TAU
+ # base.rotation.y += p * TAU
if sound_id == null:
sound_id = Sound.item_progress(
self,
diff --git a/client/map/items/item.gd b/client/map/items/item.gd
index 2d046700..e67edcca 100644
--- a/client/map/items/item.gd
+++ b/client/map/items/item.gd
@@ -50,12 +50,13 @@ func _process(delta):
if p: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed)
else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * ispeed)
-func progress(p: float, warn: bool):
+func progress(position_: float, speed: float, warn: bool):
progress_instance.visible = true
- progress_instance.set_progress(p, warn)
- # this shoukd be removed when the server is fixed
- if p >= 1.:
- finish(warn)
+ progress_instance.update(position_, speed, warn)
+
+ # TODO: Fix finish
+ # if p >= 1.:
+ # finish(warn)
func finish(_warn: bool):
progress_instance.visible = false
diff --git a/client/map/items/pot.gd b/client/map/items/pot.gd
index dd5a6c6f..7a4fe40b 100644
--- a/client/map/items/pot.gd
+++ b/client/map/items/pot.gd
@@ -23,8 +23,8 @@ func _init(owned_by_: Node3D):
add_child(load("res://map/items/pot.tscn").instantiate())
base.add_child(steam)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
steam.emitting = true
if warn:
steam.color = Color(.2, .2, .2)
diff --git a/client/map/items/pot_items.gd b/client/map/items/pot_items.gd
index fae2ccaa..25fd74d3 100644
--- a/client/map/items/pot_items.gd
+++ b/client/map/items/pot_items.gd
@@ -51,8 +51,8 @@ class RawSteakP extends Pot:
super(owned_by_)
base.add_child(preload("res://map/items/raw_steak.tscn").instantiate())
- func progress(p: float, warn: bool):
- super(p, warn)
+ func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
if sound_id == null:
sound_id = Sound.item_progress(self, preload("res://map/items/sounds/frying.ogg"), null)
diff --git a/client/map/items/strawberry.gd b/client/map/items/strawberry.gd
index ef9abb64..e663464f 100644
--- a/client/map/items/strawberry.gd
+++ b/client/map/items/strawberry.gd
@@ -24,8 +24,8 @@ func _init(owned_by_: Node3D):
base.add_child(cut)
cut.color = Color(1., 0., 0.)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
cut.emitting = true
func finish(warn: bool):
diff --git a/client/map/items/tomato.gd b/client/map/items/tomato.gd
index 97cd668c..7ecff374 100644
--- a/client/map/items/tomato.gd
+++ b/client/map/items/tomato.gd
@@ -24,8 +24,8 @@ func _init(owned_by_: Node3D):
base.add_child(cut)
cut.color = Color(1., 0., 0.)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
cut.emitting = true
func finish(warn: bool):
diff --git a/client/map/progress.gd b/client/map/progress.gd
index 94670651..1ca76287 100644
--- a/client/map/progress.gd
+++ b/client/map/progress.gd
@@ -1,6 +1,7 @@
# Hurry Curry! - a game about cooking
# Copyright 2024 metamuffin
# Copyright 2024 nokoe
+# Copyright 2024 tpart
#
# 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
@@ -17,7 +18,19 @@
class_name ProgressBar3D
extends MeshInstance3D
-func set_progress(progress: float, bad: bool):
- var mat: ShaderMaterial = self.get_active_material(0)
- mat.set_shader_parameter("progress", progress)
- mat.set_shader_parameter("bad", bad)
+var speed := 0.
+var position_ := 0.
+
+func update(new_position: float, new_speed: float, warn: bool):
+ speed = new_speed
+ position_ = new_position
+
+ var mat: ShaderMaterial = get_active_material(0)
+ mat.set_shader_parameter("progress", position_)
+ mat.set_shader_parameter("bad", warn)
+
+func _process(delta: float):
+ position_ += delta * speed
+
+ var mat: ShaderMaterial = get_active_material(0)
+ mat.set_shader_parameter("progress", position_)
diff --git a/client/map/tiles/cutting_board.gd b/client/map/tiles/cutting_board.gd
index 3e1b4018..c9291717 100644
--- a/client/map/tiles/cutting_board.gd
+++ b/client/map/tiles/cutting_board.gd
@@ -16,9 +16,17 @@
class_name CuttingBoard
extends CounterBase
+var board = load("res://map/tiles/cutting_board.tscn").instantiate()
+
func _init(rename: String, neighbors: Array):
super(rename, neighbors)
- base.add_child(load("res://map/tiles/cutting_board.tscn").instantiate())
+ base.add_child(board)
+
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
+ var anim: AnimationPlayer = board.get_node("AnimationPlayer")
+ if not anim.is_playing():
+ anim.play("cut_loop")
static func interact_target() -> Vector3:
return Vector3(0., 0.575, 0.)
diff --git a/client/map/tiles/cutting_board.tscn b/client/map/tiles/cutting_board.tscn
index 3defaba0..517682b7 100644
--- a/client/map/tiles/cutting_board.tscn
+++ b/client/map/tiles/cutting_board.tscn
@@ -1,14 +1,166 @@
-[gd_scene load_steps=3 format=3 uid="uid://bslx1a7kdufde"]
+[gd_scene load_steps=6 format=3 uid="uid://bslx1a7kdufde"]
[ext_resource type="ArrayMesh" uid="uid://dd4g04lgvsly5" path="res://map/tiles/cutting_board.res" id="1_d4k2k"]
-[ext_resource type="PackedScene" uid="uid://wadi7kb021k6" path="res://map/tiles/knife.tscn" id="3_wvxni"]
+[ext_resource type="PackedScene" uid="uid://cufype1bex3r3" path="res://map/tiles/knife.tscn" id="3_wvxni"]
+
+[sub_resource type="Animation" id="Animation_ercgy"]
+length = 0.001
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Knife:rotation:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(-1.5708, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Knife:rotation:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/2/type = "bezier"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Knife:rotation:z")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/3/type = "bezier"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Knife:position:x")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0.375, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/4/type = "bezier"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Knife:position:y")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0.52, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/5/type = "bezier"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Knife:position:z")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0.19, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="Animation" id="Animation_vu13j"]
+resource_name = "cut_loop"
+length = 0.25
+loop_mode = 1
+step = 0.01
+tracks/0/type = "bezier"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Knife:rotation:x")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0, 0, -0.125, 0, 0.125, 0, 0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0, 0.1, 0.25)
+}
+tracks/1/type = "bezier"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("Knife:rotation:y")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(-1.5708, -0.25, 0, 0.25, 0, -1.5708, -0.125, 0, 0.125, 0, -1.5708, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0, 0.1, 0.25)
+}
+tracks/2/type = "bezier"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("Knife:rotation:z")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"handle_modes": PackedInt32Array(0, 0, 0),
+"points": PackedFloat32Array(0.785, -0.25, 0, 0.05, 0.0393813, 1.88533, -0.01, -0.696971, 0.03, 0.0774413, 0.855358, -0.07, 0.0542088, 0.1, -0.00774413),
+"times": PackedFloat32Array(0, 0.15, 0.25)
+}
+tracks/3/type = "bezier"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("Knife:position:x")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/4/type = "bezier"
+tracks/4/imported = false
+tracks/4/enabled = true
+tracks/4/path = NodePath("Knife:position:y")
+tracks/4/interp = 1
+tracks/4/loop_wrap = true
+tracks/4/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0.75, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+tracks/5/type = "bezier"
+tracks/5/imported = false
+tracks/5/enabled = true
+tracks/5/path = NodePath("Knife:position:z")
+tracks/5/interp = 1
+tracks/5/loop_wrap = true
+tracks/5/keys = {
+"handle_modes": PackedInt32Array(0),
+"points": PackedFloat32Array(0.19, -0.25, 0, 0.25, 0),
+"times": PackedFloat32Array(0)
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_fy61n"]
+_data = {
+"RESET": SubResource("Animation_ercgy"),
+"cut_loop": SubResource("Animation_vu13j")
+}
[node name="CuttingBoard" type="Node3D"]
[node name="Mesh" type="MeshInstance3D" parent="."]
-transform = Transform3D(0.4, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.1, 0.5, 0)
+transform = Transform3D(0.4, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.075, 0.5, 0)
mesh = ExtResource("1_d4k2k")
skeleton = NodePath("")
[node name="Knife" parent="." instance=ExtResource("3_wvxni")]
-transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.375, 0.52, 0.19)
+transform = Transform3D(1, 0, 0, 0, -3.61999e-06, 1, 0, -1, -3.61999e-06, 0.375, 0.52, 0.19)
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_fy61n")
+}
diff --git a/client/map/tiles/knife.tscn b/client/map/tiles/knife.tscn
index a4dc676f..a7cd690e 100644
--- a/client/map/tiles/knife.tscn
+++ b/client/map/tiles/knife.tscn
@@ -1,6 +1,6 @@
-[gd_scene load_steps=2 format=3 uid="uid://wadi7kb021k6"]
+[gd_scene load_steps=2 format=3 uid="uid://cufype1bex3r3"]
-[ext_resource type="ArrayMesh" uid="uid://bfsaljqvte3a8" path="res://map/tiles/knife.res" id="1_uotix"]
+[ext_resource type="ArrayMesh" uid="uid://buqo28euvn7ru" path="res://map/tiles/knife.res" id="1_uotix"]
[node name="Knife" type="Node3D"]
diff --git a/client/map/tiles/sink.gd b/client/map/tiles/sink.gd
index c39a2a2a..32c5290f 100644
--- a/client/map/tiles/sink.gd
+++ b/client/map/tiles/sink.gd
@@ -35,8 +35,8 @@ func _init(rename: String, neighbors: Array):
stopping.stream = preload("res://map/tiles/sounds/sink_stopping.ogg")
add_child(stopping)
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position_: float, speed: float, warn: bool):
+ super(position_, speed, warn)
if item is Plate:
particles.start(true)
elif item is Glass:
diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd
index 70cecfd8..4075593d 100644
--- a/client/map/tiles/tile.gd
+++ b/client/map/tiles/tile.gd
@@ -57,9 +57,9 @@ static func interact_target() -> Vector3:
func interact():
pass
-func progress(p: float, warn: bool):
+func progress(position_: float, speed: float, warn: bool):
if item != null:
- item.progress(p, warn)
+ item.progress(position_, speed, warn)
func finish(warn: bool):
if item != null:
diff --git a/client/multiplayer.gd b/client/multiplayer.gd
index b3ce6217..e4af88f2 100644
--- a/client/multiplayer.gd
+++ b/client/multiplayer.gd
@@ -45,8 +45,8 @@ signal set_tile_item(tile: Vector2i, item: int)
signal remove_tile_item(tile: Vector2i)
signal set_player_item(player: int, item: int)
signal remove_player_item(player: int)
-signal set_tile_progress(tile: Vector2i, progress: float, warn: bool)
-signal set_player_progress(player: int, progress: float, warn: bool)
+signal set_tile_progress(tile: Vector2i, position: float, speed: float, warn: bool)
+signal set_player_progress(player: int, position: float, speed: float, warn: bool)
signal set_tile_finished(tile: Vector2i, warn: bool)
signal set_player_finished(player: int, warn: bool)
signal set_ingame(state: bool, lobby: bool)
@@ -58,7 +58,7 @@ signal connection_closed(reason: String)
signal show_rating(stars: int, points: int)
signal show_book() # TODO: Connect this
-const VERSION_MAJOR: int = 5
+const VERSION_MAJOR: int = 6
const VERSION_MINOR: int = 0
var connected := false
@@ -160,31 +160,28 @@ func handle_packet(bytes: PackedByteArray):
put_item.emit(from_player, pos_to_vec2i(to_tile))
elif from_tile != null and to_tile != null:
pass_item_tile.emit(pos_to_vec2i(from_tile), pos_to_vec2i(to_tile))
- "set_active":
- push_warning("set_active is deprecated")
- var tile = pos_to_vec2i(decoded["tile"])
- var warn = decoded["warn"]
- var progress = decoded.get("progress")
- if progress != null:
- set_tile_progress.emit(tile, progress, warn)
- else:
- set_tile_finished.emit(tile, warn)
"set_progress":
+ var warn: bool = decoded["warn"]
+ var position: float = decoded["position"]
+ var speed: float = decoded["speed"]
var item: Dictionary = decoded["item"]
var tile = item.get("tile")
var player = item.get("player")
- var warn = decoded["warn"]
- var progress = decoded.get("progress")
- if progress != null:
- if tile != null:
- set_tile_progress.emit(pos_to_vec2i(tile), progress, warn)
- else:
- set_player_progress.emit(player, progress, warn)
+
+ if tile != null:
+ set_tile_progress.emit(pos_to_vec2i(tile), position, speed, warn)
else:
- if tile != null:
- set_tile_finished.emit(pos_to_vec2i(tile), warn)
- else:
- set_player_finished.emit(player, warn)
+ set_player_progress.emit(player, position, speed, warn)
+ "clear_progress":
+ var item: Dictionary = decoded["item"]
+ var warn: bool = decoded["warn"]
+ var tile = item.get("tile")
+ var player = item.get("player")
+
+ if tile != null:
+ set_tile_finished.emit(pos_to_vec2i(tile), warn)
+ else:
+ set_player_finished.emit(player, warn)
"set_tile_item":
push_warning("set_tile_item is deprecated")
var tile = pos_to_vec2i(decoded["tile"])
diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd
index c654c070..81315630 100644
--- a/client/player/controllable_player.gd
+++ b/client/player/controllable_player.gd
@@ -136,8 +136,8 @@ func aabb_point_distance(mi: Vector2, ma: Vector2, p: Vector2) -> float:
func update_position(_new_position: Vector2, _new_rotation: float, _new_boosting: bool):
pass
-func progress(p: float, warn: bool):
- super(p, warn)
+func progress(position__: float, speed: float, warn: bool):
+ super(position__, speed, warn)
Input.start_joy_vibration(0, 0.5, 0.1, 0.15)
func put_item(tile: Tile):
diff --git a/client/player/player.gd b/client/player/player.gd
index 43d7dd7f..17db85a9 100644
--- a/client/player/player.gd
+++ b/client/player/player.gd
@@ -107,9 +107,9 @@ func remove_item() -> Item:
character.holding = false
return i
-func progress(p: float, warn: bool):
+func progress(position__: float, speed: float, warn: bool):
if hand != null:
- hand.progress(p, warn)
+ hand.progress(position__, speed, warn)
func finish(warn: bool):
if hand != null: