aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/map/item_factory.gd2
-rw-r--r--client/map/items/strawberry.gd33
-rw-r--r--client/map/items/strawberry.resbin0 -> 8522 bytes
-rw-r--r--client/map/items/strawberry.tscn10
-rw-r--r--client/map/tiles/fish_crate.tscn2
-rw-r--r--client/menu/theme/item_bubble_progress_style.tres6
-rw-r--r--client/player/item_bubble.gd13
-rw-r--r--client/player/item_bubble.tscn9
8 files changed, 66 insertions, 9 deletions
diff --git a/client/map/item_factory.gd b/client/map/item_factory.gd
index 8d768794..39e1e12d 100644
--- a/client/map/item_factory.gd
+++ b/client/map/item_factory.gd
@@ -108,5 +108,7 @@ static func produce(name: String, owned_by: Node3D) -> Item:
return Coconut.new(owned_by)
"coconut-foodprocessor":
return CoconutFoodProcessor.new(owned_by)
+ "strawberry":
+ return Strawberry.new(owned_by)
var t:
return GenericItem.new(owned_by, t)
diff --git a/client/map/items/strawberry.gd b/client/map/items/strawberry.gd
new file mode 100644
index 00000000..ef9abb64
--- /dev/null
+++ b/client/map/items/strawberry.gd
@@ -0,0 +1,33 @@
+# Hurry Curry! - a game about cooking
+# 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
+# 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 Strawberry
+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/strawberry.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/items/strawberry.res b/client/map/items/strawberry.res
new file mode 100644
index 00000000..46a723d1
--- /dev/null
+++ b/client/map/items/strawberry.res
Binary files differ
diff --git a/client/map/items/strawberry.tscn b/client/map/items/strawberry.tscn
new file mode 100644
index 00000000..24e7be41
--- /dev/null
+++ b/client/map/items/strawberry.tscn
@@ -0,0 +1,10 @@
+[gd_scene load_steps=2 format=3 uid="uid://df1xktleeqg3m"]
+
+[ext_resource type="ArrayMesh" uid="uid://c2uwqjxx7mnqp" path="res://map/items/strawberry.res" id="1_8dx1o"]
+
+[node name="Strawberry" type="Node3D"]
+
+[node name="Mesh" type="MeshInstance3D" parent="."]
+transform = Transform3D(-5.68248e-10, -0.013, 0, -5.68248e-10, 2.48389e-17, -0.013, 0.013, -5.68248e-10, -5.68248e-10, 0, 0.125, 0)
+mesh = ExtResource("1_8dx1o")
+skeleton = NodePath("")
diff --git a/client/map/tiles/fish_crate.tscn b/client/map/tiles/fish_crate.tscn
index 91d45f44..a096a000 100644
--- a/client/map/tiles/fish_crate.tscn
+++ b/client/map/tiles/fish_crate.tscn
@@ -3,7 +3,7 @@
[ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_uotdf"]
[ext_resource type="PackedScene" uid="uid://dom5n7h7l7sr8" path="res://map/items/fish.tscn" id="3_p6tbn"]
-[node name="LeekCrate" instance=ExtResource("1_uotdf")]
+[node name="FishCrate" instance=ExtResource("1_uotdf")]
[node name="Fish" parent="." index="1" instance=ExtResource("3_p6tbn")]
transform = Transform3D(-0.449443, -0.771467, -0.450378, 0.791587, -0.577595, 0.199436, -0.413994, -0.266878, 0.870279, -0.214561, 0.395904, -0.219162)
diff --git a/client/menu/theme/item_bubble_progress_style.tres b/client/menu/theme/item_bubble_progress_style.tres
new file mode 100644
index 00000000..69543f24
--- /dev/null
+++ b/client/menu/theme/item_bubble_progress_style.tres
@@ -0,0 +1,6 @@
+[gd_resource type="StyleBoxFlat" format=3 uid="uid://brw8uogdgx2gf"]
+
+[resource]
+resource_local_to_scene = true
+bg_color = Color(0.501961, 0, 0, 1)
+corner_radius_bottom_left = 32
diff --git a/client/player/item_bubble.gd b/client/player/item_bubble.gd
index 5a013053..927a5299 100644
--- a/client/player/item_bubble.gd
+++ b/client/player/item_bubble.gd
@@ -22,15 +22,20 @@ signal submit_message
@onready var progress: ProgressBar = $SubViewport/ItemMessage/VBoxContainer/ProgressBar
var item: Item
-
var timeout_remaining := 0.
+var timeout_initial := 0.
+var progress_style = preload("res://menu/theme/item_bubble_progress_style.tres")
+
+func _init():
+ progress_style = progress_style.duplicate()
-func set_item(t: String, timeout_initial: float, timeout_remaining_: float):
+func set_item(t: String, timeout_initial_: float, timeout_remaining_: float):
visible = true
item = ItemFactory.produce(t, base)
base.add_child(item)
timeout_remaining = timeout_remaining_
+ timeout_initial = timeout_initial_
progress.max_value = timeout_initial
progress.value = timeout_remaining
@@ -44,3 +49,7 @@ func _process(delta):
item.rotation.y += delta * TAU * .05
timeout_remaining -= delta
progress.value = timeout_remaining
+ var x: float = timeout_remaining / timeout_initial
+ progress_style.bg_color = Color(min((1-x) * 2, 1), min(x * 2, 1), 0.)
+ progress_style.corner_radius_bottom_right = max(32.-(1.-x)*320, 0)
+ progress.add_theme_stylebox_override("fill", progress_style)
diff --git a/client/player/item_bubble.tscn b/client/player/item_bubble.tscn
index 71359670..89cd89ad 100644
--- a/client/player/item_bubble.tscn
+++ b/client/player/item_bubble.tscn
@@ -1,6 +1,7 @@
[gd_scene load_steps=9 format=3 uid="uid://cj777mi5nok6c"]
[ext_resource type="Script" path="res://player/item_bubble.gd" id="1_84g24"]
+[ext_resource type="StyleBox" uid="uid://brw8uogdgx2gf" path="res://menu/theme/item_bubble_progress_style.tres" id="2_5qt7f"]
[sub_resource type="QuadMesh" id="QuadMesh_tlsxo"]
@@ -31,10 +32,6 @@ ambient_light_energy = 0.5
corner_radius_bottom_right = 32
corner_radius_bottom_left = 32
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x1tnr"]
-bg_color = Color(0.415945, 0.888786, 0, 1)
-corner_radius_bottom_left = 32
-
[node name="ItemBubble" type="MeshInstance3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
visible = false
@@ -86,7 +83,7 @@ environment = SubResource("Environment_iyxrx")
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
theme_override_styles/background = SubResource("StyleBoxFlat_ima0t")
-theme_override_styles/fill = SubResource("StyleBoxFlat_x1tnr")
+theme_override_styles/fill = ExtResource("2_5qt7f")
step = 0.0
-value = 82.94
+value = 100.0
show_percentage = false