diff options
Diffstat (limited to 'client/map')
434 files changed, 2363 insertions, 1225 deletions
diff --git a/client/map/auto_setup/environment_setup.gd b/client/map/auto_setup/environment_setup.gd index 7b6c5c8a..25d75b35 100644 --- a/client/map/auto_setup/environment_setup.gd +++ b/client/map/auto_setup/environment_setup.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -22,9 +22,9 @@ func set_sky(sky_name: String): environment.sky.sky_material = load("res://map/environment/presets/%s_sky.tres" % sky_name) func _ready(): - Settings.hook_changed_init("graphics.ssao", "main", func (x): environment.ssao_enabled = x) - Settings.hook_changed_init("graphics.gi", "main", func (x): environment.sdfgi_enabled = x == "sdfgi" and allow_sdfgi) - Settings.hook_changed_init("graphics.glow", "main", func (x): environment.glow_enabled = x) + Settings.hook_changed_init("graphics.ssao", self, func (x): environment.ssao_enabled = x) + Settings.hook_changed_init("graphics.gi", self, func (x): environment.sdfgi_enabled = x == "sdfgi" and allow_sdfgi) + Settings.hook_changed_init("graphics.glow", self, func (x): environment.glow_enabled = x) if !Global.on_vulkan(): environment.environment.tonemap_exposure = 0.5 diff --git a/client/map/auto_setup/light_setup.gd b/client/map/auto_setup/light_setup.gd index 0d71f54b..3056998e 100644 --- a/client/map/auto_setup/light_setup.gd +++ b/client/map/auto_setup/light_setup.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -20,7 +20,7 @@ class_name LightSetup var shadows_enabled: bool func _ready(): - Settings.hook_changed_init("graphics.shadows", "main", apply_settings) + Settings.hook_changed_init("graphics.shadows", self, apply_settings) func set_visible_(val: bool): if completely_disable_light_if_shadows_disabled and not shadows_enabled: diff --git a/client/map/auto_setup/sky_light_setup.gd b/client/map/auto_setup/sky_light_setup.gd index cb59fbf1..f888f79d 100644 --- a/client/map/auto_setup/sky_light_setup.gd +++ b/client/map/auto_setup/sky_light_setup.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/effects/angry/angry.gd b/client/map/effects/angry/angry.gd new file mode 100644 index 00000000..151507cd --- /dev/null +++ b/client/map/effects/angry/angry.gd @@ -0,0 +1,26 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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/>. +# +extends Effect + +@onready var failure = $Failure +@onready var angry_grunt: PlayRandom = $AngryGrunt +@onready var particles = $Particles + +func _ready() -> void: + delete_timer(5) + particles.emitting = true + angry_grunt.play_random() + failure.play() diff --git a/client/map/effects/angry/angry.gd.uid b/client/map/effects/angry/angry.gd.uid new file mode 100644 index 00000000..642ef1f2 --- /dev/null +++ b/client/map/effects/angry/angry.gd.uid @@ -0,0 +1 @@ +uid://dxiq14ilf5bk diff --git a/client/map/effects/angry/angry.tscn b/client/map/effects/angry/angry.tscn new file mode 100644 index 00000000..94c6473d --- /dev/null +++ b/client/map/effects/angry/angry.tscn @@ -0,0 +1,63 @@ +[gd_scene format=3 uid="uid://cvty1rwt52anq"] + +[ext_resource type="Texture2D" uid="uid://unjbxplj845n" path="res://map/effects/angry/angry.webp" id="1_5op6v"] +[ext_resource type="Script" uid="uid://dxiq14ilf5bk" path="res://map/effects/angry/angry.gd" id="1_m21dl"] +[ext_resource type="AudioStream" uid="uid://cv4isy6po6pqd" path="res://gui/resources/sounds/failure.ogg" id="2_vlpct"] +[ext_resource type="Script" uid="uid://n4jwod1jfuiv" path="res://audio/play_random.gd" id="3_o0kjt"] +[ext_resource type="AudioStream" uid="uid://c3gatgrsb0npf" path="res://player/sounds/angry1.ogg" id="4_wfdot"] +[ext_resource type="AudioStream" uid="uid://cty282m6ckt62" path="res://player/sounds/angry2.ogg" id="5_ym83o"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ysmnk"] +transparency = 1 +no_depth_test = true +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_texture = ExtResource("1_5op6v") +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="QuadMesh" id="QuadMesh_5nim7"] +material = SubResource("StandardMaterial3D_ysmnk") + +[sub_resource type="Curve" id="Curve_0rju1"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.51927, 1), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_lmymu"] +offsets = PackedFloat32Array(0, 0.711828, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[node name="Angry" type="Node3D" unique_id=1448163105] +script = ExtResource("1_m21dl") + +[node name="Particles" type="CPUParticles3D" parent="." unique_id=691382738] +emitting = false +amount = 5 +lifetime = 2.0 +one_shot = true +explosiveness = 1.0 +mesh = SubResource("QuadMesh_5nim7") +direction = Vector3(0, 1, 0) +spread = 30.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = 1.0 +initial_velocity_max = 1.5 +scale_amount_curve = SubResource("Curve_0rju1") +color_ramp = SubResource("Gradient_lmymu") + +[node name="Failure" type="AudioStreamPlayer" parent="." unique_id=1310258100] +stream = ExtResource("2_vlpct") +volume_db = -8.0 + +[node name="AngryGrunt" type="Node3D" parent="." unique_id=681036661] +script = ExtResource("3_o0kjt") +volume_db = -8.0 + +[node name="Angry1" type="AudioStreamPlayer3D" parent="AngryGrunt" unique_id=278427723] +stream = ExtResource("4_wfdot") + +[node name="Angry2" type="AudioStreamPlayer3D" parent="AngryGrunt" unique_id=1539145236] +stream = ExtResource("5_ym83o") diff --git a/client/map/effects/angry/angry.webp b/client/map/effects/angry/angry.webp Binary files differnew file mode 100644 index 00000000..866ba92c --- /dev/null +++ b/client/map/effects/angry/angry.webp diff --git a/client/map/effects/angry/angry.webp.import b/client/map/effects/angry/angry.webp.import new file mode 100644 index 00000000..eac70392 --- /dev/null +++ b/client/map/effects/angry/angry.webp.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://unjbxplj845n" +path="res://.godot/imported/angry.webp-fd51236e60c2d6e246b04296d67f5f19.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://map/effects/angry/angry.webp" +dest_files=["res://.godot/imported/angry.webp-fd51236e60c2d6e246b04296d67f5f19.ctex"] + +[params] + +compress/mode=1 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/client/map/tiles/bun_crate.gd b/client/map/effects/effect.gd index 10a69aa8..a7b08bae 100644 --- a/client/map/tiles/bun_crate.gd +++ b/client/map/effects/effect.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,10 @@ # 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 BunCrate -extends Crate +class_name Effect +extends Node3D -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/bun_crate.tscn").instantiate()) +var data: Variant +func delete_timer(delay: float): + await get_tree().create_timer(delay).timeout + queue_free() diff --git a/client/map/effects/effect.gd.uid b/client/map/effects/effect.gd.uid new file mode 100644 index 00000000..b9ddd1ee --- /dev/null +++ b/client/map/effects/effect.gd.uid @@ -0,0 +1 @@ +uid://ecsoi03822i5 diff --git a/client/map/effects/effect_factory.gd b/client/map/effects/effect_factory.gd new file mode 100644 index 00000000..246aca1f --- /dev/null +++ b/client/map/effects/effect_factory.gd @@ -0,0 +1,34 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 EffectFactory +extends Object + +const ANGRY = preload("res://map/effects/angry/angry.tscn") +const SATISFIED = preload("res://map/effects/satisfied/satisfied.tscn") +const POINTS = preload("res://map/effects/points/points.tscn") + +static func create_effect(p: Dictionary): + match p["effect"]: + "angry": return ANGRY.instantiate() + "satisfied": return SATISFIED.instantiate() + "points": + var points = POINTS.instantiate() + points.amount = p["amount"] + return points + _: push_error("unknown effect " + p["effect"]) + +static func play_effect(target: Node3D, p: Dictionary): + target.add_child(create_effect(p)) diff --git a/client/map/effects/effect_factory.gd.uid b/client/map/effects/effect_factory.gd.uid new file mode 100644 index 00000000..8a154ad0 --- /dev/null +++ b/client/map/effects/effect_factory.gd.uid @@ -0,0 +1 @@ +uid://w2l71qjjoshv diff --git a/client/map/effects/points/points.gd b/client/map/effects/points/points.gd new file mode 100644 index 00000000..35894902 --- /dev/null +++ b/client/map/effects/points/points.gd @@ -0,0 +1,30 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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/>. +# +extends Effect + +var amount: int + +@onready var points: CPUParticles3D = $Points +@onready var amount_label: Label = $SubViewport/Control/AmountLabel + +func _ready(): + delete_timer(5) + var num_string: String = str(amount) + if amount >= 0: + num_string = "+" + num_string + points.color = Color(.1,.6,.1) if amount >= 0 else Color(.6,.1,.1) + amount_label.text = num_string + points.emitting = true diff --git a/client/map/effects/points/points.gd.uid b/client/map/effects/points/points.gd.uid new file mode 100644 index 00000000..2bf5b594 --- /dev/null +++ b/client/map/effects/points/points.gd.uid @@ -0,0 +1 @@ +uid://528xphnsg62u diff --git a/client/map/effects/points/points.tscn b/client/map/effects/points/points.tscn new file mode 100644 index 00000000..57e11ddf --- /dev/null +++ b/client/map/effects/points/points.tscn @@ -0,0 +1,90 @@ +[gd_scene format=3 uid="uid://x00adyx4umft"] + +[ext_resource type="Script" uid="uid://528xphnsg62u" path="res://map/effects/points/points.gd" id="1_wveft"] +[ext_resource type="AudioStream" uid="uid://camy77x26mmpv" path="res://gui/resources/sounds/success.ogg" id="2_ixmsm"] +[ext_resource type="FontFile" uid="uid://bo4vh5xkpvrh1" path="res://gui/resources/fonts/font-sansita-swashed.woff2" id="3_op1cb"] + +[sub_resource type="FontVariation" id="FontVariation_u8wnh"] +base_font = ExtResource("3_op1cb") +variation_opentype = { +2003265652: 600 +} + +[sub_resource type="ViewportTexture" id="ViewportTexture_7hygc"] +viewport_path = NodePath("SubViewport") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uepl5"] +resource_local_to_scene = true +render_priority = 1 +transparency = 1 +no_depth_test = true +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_texture = SubResource("ViewportTexture_7hygc") +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="QuadMesh" id="QuadMesh_u8wnh"] +resource_local_to_scene = true +material = SubResource("StandardMaterial3D_uepl5") + +[sub_resource type="Curve" id="Curve_0rju1"] +_data = [Vector2(0, 0), 0.0, 5.0, 0, 0, Vector2(0.49840245, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -5.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="Gradient" id="Gradient_uepl5"] +offsets = PackedFloat32Array(0, 0.26672226, 0.4904026, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[node name="Points" type="Node3D" unique_id=1800089616] +script = ExtResource("1_wveft") + +[node name="Success" type="AudioStreamPlayer" parent="." unique_id=710129954] +stream = ExtResource("2_ixmsm") + +[node name="SubViewport" type="SubViewport" parent="." unique_id=2117836549] +transparent_bg = true +size = Vector2i(256, 256) + +[node name="Control" type="Control" parent="SubViewport" unique_id=1691084866] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="AmountLabel" type="Label" parent="SubViewport/Control" unique_id=358131106] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_colors/font_outline_color = Color(0.1254902, 0.1254902, 0.1254902, 1) +theme_override_constants/outline_size = 48 +theme_override_fonts/font = SubResource("FontVariation_u8wnh") +theme_override_font_sizes/font_size = 165 +text = "+5" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Points" type="CPUParticles3D" parent="." unique_id=1697923795] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +emitting = false +amount = 1 +one_shot = true +explosiveness = 1.0 +mesh = SubResource("QuadMesh_u8wnh") +direction = Vector3(0, -1, 0) +spread = 0.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = 0.01 +initial_velocity_max = 0.01 +scale_amount_min = 0.65 +scale_amount_max = 0.65 +scale_amount_curve = SubResource("Curve_0rju1") +color_ramp = SubResource("Gradient_uepl5") diff --git a/client/map/tiles/book.gd b/client/map/effects/satisfied/satisfied.gd index 6a48752a..67cbb4d2 100644 --- a/client/map/tiles/book.gd +++ b/client/map/effects/satisfied/satisfied.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,12 @@ # 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 Book -extends CounterBase +extends Effect -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/book.tscn").instantiate()) +@onready var success = $Success +@onready var stars = $Stars + +func _ready(): + delete_timer(5) + stars.emitting = true + success.play() diff --git a/client/map/effects/satisfied/satisfied.gd.uid b/client/map/effects/satisfied/satisfied.gd.uid new file mode 100644 index 00000000..904996ad --- /dev/null +++ b/client/map/effects/satisfied/satisfied.gd.uid @@ -0,0 +1 @@ +uid://dsepgasa5ki43 diff --git a/client/map/effects/satisfied/satisfied.tscn b/client/map/effects/satisfied/satisfied.tscn new file mode 100644 index 00000000..bbd337c4 --- /dev/null +++ b/client/map/effects/satisfied/satisfied.tscn @@ -0,0 +1,50 @@ +[gd_scene format=3 uid="uid://yaed1vnhd0aa"] + +[ext_resource type="AudioStream" uid="uid://camy77x26mmpv" path="res://gui/resources/sounds/success.ogg" id="1_rxp1p"] +[ext_resource type="Script" uid="uid://dsepgasa5ki43" path="res://map/effects/satisfied/satisfied.gd" id="1_sujye"] +[ext_resource type="Texture2D" uid="uid://b10goh4dsa3b0" path="res://map/effects/satisfied/star.webp" id="1_v8q3r"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d8uy0"] +transparency = 1 +no_depth_test = true +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_texture = ExtResource("1_v8q3r") +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="QuadMesh" id="QuadMesh_d0lru"] +material = SubResource("StandardMaterial3D_d8uy0") + +[sub_resource type="Curve" id="Curve_0rju1"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.51927, 1), 0.0, 0.0, 0, 0] +point_count = 2 + +[sub_resource type="Gradient" id="Gradient_lmymu"] +offsets = PackedFloat32Array(0, 0.711828, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[node name="Satisfied" type="Node3D" unique_id=1800089616] +script = ExtResource("1_sujye") + +[node name="Success" type="AudioStreamPlayer" parent="." unique_id=710129954] +stream = ExtResource("1_rxp1p") + +[node name="Stars" type="CPUParticles3D" parent="." unique_id=1697923795] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) +emitting = false +amount = 5 +lifetime = 2.0 +one_shot = true +explosiveness = 1.0 +mesh = SubResource("QuadMesh_d0lru") +direction = Vector3(0, 1, 0) +spread = 30.0 +gravity = Vector3(0, 0, 0) +initial_velocity_min = 1.0 +initial_velocity_max = 1.5 +scale_amount_curve = SubResource("Curve_0rju1") +color_ramp = SubResource("Gradient_lmymu") diff --git a/client/map/effects/satisfied/star.webp b/client/map/effects/satisfied/star.webp Binary files differnew file mode 100644 index 00000000..c1d2e8ff --- /dev/null +++ b/client/map/effects/satisfied/star.webp diff --git a/client/map/effects/satisfied/star.webp.import b/client/map/effects/satisfied/star.webp.import new file mode 100644 index 00000000..2ac435b7 --- /dev/null +++ b/client/map/effects/satisfied/star.webp.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b10goh4dsa3b0" +path="res://.godot/imported/star.webp-74beadf67879cd7f7736819dd8ef7e05.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://map/effects/satisfied/star.webp" +dest_files=["res://.godot/imported/star.webp-74beadf67879cd7f7736819dd8ef7e05.ctex"] + +[params] + +compress/mode=1 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/client/map/environment/environment.tscn b/client/map/environment/environment.tscn index fe8bdcbc..aaa4ed55 100644 --- a/client/map/environment/environment.tscn +++ b/client/map/environment/environment.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=3 uid="uid://nroo08m5og0"] +[gd_scene format=3 uid="uid://nroo08m5og0"] [ext_resource type="Script" uid="uid://drv5el01y7fr" path="res://map/environment/environment.gd" id="1_qy481"] [ext_resource type="PackedScene" uid="uid://cb4ic3ssk4r8r" path="res://map/environment/world_environment.tscn" id="2_68o16"] @@ -58,25 +58,25 @@ material = SubResource("StandardMaterial3D_ig8qu") radius = 0.03 height = 0.06 -[node name="Environment" type="Node3D"] +[node name="Environment" type="Node3D" unique_id=857364835] script = ExtResource("1_qy481") -[node name="Rain" type="GPUParticles3D" parent="."] +[node name="Rain" type="GPUParticles3D" parent="." unique_id=1938136108] emitting = false amount = 500 process_material = SubResource("ParticleProcessMaterial_fyrr8") draw_pass_1 = SubResource("CapsuleMesh_6kss1") -[node name="Wind" type="GPUParticles3D" parent="."] +[node name="Wind" type="GPUParticles3D" parent="." unique_id=1893429122] emitting = false amount = 150 lifetime = 5.0 process_material = SubResource("ParticleProcessMaterial_pyn6b") draw_pass_1 = SubResource("SphereMesh_4trvf") -[node name="WorldEnvironment" parent="." instance=ExtResource("2_68o16")] +[node name="WorldEnvironment" parent="." unique_id=976396102 instance=ExtResource("2_68o16")] -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1587208474] transform = Transform3D(-0.413104, 0.834517, -0.364591, 0, 0.400349, 0.916363, 0.910684, 0.378553, -0.165386, 0, 0, 0) shadow_enabled = true script = ExtResource("3_fcjh2") diff --git a/client/map/environment/world_environment.tscn b/client/map/environment/world_environment.tscn index e3f6c0f7..dfa33585 100644 --- a/client/map/environment/world_environment.tscn +++ b/client/map/environment/world_environment.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://cb4ic3ssk4r8r"] +[gd_scene format=3 uid="uid://cb4ic3ssk4r8r"] [ext_resource type="Script" uid="uid://cwg7wympevxs4" path="res://map/auto_setup/environment_setup.gd" id="1_iatcp"] [ext_resource type="Material" uid="uid://617pq1rgdgbn" path="res://map/environment/presets/day_sky.tres" id="1_jk80v"] @@ -14,6 +14,6 @@ ssao_enabled = true sdfgi_use_occlusion = true sdfgi_energy = 2.0 -[node name="WorldEnvironment" type="WorldEnvironment"] +[node name="WorldEnvironment" type="WorldEnvironment" unique_id=1422427611] environment = SubResource("Environment_8cwcp") script = ExtResource("1_iatcp") diff --git a/client/map/item_factory.gd b/client/map/item_factory.gd index 56842a47..5fccb526 100644 --- a/client/map/item_factory.gd +++ b/client/map/item_factory.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -23,15 +23,21 @@ class ItemName: func _init(raw_name: String): raw = raw_name - var c = Array(raw_name.split(":")) + var c = Array(raw_name.split(":", false, 1)) name = c[0] - contents = c[1].split(",") if c.size() > 1 else [] + if c.size() == 1: + contents = [] + elif not c[1].contains(":"): + contents = c[1].split(",") + else: + contents = [c[1]] # Don't parse it, handle it in the item instead -static func produce(raw_name: String, owned_by: Node3D) -> Item: +static func produce(raw_name: String, owned_by: Node3D, scale := 1.) -> Item: var name = ItemName.new(raw_name) var item: Item = produce_inner(name, owned_by) item.add_contents(name.contents) item.item_name = raw_name + item.scale = Vector3(scale, scale, scale) return item static func produce_inner(item: ItemName, owned_by: Node3D) -> Item: @@ -46,12 +52,14 @@ static func produce_inner(item: ItemName, owned_by: Node3D) -> Item: "burned": return Burned.new(owned_by) "coconut": return GenericItem.new(owned_by, preload("res://map/items/coconut.tscn")) "dough": return GenericItem.new(owned_by, preload("res://map/items/dough.tscn")) + "doughnut": return GenericItem.new(owned_by, preload("res://map/items/donut/glazed-donut.tscn")) "fish": return GenericItem.new(owned_by, preload("res://map/items/fish.tscn")) "flour": return GenericItem.new(owned_by, preload("res://map/items/flour.tscn")) "leek": return GenericItem.new(owned_by, preload("res://map/items/leek.tscn")) "mushroom": return GenericItem.new(owned_by, preload("res://map/items/mushroom.tscn")) + "sliced-mushroom": return GenericItem.new(owned_by, preload("res://map/items/sliced_mushroom.tscn")) "noodles": return GenericItem.new(owned_by, preload("res://map/items/noodles.tscn")) - "rolled-dough": return GenericItem.new(owned_by, preload("res://map/items/rolled_dough.tscn")) + "rolled-dough": return RolledDough.new(owned_by) "strawberry-mochi": return Mochi.new(owned_by, Color(.98, .70, .75)) "nigiri": return GenericItem.new(owned_by, preload("res://map/items/nigiri.tscn")) "steak": return Cuttable.new(owned_by, preload("res://map/items/steak.tscn"), Color(0.74, 0.192, 0.22)) @@ -73,10 +81,10 @@ static func produce_inner(item: ItemName, owned_by: Node3D) -> Item: var plate = Plate.new(owned_by) plate.add_contents(["dirt"]) return plate - "pot": return Pot.new(owned_by) "basket": return Basket.new(owned_by) "pan": return Pan.new(owned_by) + "pizza": return Pizza.new(owned_by) "foodprocessor": return FoodProcessor.new(owned_by) "glass": return Glass.new(owned_by) "plate": return Plate.new(owned_by) diff --git a/client/map/items/basket.gd b/client/map/items/basket.gd index df37b5dd..4da74aca 100644 --- a/client/map/items/basket.gd +++ b/client/map/items/basket.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -26,11 +26,15 @@ func _init(owned_by_: Node3D): base.add_child(bubbles) base.position.z = -.075 +func is_round(): return false + func add_contents(contents: Array[String]): for i in contents: match i: "french-fries": base.add_child(load("res://map/items/french_fries_basket.tscn").instantiate()) + "dough": + base.add_child(load("res://map/items/donut/donut.tscn").instantiate()) _: super([i]) diff --git a/client/map/items/basket.tscn b/client/map/items/basket.tscn index 4a3e046d..628e4bd6 100644 --- a/client/map/items/basket.tscn +++ b/client/map/items/basket.tscn @@ -1,9 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bu0o7coy26rwx"] +[gd_scene format=3 uid="uid://bu0o7coy26rwx"] [ext_resource type="ArrayMesh" uid="uid://bqwi4qvtgjlk5" path="res://map/items/deep_fryer_basket.res" id="1_7yj46"] -[node name="Basket" type="Node3D"] +[node name="Basket" type="Node3D" unique_id=606292015] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1069269296] transform = Transform3D(-0.75, 0, -6.556708e-08, 0, 0.75, 0, 6.556708e-08, 0, -0.75, 0, 0, 0) mesh = ExtResource("1_7yj46") diff --git a/client/map/items/bun.gd b/client/map/items/bun.gd index 38fd582d..0423d7e6 100644 --- a/client/map/items/bun.gd +++ b/client/map/items/bun.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/bun.res b/client/map/items/bun.res Binary files differindex 3f1821df..ec6cbe4e 100644 --- a/client/map/items/bun.res +++ b/client/map/items/bun.res diff --git a/client/map/items/bun.tscn b/client/map/items/bun.tscn index 88483ee3..650a1efb 100644 --- a/client/map/items/bun.tscn +++ b/client/map/items/bun.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dgifus08aktx0"] +[gd_scene format=3 uid="uid://dgifus08aktx0"] [ext_resource type="ArrayMesh" uid="uid://ke5s5itvrqce" path="res://map/items/bun.res" id="1_limvy"] -[node name="Bun" type="Node3D"] +[node name="Bun" type="Node3D" unique_id=1561269631] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=338156627] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_limvy") -skeleton = NodePath("") diff --git a/client/map/items/burned.gd b/client/map/items/burned.gd index 2646a551..2ed456a6 100644 --- a/client/map/items/burned.gd +++ b/client/map/items/burned.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/burned.res b/client/map/items/burned.res Binary files differindex 8305ca6e..3cff4081 100644 --- a/client/map/items/burned.res +++ b/client/map/items/burned.res diff --git a/client/map/items/burned.tscn b/client/map/items/burned.tscn index 241bbf77..a37d45b8 100644 --- a/client/map/items/burned.tscn +++ b/client/map/items/burned.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://b48ximtiqbwvo"] +[gd_scene format=3 uid="uid://b48ximtiqbwvo"] [ext_resource type="ArrayMesh" uid="uid://bpndpup4f6g6v" path="res://map/items/burned.res" id="1_wu5eo"] -[node name="Burned" type="Node3D"] +[node name="Burned" type="Node3D" unique_id=2043673784] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1570232437] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_wu5eo") -skeleton = NodePath("") diff --git a/client/map/items/cheese.res b/client/map/items/cheese.res Binary files differindex eac705e5..1936b0c8 100644 --- a/client/map/items/cheese.res +++ b/client/map/items/cheese.res diff --git a/client/map/items/cheese.tscn b/client/map/items/cheese.tscn index 515262c8..9702b324 100644 --- a/client/map/items/cheese.tscn +++ b/client/map/items/cheese.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://0lbjf2sie4rk"] +[gd_scene format=3 uid="uid://0lbjf2sie4rk"] [ext_resource type="ArrayMesh" uid="uid://cshqtme8isvmw" path="res://map/items/cheese.res" id="1_p24nf"] -[node name="Cheese" type="Node3D"] +[node name="Cheese" type="Node3D" unique_id=93481419] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=595142792] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_p24nf") -skeleton = NodePath("") diff --git a/client/map/items/cheese_bit.res b/client/map/items/cheese_bit.res Binary files differnew file mode 100644 index 00000000..78c32494 --- /dev/null +++ b/client/map/items/cheese_bit.res diff --git a/client/map/items/coconut.res b/client/map/items/coconut.res Binary files differindex 63778607..0719fec4 100644 --- a/client/map/items/coconut.res +++ b/client/map/items/coconut.res diff --git a/client/map/items/coconut.tscn b/client/map/items/coconut.tscn index 679bf9b5..19fb7b80 100644 --- a/client/map/items/coconut.tscn +++ b/client/map/items/coconut.tscn @@ -1,10 +1,16 @@ -[gd_scene load_steps=2 format=3 uid="uid://cmsirxgv7iqnk"] +[gd_scene format=3 uid="uid://cmsirxgv7iqnk"] [ext_resource type="ArrayMesh" uid="uid://djenv8k2nnqyt" path="res://map/items/coconut.res" id="1_c4upd"] +[ext_resource type="Texture2D" uid="uid://dgcs4wkxsxe6a" path="res://map/textures/palette.png" id="2_e3g14"] -[node name="Coconut" type="Node3D"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qtcu3"] +resource_name = "Material.001" +cull_mode = 2 +albedo_texture = ExtResource("2_e3g14") -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Coconut" type="Node3D" unique_id=1082368642] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1732359079] transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0.2, 0) mesh = ExtResource("1_c4upd") -skeleton = NodePath("") +surface_material_override/0 = SubResource("StandardMaterial3D_qtcu3") diff --git a/client/map/items/cooked_cheese_pizza.tscn b/client/map/items/cooked_cheese_pizza.tscn new file mode 100644 index 00000000..de677b2a --- /dev/null +++ b/client/map/items/cooked_cheese_pizza.tscn @@ -0,0 +1,33 @@ +[gd_scene format=3 uid="uid://cl1etmr26p262"] + +[ext_resource type="ArrayMesh" uid="uid://cwstqugiw76tc" path="res://map/items/pizza.res" id="1_vnyro"] + +[sub_resource type="Gradient" id="Gradient_xogo6"] +offsets = PackedFloat32Array(0, 0.14086306, 0.84237576, 1) +colors = PackedColorArray(0.52, 0.104000024, 0, 1, 0.7294118, 0.23921569, 0.11764706, 1, 1, 0.7391868, 0.13702077, 1, 1, 0.88600004, 0.43, 1) + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_7am5t"] +frequency = 0.0139 +fractal_octaves = 3 +fractal_gain = 0.2 + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_gf4r2"] +width = 256 +height = 256 +noise = SubResource("FastNoiseLite_7am5t") +color_ramp = SubResource("Gradient_xogo6") + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vnyro"] +resource_name = "Material.001" +cull_mode = 2 +albedo_texture = SubResource("NoiseTexture2D_gf4r2") +uv1_scale = Vector3(0.5, 0.5, 0.5) +uv1_offset = Vector3(0.5, 0, 0.5) +uv1_triplanar = true + +[node name="CookedCheesePizza" type="Node3D" unique_id=1618397990] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=2039708425] +transform = Transform3D(0.3, 0, 0, 0, 0.05, 0, 0, 0, 0.3, 0, 0.05, 0) +mesh = ExtResource("1_vnyro") +surface_material_override/1 = SubResource("StandardMaterial3D_vnyro") diff --git a/client/map/items/cooked_noodles.res b/client/map/items/cooked_noodles.res Binary files differindex f98b4976..4ba4012c 100644 --- a/client/map/items/cooked_noodles.res +++ b/client/map/items/cooked_noodles.res diff --git a/client/map/items/cooked_noodles.tscn b/client/map/items/cooked_noodles.tscn index 419e5eaa..895e1edd 100644 --- a/client/map/items/cooked_noodles.tscn +++ b/client/map/items/cooked_noodles.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://ct4f8jtnvfn56"] +[gd_scene format=3 uid="uid://ct4f8jtnvfn56"] [ext_resource type="ArrayMesh" uid="uid://cwhr8luqwpo7a" path="res://map/items/cooked_noodles.res" id="1_ahfxi"] -[node name="CookedNoodles" type="Node3D"] +[node name="CookedNoodles" type="Node3D" unique_id=663842765] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=675901793] transform = Transform3D(0.378, 0, 0, 0, 0.378, 0, 0, 0, 0.378, -0.027, 0, 0.095) mesh = ExtResource("1_ahfxi") -skeleton = NodePath("") diff --git a/client/map/items/cooked_rice_fill.tscn b/client/map/items/cooked_rice_fill.tscn index 825e1f63..d55ee61e 100644 --- a/client/map/items/cooked_rice_fill.tscn +++ b/client/map/items/cooked_rice_fill.tscn @@ -1,14 +1,14 @@ -[gd_scene load_steps=3 format=3 uid="uid://c17tdqcs3a33i"] +[gd_scene format=3 uid="uid://c17tdqcs3a33i"] [ext_resource type="PackedScene" uid="uid://do4qxd1d1x7cc" path="res://map/items/rice_content.tscn" id="1_mteor"] -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vr3i3"] +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wuevv"] resource_local_to_scene = true albedo_color = Color(0.933333, 0.933333, 0.666667, 1) -[node name="CookedRiceFIll" type="Node3D"] +[node name="CookedRiceFIll" type="Node3D" unique_id=1097928494] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -[node name="RiceContent" parent="." instance=ExtResource("1_mteor")] +[node name="RiceContent" parent="." unique_id=1357077206 instance=ExtResource("1_mteor")] transform = Transform3D(0.3, 0, 0, 0, 0.15, 0, 0, 0, 0.562, 0.194, 0.07, 0) -surface_material_override/0 = SubResource("StandardMaterial3D_vr3i3") +surface_material_override/0 = SubResource("StandardMaterial3D_wuevv") diff --git a/client/map/items/cut.tscn b/client/map/items/cut.tscn index d465d788..69fad628 100644 --- a/client/map/items/cut.tscn +++ b/client/map/items/cut.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://bbjair4iw1841"] +[gd_scene format=3 uid="uid://bbjair4iw1841"] [sub_resource type="Curve" id="Curve_3m5vp"] _data = [Vector2(0, 0), 0.0, 9.741706, 0, 0, Vector2(0.24820146, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), -1.9750195, 0.0, 0, 0] @@ -20,7 +20,7 @@ curve = SubResource("Curve_3m5vp") _data = [Vector2(0.7027972, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] point_count = 2 -[node name="Cut" type="CPUParticles3D"] +[node name="Cut" type="CPUParticles3D" unique_id=1642709239] cast_shadow = 0 emitting = false amount = 15 diff --git a/client/map/items/cuttable.gd b/client/map/items/cuttable.gd index e106a96d..4eb48e19 100644 --- a/client/map/items/cuttable.gd +++ b/client/map/items/cuttable.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/deep_fryer_basket.res b/client/map/items/deep_fryer_basket.res Binary files differindex 40f1c05d..f31999e7 100644 --- a/client/map/items/deep_fryer_basket.res +++ b/client/map/items/deep_fryer_basket.res diff --git a/client/map/items/deep_frying.tscn b/client/map/items/deep_frying.tscn index 81a4ccfb..1cf5de19 100644 --- a/client/map/items/deep_frying.tscn +++ b/client/map/items/deep_frying.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://c2g5ncvn45263"] +[gd_scene format=3 uid="uid://c2g5ncvn45263"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3xkdk"] albedo_color = Color(0.9153118, 0.62961817, 0.44200557, 1) @@ -9,7 +9,7 @@ material = SubResource("StandardMaterial3D_3xkdk") radius = 0.1 height = 0.2 -[node name="DeepFrying" type="CPUParticles3D"] +[node name="DeepFrying" type="CPUParticles3D" unique_id=1522889960] emitting = false mesh = SubResource("SphereMesh_iygiy") emission_shape = 6 diff --git a/client/map/items/dirt.res b/client/map/items/dirt.res Binary files differindex 3043f8d8..a9b64efe 100644 --- a/client/map/items/dirt.res +++ b/client/map/items/dirt.res diff --git a/client/map/items/dirt.tscn b/client/map/items/dirt.tscn index 18956b3d..e3d1cdc1 100644 --- a/client/map/items/dirt.tscn +++ b/client/map/items/dirt.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cluraed43qoeb"] +[gd_scene format=3 uid="uid://cluraed43qoeb"] [ext_resource type="ArrayMesh" uid="uid://dla7bxb6byk48" path="res://map/items/dirt.res" id="1_xmsre"] -[node name="Dirt" type="Node3D"] +[node name="Dirt" type="Node3D" unique_id=913711020] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=114452767] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.015, 0) mesh = ExtResource("1_xmsre") -skeleton = NodePath("") diff --git a/client/map/items/donut/donut-dough.res b/client/map/items/donut/donut-dough.res Binary files differnew file mode 100644 index 00000000..cae6e975 --- /dev/null +++ b/client/map/items/donut/donut-dough.res diff --git a/client/map/items/donut/donut-glaze.res b/client/map/items/donut/donut-glaze.res Binary files differnew file mode 100644 index 00000000..6a8dac5b --- /dev/null +++ b/client/map/items/donut/donut-glaze.res diff --git a/client/map/items/donut/donut.tscn b/client/map/items/donut/donut.tscn new file mode 100644 index 00000000..6815828c --- /dev/null +++ b/client/map/items/donut/donut.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://cvnkxd1tslqvf"] + +[ext_resource type="ArrayMesh" uid="uid://cy1ifpobr21c0" path="res://map/items/donut/donut-dough.res" id="1_65l5f"] +[ext_resource type="Material" uid="uid://cg7o7rn06bve1" path="res://map/items/dough_material.tres" id="2_65l5f"] + +[node name="Donut" type="Node3D" unique_id=517668687] + +[node name="Dough" type="MeshInstance3D" parent="." unique_id=697273469] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0, 0, 0) +mesh = ExtResource("1_65l5f") +surface_material_override/0 = ExtResource("2_65l5f") diff --git a/client/map/items/donut/glazed-donut.tscn b/client/map/items/donut/glazed-donut.tscn new file mode 100644 index 00000000..913a9ab5 --- /dev/null +++ b/client/map/items/donut/glazed-donut.tscn @@ -0,0 +1,14 @@ +[gd_scene format=3 uid="uid://dglrxvp3126g4"] + +[ext_resource type="ArrayMesh" uid="uid://cy1ifpobr21c0" path="res://map/items/donut/donut-dough.res" id="1_1ef7l"] +[ext_resource type="ArrayMesh" uid="uid://dauwp2akjkafa" path="res://map/items/donut/donut-glaze.res" id="2_1jama"] + +[node name="Donut" type="Node3D" unique_id=1096172423] + +[node name="Dough" type="MeshInstance3D" parent="." unique_id=218737516] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0, 0, 0) +mesh = ExtResource("1_1ef7l") + +[node name="Glaze" type="MeshInstance3D" parent="." unique_id=267596717] +transform = Transform3D(0.35, 0, 0, 0, 0.35, 0, 0, 0, 0.35, 0, 0, 0) +mesh = ExtResource("2_1jama") diff --git a/client/map/items/dough.res b/client/map/items/dough.res Binary files differindex 9ccb0c48..7df7ca56 100644 --- a/client/map/items/dough.res +++ b/client/map/items/dough.res diff --git a/client/map/items/dough.tscn b/client/map/items/dough.tscn index 73f8c494..6ffec7a5 100644 --- a/client/map/items/dough.tscn +++ b/client/map/items/dough.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dw5gdtilcsdcc"] +[gd_scene format=3 uid="uid://dw5gdtilcsdcc"] [ext_resource type="ArrayMesh" uid="uid://duv7fs8jmwjn5" path="res://map/items/dough.res" id="1_fe02r"] -[node name="Dough" type="Node3D"] +[node name="Dough" type="Node3D" unique_id=1817119001] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1090567646] transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0) mesh = ExtResource("1_fe02r") -skeleton = NodePath("") diff --git a/client/map/items/fish.res b/client/map/items/fish.res Binary files differindex 65f099bb..e75acfb0 100644 --- a/client/map/items/fish.res +++ b/client/map/items/fish.res diff --git a/client/map/items/fish.tscn b/client/map/items/fish.tscn index 2ca59cf9..6ec64459 100644 --- a/client/map/items/fish.tscn +++ b/client/map/items/fish.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dom5n7h7l7sr8"] +[gd_scene format=3 uid="uid://dom5n7h7l7sr8"] [ext_resource type="ArrayMesh" uid="uid://dgsvwyghdj0es" path="res://map/items/fish.res" id="1_ysgnj"] -[node name="Fish" type="Node3D"] +[node name="Fish" type="Node3D" unique_id=291512971] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=120424767] transform = Transform3D(-4.37114e-10, 0.01, 0, -0.01, -4.37114e-10, 0, 0, 0, 0.01, 0, 0.0754571, 0) mesh = ExtResource("1_ysgnj") -skeleton = NodePath("") diff --git a/client/map/items/flour.res b/client/map/items/flour.res Binary files differindex 19f2db82..f04dd757 100644 --- a/client/map/items/flour.res +++ b/client/map/items/flour.res diff --git a/client/map/items/flour.tscn b/client/map/items/flour.tscn index c283eae5..6557cd24 100644 --- a/client/map/items/flour.tscn +++ b/client/map/items/flour.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dgo8cknr1o6ml"] +[gd_scene format=3 uid="uid://dgo8cknr1o6ml"] [ext_resource type="ArrayMesh" uid="uid://b76c6o88lkei2" path="res://map/items/flour.res" id="1_55ndm"] -[node name="Flour" type="Node3D"] +[node name="Flour" type="Node3D" unique_id=540926944] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=191664914] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_55ndm") -skeleton = NodePath("") diff --git a/client/map/items/food_processor.gd b/client/map/items/food_processor.gd index 0a78904f..fab8bd48 100644 --- a/client/map/items/food_processor.gd +++ b/client/map/items/food_processor.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,7 +16,6 @@ class_name FoodProcessor extends Item -var time := 0. var processing: CPUParticles3D = load("res://map/items/processing.tscn").instantiate() func _init(owned_by_: Node3D): @@ -25,6 +24,8 @@ func _init(owned_by_: Node3D): add_child(load("res://map/items/food_processor.tscn").instantiate()) add_child(processing) +func is_round(): return false + func add_contents(contents: Array[String]): for i in contents: match i: @@ -34,36 +35,40 @@ func add_contents(contents: Array[String]): add_child(FoodProcessorFill.new(self, Color(1.,1.,.8))) "rice": processing.color = Color(1.,1.,.8) - base.add_child(load("res://map/items/rice.tscn").instantiate()) + super([i]) "flour": processing.color = Color(.9, .9, .9) - base.add_child(load("res://map/items/flour.tscn").instantiate()) + super([i]) + "mushroom": + processing.color = Color(0.596, 0.341, 0.259) + super([i]) "dough": add_child(FoodProcessorFill.new(self, Color8(200, 180, 160))) "coconut": add_child(FoodProcessorFill.new(self, Color(.8, .5, .4))) - base.add_child(load("res://map/items/coconut.tscn").instantiate()) + super([i]) "strawberry": processing.color = Color(.9, .0, .0) - base.add_child(load("res://map/items/strawberry.tscn").instantiate()) + super([i]) "strawberry-shake": add_child(FoodProcessorFill.new(self, Color8(250, 140, 180))) "strawberry-icecream": add_child(FoodProcessorFill.new(self, Color8(250, 180, 210))) "strawberry-puree": add_child(FoodProcessorFill.new(self, Color8(200, 80, 80))) + "processed-mushroom": + add_child(FoodProcessorFill.new(self, Color(0.596, 0.341, 0.259))) "tomato": processing.color = Color(1.,0.,0.) - base.add_child(load("res://map/items/tomato.tscn").instantiate()) + super([i]) "tomato-juice": add_child(FoodProcessorFill.new(self, Color(1., .0, .0))) _: super([i]) func _process(delta: float): super(delta) - time += delta - processing.rotation.y += time * TAU - base.rotation.y += time * TAU + processing.rotation.y += delta * TAU * 10 + base.rotation.y += delta * TAU * 15 func progress(position_: float, speed: float, warn: bool): super(position_, speed, warn) diff --git a/client/map/items/food_processor.res b/client/map/items/food_processor.res Binary files differindex 726a7868..3b85f78b 100644 --- a/client/map/items/food_processor.res +++ b/client/map/items/food_processor.res diff --git a/client/map/items/food_processor.tscn b/client/map/items/food_processor.tscn index bb95d580..8082930a 100644 --- a/client/map/items/food_processor.tscn +++ b/client/map/items/food_processor.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://daxjpvycs85ec"] +[gd_scene format=3 uid="uid://daxjpvycs85ec"] [ext_resource type="ArrayMesh" uid="uid://bpjl5dlst6yg" path="res://map/items/food_processor.res" id="1_65ilg"] -[node name="FoodProcessor" type="Node3D"] +[node name="FoodProcessor" type="Node3D" unique_id=1181054569] -[node name="FoodProcessor" type="MeshInstance3D" parent="."] +[node name="FoodProcessor" type="MeshInstance3D" parent="." unique_id=68402722] transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, 0.3, 0) mesh = ExtResource("1_65ilg") -skeleton = NodePath("") diff --git a/client/map/items/food_processor_fill.gd b/client/map/items/food_processor_fill.gd index 25d634da..ed695a99 100644 --- a/client/map/items/food_processor_fill.gd +++ b/client/map/items/food_processor_fill.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/food_processor_fill.res b/client/map/items/food_processor_fill.res Binary files differindex 7511cc75..46dc32a0 100644 --- a/client/map/items/food_processor_fill.res +++ b/client/map/items/food_processor_fill.res diff --git a/client/map/items/food_processor_fill.tscn b/client/map/items/food_processor_fill.tscn index fa85e40a..21d74c57 100644 --- a/client/map/items/food_processor_fill.tscn +++ b/client/map/items/food_processor_fill.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://di5nq2vgvostp"] +[gd_scene format=3 uid="uid://di5nq2vgvostp"] [ext_resource type="ArrayMesh" uid="uid://vkd0ty7khthl" path="res://map/items/food_processor_fill.res" id="1_tcr3k"] @@ -6,8 +6,7 @@ resource_local_to_scene = true cull_mode = 1 -[node name="FoodProcessorFill" type="MeshInstance3D"] +[node name="FoodProcessorFill" type="MeshInstance3D" unique_id=2135483159] transform = Transform3D(0.15, 0, 0, 0, 0.15, 0, 0, 0, 0.15, 0, 0.3, 0) mesh = ExtResource("1_tcr3k") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_0xb6r") diff --git a/client/map/items/french_fries.res b/client/map/items/french_fries.res Binary files differindex 8019c006..2c312e36 100644 --- a/client/map/items/french_fries.res +++ b/client/map/items/french_fries.res diff --git a/client/map/items/french_fries_basket.tscn b/client/map/items/french_fries_basket.tscn index 516efe0a..71ce3676 100644 --- a/client/map/items/french_fries_basket.tscn +++ b/client/map/items/french_fries_basket.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dfxksiofrs477"] +[gd_scene format=3 uid="uid://dfxksiofrs477"] [ext_resource type="ArrayMesh" uid="uid://b4ayvyhakbe7t" path="res://map/items/french_fries.res" id="1_skqej"] -[node name="FrenchFriesBasket" type="Node3D"] +[node name="FrenchFriesBasket" type="Node3D" unique_id=1793149830] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=972639015] transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, -0.112) mesh = ExtResource("1_skqej") -skeleton = NodePath("") diff --git a/client/map/items/french_fries_fill.res b/client/map/items/french_fries_fill.res Binary files differindex f9bd5e0a..e7b78a46 100644 --- a/client/map/items/french_fries_fill.res +++ b/client/map/items/french_fries_fill.res diff --git a/client/map/items/french_fries_fill.tscn b/client/map/items/french_fries_fill.tscn index 10684f67..8c98cfe7 100644 --- a/client/map/items/french_fries_fill.tscn +++ b/client/map/items/french_fries_fill.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://buxshcsyokc3y"] +[gd_scene format=3 uid="uid://buxshcsyokc3y"] [ext_resource type="ArrayMesh" uid="uid://cl5aobuv0duao" path="res://map/items/french_fries_fill.res" id="1_bt0td"] -[node name="FrenchFriesFill" type="Node3D"] +[node name="FrenchFriesFill" type="Node3D" unique_id=87677793] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=802219019] transform = Transform3D(-0.64, 0, -5.5950576e-08, 0, 0.64, 0, 5.5950576e-08, 0, -0.64, 0.01, -0.031, 0.025) mesh = ExtResource("1_bt0td") -skeleton = NodePath("") diff --git a/client/map/items/generic_item.gd b/client/map/items/generic_item.gd index 5f101646..e20385ef 100644 --- a/client/map/items/generic_item.gd +++ b/client/map/items/generic_item.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/glass.gd b/client/map/items/glass.gd index b9582a3a..8b0208e1 100644 --- a/client/map/items/glass.gd +++ b/client/map/items/glass.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/glass.res b/client/map/items/glass.res Binary files differindex 8386865f..400ca1cd 100644 --- a/client/map/items/glass.res +++ b/client/map/items/glass.res diff --git a/client/map/items/glass.tscn b/client/map/items/glass.tscn index 29bdda8b..877946a2 100644 --- a/client/map/items/glass.tscn +++ b/client/map/items/glass.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://c875kaj4v7nfv"] +[gd_scene format=3 uid="uid://c875kaj4v7nfv"] [ext_resource type="ArrayMesh" uid="uid://dywkxdkny1urs" path="res://map/items/glass.res" id="1_v2eeu"] -[node name="Glass" type="Node3D"] +[node name="Glass" type="Node3D" unique_id=1014845055] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1301902472] transform = Transform3D(0.125, 0, 0, 0, 0.125, 0, 0, 0, 0.125, 0, 0.125, 0) mesh = ExtResource("1_v2eeu") -skeleton = NodePath("") diff --git a/client/map/items/glass_fill.gd b/client/map/items/glass_fill.gd index 27cceb1f..4331965d 100644 --- a/client/map/items/glass_fill.gd +++ b/client/map/items/glass_fill.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/glass_fill.res b/client/map/items/glass_fill.res Binary files differindex 8226fb04..4845b3da 100644 --- a/client/map/items/glass_fill.res +++ b/client/map/items/glass_fill.res diff --git a/client/map/items/glass_fill.tscn b/client/map/items/glass_fill.tscn index dbcc1a61..a33d77de 100644 --- a/client/map/items/glass_fill.tscn +++ b/client/map/items/glass_fill.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://dvdwxct8qu2fm"] +[gd_scene format=3 uid="uid://dvdwxct8qu2fm"] [ext_resource type="ArrayMesh" uid="uid://byebq6oifi2jk" path="res://map/items/glass_fill.res" id="1_apxu2"] @@ -8,9 +8,8 @@ resource_name = "Material.002" cull_mode = 2 metallic_specular = 0.0 -[node name="GlassFill" type="MeshInstance3D"] +[node name="GlassFill" type="MeshInstance3D" unique_id=652949023] transform = Transform3D(0.125, 0, 0, 0, 0.125, 0, 0, 0, 0.125, 0, 0.125, 0) lod_bias = 3.0 mesh = ExtResource("1_apxu2") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_g0wwk") diff --git a/client/map/items/glass_items.gd b/client/map/items/glass_items.gd index 970b25d1..b3a5542b 100644 --- a/client/map/items/glass_items.gd +++ b/client/map/items/glass_items.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/icecream.gd b/client/map/items/icecream.gd index 19e3c91d..c29f6ef3 100644 --- a/client/map/items/icecream.gd +++ b/client/map/items/icecream.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/icecream.res b/client/map/items/icecream.res Binary files differindex af888a45..1d867b07 100644 --- a/client/map/items/icecream.res +++ b/client/map/items/icecream.res diff --git a/client/map/items/icecream.tscn b/client/map/items/icecream.tscn index 97eb32cf..d727e0c7 100644 --- a/client/map/items/icecream.tscn +++ b/client/map/items/icecream.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=4 uid="uid://c7peyvvr7rgko"] +[gd_scene format=4 uid="uid://c7peyvvr7rgko"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fah5o"] resource_name = "Sprinkles" @@ -67,8 +67,7 @@ resource_name = "Ice" cull_mode = 2 roughness = 0.690035 -[node name="IceCream" type="MeshInstance3D"] +[node name="IceCream" type="MeshInstance3D" unique_id=1714074191] transform = Transform3D(0.6, 0, 0, 0, 0.6, 0, 0, 0, 0.6, 0, 0.2, 0) mesh = SubResource("ArrayMesh_vb1ms") -skeleton = NodePath("") surface_material_override/1 = SubResource("StandardMaterial3D_2ckef") diff --git a/client/map/items/item.gd b/client/map/items/item.gd index 39c7afc1..bad9c7cf 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -58,30 +58,35 @@ func _init(owned_by_: Node3D): add_child(base) owned_by = owned_by_ +# is_round is used to determine if the cursor should be rotated to match the +# item's rotation (rotate if it's not round) +func is_round(): return true + func add_contents(contents: Array[String]): for i in contents: - match i: - _: - base.add_child(ItemFactory.produce(i, self)) + base.add_child(ItemFactory.produce(i, self)) func animate_spawn(): creation_timer = 0.0 scale = Vector3.ONE * 0.001 # setting to zero breaks assertions somewhere in the engine func _process(delta): - if not is_instance_valid(owned_by): return - if owned_by.get_parent() is Item or owned_by is Item: return - var player_owned = owned_by.get_parent().get_parent() is Player - player_owned_timer = player_owned_timer + delta if player_owned else 0. - var anim_speed = 10.0 * exp(player_owned_timer * 3.0) # infinity is fine. G.interpolate can handle it - position = G.interpolate(position, position_target, delta * anim_speed) - rotation.y = G.interpolate_angle(rotation.y, rotation_target, delta * anim_speed) + # Update position + if is_instance_valid(owned_by): + if owned_by.get_parent() is Item or owned_by is Item: return + var player_owned = owned_by.get_parent().get_parent() is Player + player_owned_timer = player_owned_timer + delta if player_owned else 0. + var anim_speed = 10.0 * exp(player_owned_timer * 3.0) # infinity is fine. G.interpolate can handle it + position = G.interpolate(position, position_target, delta * anim_speed) + rotation.y = G.interpolate_angle(rotation.y, rotation_target, delta * anim_speed) + # Fade in if creation_timer != null: creation_timer += delta * 10.0 if creation_timer > 1: scale = Vector3.ONE creation_timer = null else: scale = Vector3.ONE * creation_timer + # Fade out if destroy_timeout != null: destroy_timeout -= delta * 5.0 if is_instance_valid(progress_instance): progress_instance.hide() diff --git a/client/map/items/leek.res b/client/map/items/leek.res Binary files differindex 16c45f6f..3fcafcd2 100644 --- a/client/map/items/leek.res +++ b/client/map/items/leek.res diff --git a/client/map/items/leek.tscn b/client/map/items/leek.tscn index 4967246a..cd70ffa5 100644 --- a/client/map/items/leek.tscn +++ b/client/map/items/leek.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cmpwfkdnrm6e6"] +[gd_scene format=3 uid="uid://cmpwfkdnrm6e6"] [ext_resource type="ArrayMesh" uid="uid://cix4ji823kitw" path="res://map/items/leek.res" id="1_sum7m"] -[node name="Leek" type="Node3D"] +[node name="Leek" type="Node3D" unique_id=490278594] -[node name="leek" type="MeshInstance3D" parent="."] +[node name="leek" type="MeshInstance3D" parent="." unique_id=1208900817] transform = Transform3D(-4.371139e-08, 0.75, -4.371139e-08, 0, -3.278354e-08, -1, -1, -3.278354e-08, 1.9106855e-15, -0.25, 0.1, 0) mesh = ExtResource("1_sum7m") -skeleton = NodePath("") diff --git a/client/map/items/lettuce.res b/client/map/items/lettuce.res Binary files differindex 0ae1a660..066494fe 100644 --- a/client/map/items/lettuce.res +++ b/client/map/items/lettuce.res diff --git a/client/map/items/lettuce.tscn b/client/map/items/lettuce.tscn index c4ca7cb9..35f4aeb2 100644 --- a/client/map/items/lettuce.tscn +++ b/client/map/items/lettuce.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cuf8vwqk6xujk"] +[gd_scene format=3 uid="uid://cuf8vwqk6xujk"] [ext_resource type="ArrayMesh" uid="uid://cyomlupimgm43" path="res://map/items/lettuce.res" id="1_axcdp"] -[node name="Lettuce" type="Node3D"] +[node name="Lettuce" type="Node3D" unique_id=337328089] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1106316228] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_axcdp") -skeleton = NodePath("") diff --git a/client/map/items/lettuce_crate.gd.uid b/client/map/items/lettuce_crate.gd.uid deleted file mode 100644 index d206a1e3..00000000 --- a/client/map/items/lettuce_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b3oxc5pyij02s diff --git a/client/map/items/mochi.gd b/client/map/items/mochi.gd index 9ec98658..dc3a860d 100644 --- a/client/map/items/mochi.gd +++ b/client/map/items/mochi.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/mochi.res b/client/map/items/mochi.res Binary files differindex d9a4a97b..63af04da 100644 --- a/client/map/items/mochi.res +++ b/client/map/items/mochi.res diff --git a/client/map/items/mochi.tscn b/client/map/items/mochi.tscn index aaf20af6..0d9ed7e7 100644 --- a/client/map/items/mochi.tscn +++ b/client/map/items/mochi.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=3 format=3 uid="uid://2warur3hlxao"] +[gd_scene format=3 uid="uid://2warur3hlxao"] [ext_resource type="ArrayMesh" uid="uid://c3s71kxt7nhfb" path="res://map/items/mochi.res" id="1_ygb5f"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c143l"] -[node name="Mochi" type="MeshInstance3D"] +[node name="Mochi" type="MeshInstance3D" unique_id=1419288615] transform = Transform3D(0.15, 0, 0, 0, 0.104, 0, 0, 0, 0.15, 0, 0.075, 0) mesh = ExtResource("1_ygb5f") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_c143l") diff --git a/client/map/items/mushroom.res b/client/map/items/mushroom.res Binary files differindex ad8dbc46..d4ce1bc1 100644 --- a/client/map/items/mushroom.res +++ b/client/map/items/mushroom.res diff --git a/client/map/items/mushroom.tscn b/client/map/items/mushroom.tscn index 7c8ab942..ec3237bb 100644 --- a/client/map/items/mushroom.tscn +++ b/client/map/items/mushroom.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cc0jqiiywrrc0"] +[gd_scene format=3 uid="uid://cc0jqiiywrrc0"] [ext_resource type="ArrayMesh" uid="uid://fmglxabrvyld" path="res://map/items/mushroom.res" id="1_3saxa"] -[node name="Mushroom" type="Node3D"] +[node name="Mushroom" type="Node3D" unique_id=513538861] -[node name="Mesh" type="MeshInstance3D" parent="."] -transform = Transform3D(1.7207295, 5.5918704e-08, 2.4574564, 2.4574564, -1.07418835e-07, -1.7207295, 5.5918697e-08, 3.0000005, -1.0741883e-07, 0.125, 0.035, 0) +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1807329182] +transform = Transform3D(1.2167394, -2.1213207, 1.7376841, 2.4574564, -1.07418835e-07, -1.7207295, 1.2167397, 2.1213207, 1.7376841, 0.125, 0.035, 0.125) mesh = ExtResource("1_3saxa") -skeleton = NodePath("") diff --git a/client/map/items/mushroom_plate_fill.tscn b/client/map/items/mushroom_plate_fill.tscn new file mode 100644 index 00000000..5c4f20bc --- /dev/null +++ b/client/map/items/mushroom_plate_fill.tscn @@ -0,0 +1,17 @@ +[gd_scene format=3 uid="uid://dvh0w2l8ly53e"] + +[ext_resource type="PackedScene" uid="uid://da3d6rgfss3su" path="res://map/items/pizza/mushroom_slice.tscn" id="1_iihb3"] + +[node name="MushroomPlateTopping" type="Node3D" unique_id=764525280] + +[node name="CookedMushroomSlice" parent="." unique_id=397861394 instance=ExtResource("1_iihb3")] +transform = Transform3D(-0.53290087, 0.09379602, 0.8409631, 0.111597665, 0.9929469, -0.040030282, -0.8387864, 0.07251734, -0.5396097, 0.083272, 0.020344693, -0.06993499) + +[node name="CookedMushroomSlice2" parent="." unique_id=913110476 instance=ExtResource("1_iihb3")] +transform = Transform3D(0.8638758, -0.24161705, 0.44197255, 0.2151002, 0.97037166, 0.11004867, -0.45546728, 0, 0.89025253, -0.06327816, 0.024188552, -0.060519822) + +[node name="CookedMushroomSlice3" parent="." unique_id=653241564 instance=ExtResource("1_iihb3")] +transform = Transform3D(-0.95794797, -0.20063338, 0.20513889, -0.19618548, 0.9796664, 0.04201196, -0.20939668, 0, -0.97783077, 0.08738138, 0.020179842, 0.036596574) + +[node name="CookedMushroomSlice4" parent="." unique_id=1676048566 instance=ExtResource("1_iihb3")] +transform = Transform3D(0.8235921, 0, -0.5671827, -0.12658499, 0.9747768, -0.18381096, 0.5528766, 0.2231821, 0.8028185, -0.08654484, 0.023021702, 0.08201364) diff --git a/client/map/items/nigiri.res b/client/map/items/nigiri.res Binary files differindex ffe47e3e..bd64e3d1 100644 --- a/client/map/items/nigiri.res +++ b/client/map/items/nigiri.res diff --git a/client/map/items/nigiri.tscn b/client/map/items/nigiri.tscn index 0a616eed..25e0324c 100644 --- a/client/map/items/nigiri.tscn +++ b/client/map/items/nigiri.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://d34n41tk304ey"] +[gd_scene format=3 uid="uid://d34n41tk304ey"] [ext_resource type="ArrayMesh" uid="uid://g2ko273otndc" path="res://map/items/nigiri.res" id="1_my3m1"] -[node name="Nigiri" type="Node3D"] +[node name="Nigiri" type="Node3D" unique_id=713001924] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=916811039] transform = Transform3D(0.144, 0, 0, 0, -2.27299e-09, -0.073, 0, 0.052, -3.19093e-09, 0, 0.1, 0) mesh = ExtResource("1_my3m1") -skeleton = NodePath("") diff --git a/client/map/items/noodles.res b/client/map/items/noodles.res Binary files differindex 9f8d6347..1a5013bb 100644 --- a/client/map/items/noodles.res +++ b/client/map/items/noodles.res diff --git a/client/map/items/noodles.tscn b/client/map/items/noodles.tscn index cad0b17b..37d59dcd 100644 --- a/client/map/items/noodles.tscn +++ b/client/map/items/noodles.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cfc4wyxsgtnuy"] +[gd_scene format=3 uid="uid://cfc4wyxsgtnuy"] [ext_resource type="ArrayMesh" uid="uid://c7nmboj44jn7a" path="res://map/items/noodles.res" id="1_7j6yk"] -[node name="Noodles" type="Node3D"] +[node name="Noodles" type="Node3D" unique_id=32514619] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1535551693] transform = Transform3D(0.378, 0, 0, 0, 0.378, 0, 0, 0, 0.378, -0.027, 0, 0.095) mesh = ExtResource("1_7j6yk") -skeleton = NodePath("") diff --git a/client/map/items/noodles_cheese_fill.tscn b/client/map/items/noodles_cheese_fill.tscn new file mode 100644 index 00000000..fb5c10d9 --- /dev/null +++ b/client/map/items/noodles_cheese_fill.tscn @@ -0,0 +1,25 @@ +[gd_scene format=3 uid="uid://3l14rutbc6ma"] + +[ext_resource type="ArrayMesh" uid="uid://68yn4bguhuq3" path="res://map/items/cheese_bit.res" id="1_1dqn5"] + +[node name="NoodlesCheeseFill" type="Node3D" unique_id=1485282420] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=73653329] +transform = Transform3D(0.5177467, -0.21455958, -0.6909487, -0.07600415, 0.9169244, -0.38597953, 0.53727245, 0.33647275, 0.61123633, -0.125, 0.108, 0.096) +mesh = ExtResource("1_1dqn5") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="." unique_id=1909498497] +transform = Transform3D(0.74895734, 0.019033965, -0.049147546, -0.013184706, 0.9993994, 0.029855367, 0.037264794, -0.028949905, 0.9983451, -0.009, 0.165, -0.025) +mesh = ExtResource("1_1dqn5") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=833722459] +transform = Transform3D(0.6929721, 0.34747887, 0.1598467, -0.22719976, 0.9199635, -0.24879485, -0.17512806, 0.18145435, 0.9552748, 0.071, 0.113, 0.078) +mesh = ExtResource("1_1dqn5") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=1585980071] +transform = Transform3D(0.47207838, 0.50925, -0.58691764, -0.11057563, 0.81986195, 0.5532535, 0.57220167, -0.26170707, 0.5911329, 0.105, 0.113, -0.09) +mesh = ExtResource("1_1dqn5") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="." unique_id=665036024] +transform = Transform3D(0.7185697, 0, -0.28645763, 0.057966992, 0.9629134, 0.2585037, 0.20687544, -0.26981068, 0.9225605, -0.082, 0.149, -0.128) +mesh = ExtResource("1_1dqn5") diff --git a/client/map/items/noodles_tomato_sauce_fill.res b/client/map/items/noodles_tomato_sauce_fill.res Binary files differnew file mode 100644 index 00000000..2bf8fad6 --- /dev/null +++ b/client/map/items/noodles_tomato_sauce_fill.res diff --git a/client/map/items/noodles_tomato_sauce_fill.tscn b/client/map/items/noodles_tomato_sauce_fill.tscn new file mode 100644 index 00000000..aac0ccd4 --- /dev/null +++ b/client/map/items/noodles_tomato_sauce_fill.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://cxwoxg732tgd8"] + +[ext_resource type="ArrayMesh" uid="uid://kwctvv8h54xj" path="res://map/items/noodles_tomato_sauce_fill.res" id="1_wu5sg"] + +[node name="NoodlesTomatoSauceFill" type="Node3D" unique_id=1260606454] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1027670850] +transform = Transform3D(-0.60932875, -0.0051440885, -0.022176262, -0.014863605, 0.24028103, 0.038889483, 0.024445973, 0.017876228, -0.5291095, -0.007, 0.023, 0.011) +mesh = ExtResource("1_wu5sg") diff --git a/client/map/items/pan.gd b/client/map/items/pan.gd index 497d8832..99be1805 100644 --- a/client/map/items/pan.gd +++ b/client/map/items/pan.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -23,6 +23,13 @@ func _init(owned_by_: Node3D): add_child(load("res://map/items/pan.tscn").instantiate()) base.add_child(steam) +func add_contents(contents: Array[String]): + for i: String in contents: + if i == "steak" or i == "seared-steak": + base.add_child(ItemFactory.produce(i, self, .85)) + else: + super([i]) + func progress(position_: float, speed: float, warn: bool): super(position_, speed, warn) steam.emitting = true diff --git a/client/map/items/pan.res b/client/map/items/pan.res Binary files differindex 03dcf8f9..307df9ce 100644 --- a/client/map/items/pan.res +++ b/client/map/items/pan.res diff --git a/client/map/items/pan.tscn b/client/map/items/pan.tscn index 661814d9..908471f0 100644 --- a/client/map/items/pan.tscn +++ b/client/map/items/pan.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://b1fuw04fcbko8"] +[gd_scene format=3 uid="uid://b1fuw04fcbko8"] [ext_resource type="ArrayMesh" uid="uid://be0d8a6no06na" path="res://map/items/pan.res" id="1_m08s2"] -[node name="Pan" type="Node3D"] +[node name="Pan" type="Node3D" unique_id=1343705456] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=2018580953] transform = Transform3D(-2.18557e-08, 0, -0.5, 0, 0.5, 0, 0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_m08s2") -skeleton = NodePath("") diff --git a/client/map/items/patty.res b/client/map/items/patty.res Binary files differindex 87880285..3ac0a9f1 100644 --- a/client/map/items/patty.res +++ b/client/map/items/patty.res diff --git a/client/map/items/patty.tscn b/client/map/items/patty.tscn index 2d1bdab6..494f623f 100644 --- a/client/map/items/patty.tscn +++ b/client/map/items/patty.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://b1grk3gj58qbn"] +[gd_scene format=3 uid="uid://b1grk3gj58qbn"] [ext_resource type="ArrayMesh" uid="uid://wp3747kxnah1" path="res://map/items/patty.res" id="1_7tkah"] -[node name="Patty" type="Node3D"] +[node name="Patty" type="Node3D" unique_id=2110034130] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1300893752] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_7tkah") -skeleton = NodePath("") diff --git a/client/map/items/pizza.gd b/client/map/items/pizza.gd new file mode 100644 index 00000000..a6c1a2ee --- /dev/null +++ b/client/map/items/pizza.gd @@ -0,0 +1,29 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 Pizza +extends Item + +func _init(owned_by_: Node3D): + super(owned_by_) + +func add_contents(contents: Array[String]): + base.add_child(load("res://map/items/cooked_cheese_pizza.tscn").instantiate()) + for c: String in contents: + match c: + "sliced-cheese": continue + "tomato-juice": continue + "sliced-mushroom": base.add_child(load("res://map/items/pizza/mushroom_pizza_topping.tscn").instantiate()) + _: base.add_child(UnknownItem.new(owned_by, c)) diff --git a/client/map/items/pizza.gd.uid b/client/map/items/pizza.gd.uid new file mode 100644 index 00000000..0a7a85c5 --- /dev/null +++ b/client/map/items/pizza.gd.uid @@ -0,0 +1 @@ +uid://3ptl5whwr0s5 diff --git a/client/map/items/pizza.res b/client/map/items/pizza.res Binary files differnew file mode 100644 index 00000000..ef8b7e68 --- /dev/null +++ b/client/map/items/pizza.res diff --git a/client/map/items/pizza/cheese_pizza_topping.tscn b/client/map/items/pizza/cheese_pizza_topping.tscn new file mode 100644 index 00000000..45f73056 --- /dev/null +++ b/client/map/items/pizza/cheese_pizza_topping.tscn @@ -0,0 +1,25 @@ +[gd_scene format=3 uid="uid://746ly6kg6fym"] + +[ext_resource type="ArrayMesh" uid="uid://68yn4bguhuq3" path="res://map/items/cheese_bit.res" id="1_tuxk6"] + +[node name="CheesePizzaTopping" type="Node3D" unique_id=1491104077] + +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=571985640] +transform = Transform3D(0.7090622, 0, 0.24439889, 0, 0.5, 0, -0.24439889, 0, 0.7090622, 0, 0.0901646, 0) +mesh = ExtResource("1_tuxk6") + +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=2125195768] +transform = Transform3D(0.26293755, 0, -0.70239866, 0, 0.5, 0, 0.70239866, 0, 0.26293755, -0.13107976, 0.0901646, -0.08822491) +mesh = ExtResource("1_tuxk6") + +[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=2077733221] +transform = Transform3D(0.59963775, 0, -0.4504826, 0, 0.5, 0, 0.4504826, 0, 0.59963775, -0.1088517, 0.0901646, 0.09697052) +mesh = ExtResource("1_tuxk6") + +[node name="MeshInstance3D4" type="MeshInstance3D" parent="." unique_id=508222957] +transform = Transform3D(-0.025716748, 0, 0.7495589, 0, 0.5, 0, -0.7495589, 0, -0.025716748, 0.09534076, 0.0901646, 0.10794736) +mesh = ExtResource("1_tuxk6") + +[node name="MeshInstance3D5" type="MeshInstance3D" parent="." unique_id=348571710] +transform = Transform3D(0.5133626, 0, 0.5467713, 0, 0.5, 0, -0.5467713, 0, 0.5133626, 0.09534076, 0.0901646, -0.14092311) +mesh = ExtResource("1_tuxk6") diff --git a/client/map/items/pizza/mushroom_pizza_topping.tscn b/client/map/items/pizza/mushroom_pizza_topping.tscn new file mode 100644 index 00000000..2dbe8e3d --- /dev/null +++ b/client/map/items/pizza/mushroom_pizza_topping.tscn @@ -0,0 +1,17 @@ +[gd_scene format=3 uid="uid://b8md64r8oddij"] + +[ext_resource type="PackedScene" uid="uid://da3d6rgfss3su" path="res://map/items/pizza/mushroom_slice.tscn" id="1_m4x3a"] + +[node name="MushroomPizzaTopping" type="Node3D" unique_id=1982303343] + +[node name="CookedMushroomSlice" parent="." unique_id=1762083109 instance=ExtResource("1_m4x3a")] +transform = Transform3D(0.44027928, 0, 1.2274243, 0, 1.304, 0, -1.2274243, 0, 0.44027928, 0.09475949, 0.075, -0.090857096) + +[node name="CookedMushroomSlice2" parent="." unique_id=1383642696 instance=ExtResource("1_m4x3a")] +transform = Transform3D(1.1608893, 0, 0.59392935, 0, 1.304, 0, -0.59392935, 0, 1.1608893, -0.088593446, 0.075, -0.07241271) + +[node name="CookedMushroomSlice3" parent="." unique_id=1087751451 instance=ExtResource("1_m4x3a")] +transform = Transform3D(-1.2750913, 0, 0.27305326, 0, 1.304, 0, -0.27305326, 0, -1.2750913, 0.090249225, 0.075, 0.075857505) + +[node name="CookedMushroomSlice4" parent="." unique_id=298075280 instance=ExtResource("1_m4x3a")] +transform = Transform3D(1.0739639, 0, -0.73960626, 0, 1.304, 0, 0.73960626, 0, 1.0739639, -0.11389688, 0.075, 0.098924026) diff --git a/client/map/items/pizza/mushroom_slice.res b/client/map/items/pizza/mushroom_slice.res Binary files differnew file mode 100644 index 00000000..e50c5a19 --- /dev/null +++ b/client/map/items/pizza/mushroom_slice.res diff --git a/client/map/items/pizza/mushroom_slice.tscn b/client/map/items/pizza/mushroom_slice.tscn new file mode 100644 index 00000000..fbe1379b --- /dev/null +++ b/client/map/items/pizza/mushroom_slice.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://da3d6rgfss3su"] + +[ext_resource type="ArrayMesh" uid="uid://b24bxvhik0ab2" path="res://map/items/pizza/mushroom_slice.res" id="1_6tyh4"] + +[node name="CookedMushroomSlice" type="Node3D" unique_id=1237055269] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=964430930] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.05) +mesh = ExtResource("1_6tyh4") diff --git a/client/map/items/plate.gd b/client/map/items/plate.gd index e5b86df2..e71b7d0a 100644 --- a/client/map/items/plate.gd +++ b/client/map/items/plate.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -39,33 +39,54 @@ func add_contents(contents: Array[String]): contents.append("bun-small") # Tomato + lettuce salad has a custom mesh - if contents.has("sliced-tomato") and contents.has("sliced-lettuce") and contents.size() == 2: + if G.unordered_array_eq(contents, ["sliced-tomato", "sliced-lettuce"]): contents.erase("sliced-tomato") contents.erase("sliced-lettuce") contents.append("tomato-lettuce-salad") + # Noodles + tomato soup has a custom tomato sauce mesh + if G.unordered_array_subset(["cooked-noodles", "tomato-soup"], contents): + contents.erase("tomato-soup") + contents.append("noodles-tomato-fill") + + # Noodles + sliced cheese has a custom cheese mesh + if G.unordered_array_subset(["cooked-noodles", "sliced-cheese"], contents): + contents.erase("sliced-cheese") + contents.append("noodles-cheese-fill") + # Stack content items on top of each other var height_sum := 0. - for c in contents: + for c: String in contents: var item: Item match c: "curry": add_child(PlateFill.new(self, Color(.75, .45, .1))) - "cheese-leek-soup": add_child(PlateFill.new(self, Color(0.747, 0.77, 0.493))) + "cheese-leek-soup": + add_child(PlateFill.new(self, Color(0.747, 0.77, 0.493))) + add_child(load("res://map/items/sliced_leek/leek_ring_fill.tscn").instantiate()) + "mushroom-soup": + add_child(PlateFill.new(self, Color(0.747, 0.454, 0.36))) + add_child(load("res://map/items/mushroom_plate_fill.tscn").instantiate()) "cooked-rice": add_child(load("res://map/items/cooked_rice_fill.tscn").instantiate()) "tomato-lettuce-salad": add_child(load("res://map/items/sliced_tomato_sliced_lettuce_fill.tscn").instantiate()) "tomato-soup": add_child(PlateFill.new(self, Color(1., .3, .2))) + "noodles-tomato-fill": add_child(load("res://map/items/noodles_tomato_sauce_fill.tscn").instantiate()) + "noodles-cheese-fill": add_child(load("res://map/items/noodles_cheese_fill.tscn").instantiate()) "french-fries": base.add_child(load("res://map/items/french_fries_fill.tscn").instantiate()) "bun-small": var bun = ItemFactory.produce("bun", base) base.add_child(bun) bun.scale *= 0.5 bun.position += Vector3(-.1, 0, -.1) + "seared-steak": base.add_child(ItemFactory.produce(c, base, .85)) "seared-steak-small": var seared_steak = ItemFactory.produce("seared-steak", base) base.add_child(seared_steak) seared_steak.scale *= 0.5 seared_steak.position += Vector3(.1, 0, .1) - _: item = ItemFactory.produce(c, base) + _: + item = ItemFactory.produce(c, base) + if c.contains("pizza"): + item.scale = Vector3(.7, .7, .7) if item != null: base.add_child(item) item.position.y = height_sum diff --git a/client/map/items/plate.res b/client/map/items/plate.res Binary files differindex b57844c3..2890171a 100644 --- a/client/map/items/plate.res +++ b/client/map/items/plate.res diff --git a/client/map/items/plate.tscn b/client/map/items/plate.tscn index 8503fe81..ca4aac58 100644 --- a/client/map/items/plate.tscn +++ b/client/map/items/plate.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://daxh3hgia7qyp"] +[gd_scene format=3 uid="uid://daxh3hgia7qyp"] [ext_resource type="ArrayMesh" uid="uid://bnku7g8g0ts81" path="res://map/items/plate.res" id="1_70hux"] -[node name="Plate" type="Node3D"] +[node name="Plate" type="Node3D" unique_id=351447493] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=279311129] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_70hux") -skeleton = NodePath("") diff --git a/client/map/items/plate_fill.gd b/client/map/items/plate_fill.gd index 057fc11f..fc2a3310 100644 --- a/client/map/items/plate_fill.gd +++ b/client/map/items/plate_fill.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/plate_fill.res b/client/map/items/plate_fill.res Binary files differindex 8aad5797..fb198090 100644 --- a/client/map/items/plate_fill.res +++ b/client/map/items/plate_fill.res diff --git a/client/map/items/plate_fill.tscn b/client/map/items/plate_fill.tscn index 1ba34231..29264c86 100644 --- a/client/map/items/plate_fill.tscn +++ b/client/map/items/plate_fill.tscn @@ -1,12 +1,11 @@ -[gd_scene load_steps=3 format=3 uid="uid://btktb7yb1y0yq"] +[gd_scene format=3 uid="uid://btktb7yb1y0yq"] [ext_resource type="ArrayMesh" uid="uid://c8l6gbfjikyv3" path="res://map/items/plate_fill.res" id="1_dgygv"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q0leg"] resource_local_to_scene = true -[node name="PlateFill" type="MeshInstance3D"] +[node name="PlateFill" type="MeshInstance3D" unique_id=601792816] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_dgygv") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_q0leg") diff --git a/client/map/items/pot.gd b/client/map/items/pot.gd index 77c8ebd1..06b63f58 100644 --- a/client/map/items/pot.gd +++ b/client/map/items/pot.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -26,6 +26,8 @@ func _init(owned_by_: Node3D): func add_contents(contents: Array[String]): for i in contents: match i: + "cheese": + add_child(PotFill.new(self, Color(0.99, 0.75, 0.337, 1.0))) "cheese-leek-soup": add_child(PotFill.new(self, Color(0.747, 0.77, 0.493))) "mochi-dough": @@ -43,6 +45,15 @@ func add_contents(contents: Array[String]): leek.rotation_degrees = Vector3(-75.5, 0, -25) leek.position = Vector3(.03, .1, .25) base.add_child(leek) + "cooked-noodles": + base.add_child(ItemFactory.produce(i, self, .85)) + "noodles": + add_child(PotFillTransparent.new(self, Color(0.46, 0.68, 0.73, 0.392))) # water + base.add_child(ItemFactory.produce(i, self, .85)) + "processed-mushroom": + add_child(PotFill.new(self, Color(0.596, 0.341, 0.259))) + "mushroom-soup": + add_child(PotFill.new(self, Color(0.747, 0.454, 0.36, 1.0))) "cooked-rice": add_child(PotFill.new(self, Color(1.,1.,1.))) "curry": diff --git a/client/map/items/pot.res b/client/map/items/pot.res Binary files differindex df67fed3..827e6e28 100644 --- a/client/map/items/pot.res +++ b/client/map/items/pot.res diff --git a/client/map/items/pot.tscn b/client/map/items/pot.tscn index f823cae2..68a6f440 100644 --- a/client/map/items/pot.tscn +++ b/client/map/items/pot.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://df0hhdcyubyid"] +[gd_scene format=3 uid="uid://df0hhdcyubyid"] [ext_resource type="ArrayMesh" uid="uid://dm14h4sasn2bm" path="res://map/items/pot.res" id="1_41enh"] -[node name="Pot" type="Node3D"] +[node name="Pot" type="Node3D" unique_id=1778291833] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=955140522] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_41enh") -skeleton = NodePath("") diff --git a/client/map/items/pot_fill.gd b/client/map/items/pot_fill.gd index 0a59038d..e8dfaa1e 100644 --- a/client/map/items/pot_fill.gd +++ b/client/map/items/pot_fill.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/pot_fill.res b/client/map/items/pot_fill.res Binary files differindex 06c8590c..94942edb 100644 --- a/client/map/items/pot_fill.res +++ b/client/map/items/pot_fill.res diff --git a/client/map/items/pot_fill.tscn b/client/map/items/pot_fill.tscn index 2b3a1eda..674899ad 100644 --- a/client/map/items/pot_fill.tscn +++ b/client/map/items/pot_fill.tscn @@ -1,12 +1,11 @@ -[gd_scene load_steps=3 format=3 uid="uid://cwo8o5a6f5p4i"] +[gd_scene format=3 uid="uid://cwo8o5a6f5p4i"] [ext_resource type="ArrayMesh" uid="uid://bduftri3viodq" path="res://map/items/pot_fill.res" id="1_5suf6"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_djkvw"] resource_local_to_scene = true -[node name="PotFill" type="MeshInstance3D"] +[node name="PotFill" type="MeshInstance3D" unique_id=1219055572] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_5suf6") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_djkvw") diff --git a/client/map/items/pot_fill_transparent.gd b/client/map/items/pot_fill_transparent.gd new file mode 100644 index 00000000..f8585733 --- /dev/null +++ b/client/map/items/pot_fill_transparent.gd @@ -0,0 +1,22 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 PotFillTransparent +extends PotFill + +func _init(owned_by_: Node3D, c: Color): + super(owned_by_, c) + var mat: BaseMaterial3D = fill.get_active_material(0) + mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA diff --git a/client/map/items/pot_fill_transparent.gd.uid b/client/map/items/pot_fill_transparent.gd.uid new file mode 100644 index 00000000..863ef626 --- /dev/null +++ b/client/map/items/pot_fill_transparent.gd.uid @@ -0,0 +1 @@ +uid://b7mtr0omy3nx4 diff --git a/client/map/items/potato.res b/client/map/items/potato.res Binary files differindex 1a920e6f..3e54bece 100644 --- a/client/map/items/potato.res +++ b/client/map/items/potato.res diff --git a/client/map/items/potato.tscn b/client/map/items/potato.tscn index b57b2bbf..7d97b648 100644 --- a/client/map/items/potato.tscn +++ b/client/map/items/potato.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dw24qu0oscohw"] +[gd_scene format=3 uid="uid://dw24qu0oscohw"] [ext_resource type="ArrayMesh" uid="uid://hj2dib0t8em3" path="res://map/items/potato.res" id="1_rg7i5"] -[node name="Potato" type="Node3D"] +[node name="Potato" type="Node3D" unique_id=1149637460] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=544200943] transform = Transform3D(-0.07814168, -2.3085807e-08, -0.44316345, -0.44316345, -1.937129e-08, 0.07814168, -2.3085807e-08, 0.45, -1.937129e-08, 0, 0.1, 0) mesh = ExtResource("1_rg7i5") -skeleton = NodePath("") diff --git a/client/map/items/processing.tscn b/client/map/items/processing.tscn index f8deb6be..28f785fa 100644 --- a/client/map/items/processing.tscn +++ b/client/map/items/processing.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://sk5i14bxi0qr"] +[gd_scene format=3 uid="uid://sk5i14bxi0qr"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tqrr3"] vertex_color_use_as_albedo = true @@ -8,7 +8,7 @@ material = SubResource("StandardMaterial3D_tqrr3") radius = 0.1 height = 0.2 -[node name="Processing" type="CPUParticles3D"] +[node name="Processing" type="CPUParticles3D" unique_id=412007652] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0) emitting = false amount = 15 @@ -19,6 +19,7 @@ emission_ring_axis = Vector3(0, 1, 0) emission_ring_height = 0.2 emission_ring_radius = 0.1 emission_ring_inner_radius = 0.0 +emission_ring_cone_angle = 90.0 direction = Vector3(0, 1, 0) spread = 180.0 gravity = Vector3(0, 0, 0) diff --git a/client/map/items/raw_pizza.tscn b/client/map/items/raw_pizza.tscn new file mode 100644 index 00000000..5b7359cf --- /dev/null +++ b/client/map/items/raw_pizza.tscn @@ -0,0 +1,11 @@ +[gd_scene format=3 uid="uid://d18w3kwuaehvv"] + +[ext_resource type="ArrayMesh" uid="uid://cwstqugiw76tc" path="res://map/items/pizza.res" id="1_lcgk8"] +[ext_resource type="Material" uid="uid://cg7o7rn06bve1" path="res://map/items/dough_material.tres" id="2_snge3"] + +[node name="RawPizza" type="Node3D" unique_id=1513785364] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=449857524] +transform = Transform3D(0.3, 0, 0, 0, 0.05, 0, 0, 0, 0.3, 0, 0.05, 0) +mesh = ExtResource("1_lcgk8") +surface_material_override/0 = ExtResource("2_snge3") diff --git a/client/map/items/rice.res b/client/map/items/rice.res Binary files differindex f9a6a81c..d57d301b 100644 --- a/client/map/items/rice.res +++ b/client/map/items/rice.res diff --git a/client/map/items/rice.tscn b/client/map/items/rice.tscn index bb41f3e8..03f69422 100644 --- a/client/map/items/rice.tscn +++ b/client/map/items/rice.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://rs4b17lp80cx"] +[gd_scene format=3 uid="uid://rs4b17lp80cx"] [ext_resource type="ArrayMesh" uid="uid://cclj4k0d1d1qk" path="res://map/items/rice.res" id="1_fmn8b"] -[node name="Rice" type="Node3D"] +[node name="Rice" type="Node3D" unique_id=132148842] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1049224626] transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) mesh = ExtResource("1_fmn8b") -skeleton = NodePath("") diff --git a/client/map/items/rice_content.res b/client/map/items/rice_content.res Binary files differindex 0f5dd44d..9aba9cfc 100644 --- a/client/map/items/rice_content.res +++ b/client/map/items/rice_content.res diff --git a/client/map/items/rice_content.tscn b/client/map/items/rice_content.tscn index 71038a4e..cc042d0a 100644 --- a/client/map/items/rice_content.tscn +++ b/client/map/items/rice_content.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://do4qxd1d1x7cc"] +[gd_scene format=3 uid="uid://do4qxd1d1x7cc"] [ext_resource type="ArrayMesh" uid="uid://dfvubawp7vieh" path="res://map/items/rice_content.res" id="1_r5kmu"] @@ -6,8 +6,7 @@ resource_local_to_scene = true albedo_color = Color(0.933333, 0.933333, 0.666667, 1) -[node name="RiceContent" type="MeshInstance3D"] +[node name="RiceContent" type="MeshInstance3D" unique_id=867972096] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_r5kmu") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_ce6yj") diff --git a/client/map/items/rolled_dough.gd b/client/map/items/rolled_dough.gd index cd59d907..3d0b5d25 100644 --- a/client/map/items/rolled_dough.gd +++ b/client/map/items/rolled_dough.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,10 +16,20 @@ class_name RolledDough extends Item - func _init(owned_by_: Node3D): super(owned_by_) - add_child(load("res://map/items/rolled_dough.tscn").instantiate()) func add_contents(contents: Array[String]): - super(contents) + contents.sort() + + if contents.has("tomato-juice"): + base.add_child(load("res://map/items/raw_pizza.tscn").instantiate()) + else: + base.add_child(load("res://map/items/rolled_dough.tscn").instantiate()) + + for c: String in contents: + match c: + "tomato-juice": continue + "sliced-cheese": base.add_child(load("res://map/items/pizza/cheese_pizza_topping.tscn").instantiate()) + "sliced-mushroom": base.add_child(load("res://map/items/pizza/mushroom_pizza_topping.tscn").instantiate()) + _: base.add_child(UnknownItem.new(owned_by, c)) diff --git a/client/map/items/rolled_dough.res b/client/map/items/rolled_dough.res Binary files differindex 2759b731..c432a638 100644 --- a/client/map/items/rolled_dough.res +++ b/client/map/items/rolled_dough.res diff --git a/client/map/items/rolled_dough.tscn b/client/map/items/rolled_dough.tscn index 04577c96..0fc9c103 100644 --- a/client/map/items/rolled_dough.tscn +++ b/client/map/items/rolled_dough.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dwfvdvvgenyn5"] +[gd_scene format=3 uid="uid://dwfvdvvgenyn5"] [ext_resource type="ArrayMesh" uid="uid://dtqjpqwxq5mvn" path="res://map/items/rolled_dough.res" id="1_uyf2v"] -[node name="RolledDough" type="Node3D"] +[node name="RolledDough" type="Node3D" unique_id=1623668918] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1841908103] transform = Transform3D(0.3, 0, 0, 0, 0.05, 0, 0, 0, 0.3, 0, 0.05, 0) mesh = ExtResource("1_uyf2v") -skeleton = NodePath("") diff --git a/client/map/items/seared_patty.res b/client/map/items/seared_patty.res Binary files differindex 255b95df..d7ac0a30 100644 --- a/client/map/items/seared_patty.res +++ b/client/map/items/seared_patty.res diff --git a/client/map/items/seared_patty.tscn b/client/map/items/seared_patty.tscn index 7ffe65f2..d72e2681 100644 --- a/client/map/items/seared_patty.tscn +++ b/client/map/items/seared_patty.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dfriokxmga3c8"] +[gd_scene format=3 uid="uid://dfriokxmga3c8"] [ext_resource type="ArrayMesh" uid="uid://dl8hstmmdkog4" path="res://map/items/seared_patty.res" id="1_gy1aa"] -[node name="SearedPatty" type="Node3D"] +[node name="SearedPatty" type="Node3D" unique_id=580728218] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1808379124] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_gy1aa") -skeleton = NodePath("") diff --git a/client/map/items/seared_steak.res b/client/map/items/seared_steak.res Binary files differindex 32c784fb..b91da335 100644 --- a/client/map/items/seared_steak.res +++ b/client/map/items/seared_steak.res diff --git a/client/map/items/seared_steak.tscn b/client/map/items/seared_steak.tscn index 8592e851..ee7797f4 100644 --- a/client/map/items/seared_steak.tscn +++ b/client/map/items/seared_steak.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://c70af18pms3gw"] +[gd_scene format=3 uid="uid://c70af18pms3gw"] [ext_resource type="ArrayMesh" uid="uid://kfod37qy5sx" path="res://map/items/seared_steak.res" id="1_keoxi"] -[node name="Steak" type="Node3D"] +[node name="Steak" type="Node3D" unique_id=201918396] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=151167089] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_keoxi") -skeleton = NodePath("") diff --git a/client/map/items/sliced_bun.tscn b/client/map/items/sliced_bun.tscn index 961d0f70..48b0b303 100644 --- a/client/map/items/sliced_bun.tscn +++ b/client/map/items/sliced_bun.tscn @@ -1,16 +1,14 @@ -[gd_scene load_steps=3 format=3 uid="uid://cm88wpf64l4fu"] +[gd_scene format=3 uid="uid://cm88wpf64l4fu"] [ext_resource type="ArrayMesh" uid="uid://c1qyv55xpv30n" path="res://map/items/sliced_bun_bottom.res" id="1_plvi5"] [ext_resource type="ArrayMesh" uid="uid://dy180cecs6rb1" path="res://map/items/sliced_bun_top.res" id="2_l6cg2"] -[node name="SlicedBun" type="Node3D"] +[node name="SlicedBun" type="Node3D" unique_id=289245464] -[node name="MeshBottom" type="MeshInstance3D" parent="."] +[node name="MeshBottom" type="MeshInstance3D" parent="." unique_id=2050604098] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_plvi5") -skeleton = NodePath("") -[node name="MeshTop" type="MeshInstance3D" parent="."] +[node name="MeshTop" type="MeshInstance3D" parent="." unique_id=1553309169] transform = Transform3D(0.433013, 0.25, 0, -0.25, 0.433013, 0, 0, 0, 0.5, 0.18, 0.08, 0) mesh = ExtResource("2_l6cg2") -skeleton = NodePath("") diff --git a/client/map/items/sliced_bun_bottom.res b/client/map/items/sliced_bun_bottom.res Binary files differindex df7bab99..350e9693 100644 --- a/client/map/items/sliced_bun_bottom.res +++ b/client/map/items/sliced_bun_bottom.res diff --git a/client/map/items/sliced_bun_bottom.tscn b/client/map/items/sliced_bun_bottom.tscn index 573dba13..45e7af68 100644 --- a/client/map/items/sliced_bun_bottom.tscn +++ b/client/map/items/sliced_bun_bottom.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://djtfnj11lljke"] +[gd_scene format=3 uid="uid://djtfnj11lljke"] [ext_resource type="ArrayMesh" uid="uid://c1qyv55xpv30n" path="res://map/items/sliced_bun_bottom.res" id="1_ekr5f"] -[node name="SlicedBunBottom" type="Node3D"] +[node name="SlicedBunBottom" type="Node3D" unique_id=1954514598] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=234719865] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_ekr5f") -skeleton = NodePath("") diff --git a/client/map/items/sliced_bun_top.res b/client/map/items/sliced_bun_top.res Binary files differindex fc88dcbe..4d4d57fc 100644 --- a/client/map/items/sliced_bun_top.res +++ b/client/map/items/sliced_bun_top.res diff --git a/client/map/items/sliced_bun_top.tscn b/client/map/items/sliced_bun_top.tscn index 403ecea7..b57c72ef 100644 --- a/client/map/items/sliced_bun_top.tscn +++ b/client/map/items/sliced_bun_top.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cpmnp5sy6fwbe"] +[gd_scene format=3 uid="uid://cpmnp5sy6fwbe"] [ext_resource type="ArrayMesh" uid="uid://dy180cecs6rb1" path="res://map/items/sliced_bun_top.res" id="1_q5w8k"] -[node name="SlicedBunTop" type="Node3D"] +[node name="SlicedBunTop" type="Node3D" unique_id=45817428] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=487537457] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_q5w8k") -skeleton = NodePath("") diff --git a/client/map/items/sliced_cheese.res b/client/map/items/sliced_cheese.res Binary files differindex ece9c0e0..799e4508 100644 --- a/client/map/items/sliced_cheese.res +++ b/client/map/items/sliced_cheese.res diff --git a/client/map/items/sliced_cheese.tscn b/client/map/items/sliced_cheese.tscn index 4e9ba406..22a6df5f 100644 --- a/client/map/items/sliced_cheese.tscn +++ b/client/map/items/sliced_cheese.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cfdfhxgo4ot7m"] +[gd_scene format=3 uid="uid://cfdfhxgo4ot7m"] [ext_resource type="ArrayMesh" uid="uid://2qsg2dadmf1y" path="res://map/items/sliced_cheese.res" id="1_bbycg"] -[node name="SlicedCheese" type="Node3D"] +[node name="SlicedCheese" type="Node3D" unique_id=1506920915] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1120946141] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.04, 0) mesh = ExtResource("1_bbycg") -skeleton = NodePath("") diff --git a/client/map/items/sliced_fish.res b/client/map/items/sliced_fish.res Binary files differindex 9937a93b..a7d27cf5 100644 --- a/client/map/items/sliced_fish.res +++ b/client/map/items/sliced_fish.res diff --git a/client/map/items/sliced_fish.tscn b/client/map/items/sliced_fish.tscn index 5e60f301..d6ed4bec 100644 --- a/client/map/items/sliced_fish.tscn +++ b/client/map/items/sliced_fish.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dxs04puo5ow7u"] +[gd_scene format=3 uid="uid://dxs04puo5ow7u"] [ext_resource type="ArrayMesh" uid="uid://c3pxaxxbv721y" path="res://map/items/sliced_fish.res" id="1_nt0xc"] -[node name="SlicedFish" type="Node3D"] +[node name="SlicedFish" type="Node3D" unique_id=1546314626] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1817309076] transform = Transform3D(0.1, 0, 0, 0, -4.37114e-09, -0.1, 0, 0.1, -4.37114e-09, 0, 0.045, 0) mesh = ExtResource("1_nt0xc") -skeleton = NodePath("") diff --git a/client/map/items/sliced_leek/leek_ring.res b/client/map/items/sliced_leek/leek_ring.res Binary files differnew file mode 100644 index 00000000..78d57354 --- /dev/null +++ b/client/map/items/sliced_leek/leek_ring.res diff --git a/client/map/items/sliced_leek/leek_ring.tscn b/client/map/items/sliced_leek/leek_ring.tscn new file mode 100644 index 00000000..a8575b05 --- /dev/null +++ b/client/map/items/sliced_leek/leek_ring.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://b25ajkbydfoi8"] + +[ext_resource type="ArrayMesh" uid="uid://ck1dtslyq0xqk" path="res://map/items/sliced_leek/leek_ring.res" id="1_wdt75"] + +[node name="LeekRing" type="Node3D" unique_id=6349426] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=207039888] +transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 0, 0) +mesh = ExtResource("1_wdt75") diff --git a/client/map/items/sliced_leek/leek_ring_fill.tscn b/client/map/items/sliced_leek/leek_ring_fill.tscn new file mode 100644 index 00000000..83fc2542 --- /dev/null +++ b/client/map/items/sliced_leek/leek_ring_fill.tscn @@ -0,0 +1,14 @@ +[gd_scene format=3 uid="uid://y7mg0uh4ghxe"] + +[ext_resource type="PackedScene" uid="uid://b25ajkbydfoi8" path="res://map/items/sliced_leek/leek_ring.tscn" id="1_cb47f"] + +[node name="LeekRingFill" type="Node3D" unique_id=1649292111] + +[node name="LeekRing" parent="." unique_id=601839974 instance=ExtResource("1_cb47f")] +transform = Transform3D(0.5, 0, 0, 0, 0.4, 0, 0, 0, 0.5, 0.053702652, 0.04, -0.082) + +[node name="LeekRing2" parent="." unique_id=871702627 instance=ExtResource("1_cb47f")] +transform = Transform3D(0.5, 0, 0, 0, 0.4, 0, 0, 0, 0.5, -0.09291987, 0.04, 0.0293293) + +[node name="LeekRing3" parent="." unique_id=1947059454 instance=ExtResource("1_cb47f")] +transform = Transform3D(0.5, 0, 0, 0, 0.4, 0, 0, 0, 0.5, 0.05727595, 0.04, 0.08234578) diff --git a/client/map/items/sliced_leek/sliced_leek.tscn b/client/map/items/sliced_leek/sliced_leek.tscn index 701f4844..8d8bc2d7 100644 --- a/client/map/items/sliced_leek/sliced_leek.tscn +++ b/client/map/items/sliced_leek/sliced_leek.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://dght3ftij5nx6"] +[gd_scene format=3 uid="uid://dght3ftij5nx6"] [ext_resource type="ArrayMesh" uid="uid://bjb2vxii3mkny" path="res://map/items/sliced_leek/sliced_leek_1.res" id="1_ub7pe"] [ext_resource type="ArrayMesh" uid="uid://bthgt3jvyaet5" path="res://map/items/sliced_leek/sliced_leek_2.res" id="2_krib3"] @@ -6,32 +6,27 @@ [ext_resource type="ArrayMesh" uid="uid://deqd1uok1ahtn" path="res://map/items/sliced_leek/sliced_leek_4.res" id="4_eia2k"] [ext_resource type="ArrayMesh" uid="uid://cl36j3pufjfil" path="res://map/items/sliced_leek/sliced_leek_5.res" id="5_26kjl"] -[node name="SlicedLeek" type="Node3D"] +[node name="SlicedLeek" type="Node3D" unique_id=754926403] -[node name="Node3D" type="Node3D" parent="."] +[node name="Node3D" type="Node3D" parent="." unique_id=1618880656] transform = Transform3D(-7.649493e-08, 0, 1.75, 0, 1.75, 0, -1.75, 0, -7.649493e-08, 0, 0, 0) -[node name="leek_001" type="MeshInstance3D" parent="Node3D"] +[node name="leek_001" type="MeshInstance3D" parent="Node3D" unique_id=1739603265] transform = Transform3D(1, 0, 0, 0, 0.591008, 0.61566144, 0, -0.4617461, 0.7880107, 0, 0.03454741, 0.09892485) mesh = ExtResource("1_ub7pe") -skeleton = NodePath("") -[node name="leek_002" type="MeshInstance3D" parent="Node3D"] +[node name="leek_002" type="MeshInstance3D" parent="Node3D" unique_id=10737438] transform = Transform3D(1, 0, 0, 0, 0.591008, 0.61566144, 0, -0.4617461, 0.7880107, -2.0835932e-06, 0.03454531, 0.04651942) mesh = ExtResource("2_krib3") -skeleton = NodePath("") -[node name="leek_003" type="MeshInstance3D" parent="Node3D"] +[node name="leek_003" type="MeshInstance3D" parent="Node3D" unique_id=1275702161] transform = Transform3D(1, 0, 0, 0, 0.591008, 0.61566144, 0, -0.4617461, 0.7880107, -2.0874368e-06, 0.034545287, -0.004093088) mesh = ExtResource("3_eq1cv") -skeleton = NodePath("") -[node name="leek_004" type="MeshInstance3D" parent="Node3D"] +[node name="leek_004" type="MeshInstance3D" parent="Node3D" unique_id=2052531974] transform = Transform3D(1, 0, 0, 0, 0.591008, 0.61566144, 0, -0.4617461, 0.7880107, -2.085316e-06, 0.03454527, -0.05421468) mesh = ExtResource("4_eia2k") -skeleton = NodePath("") -[node name="leek_005" type="MeshInstance3D" parent="Node3D"] +[node name="leek_005" type="MeshInstance3D" parent="Node3D" unique_id=1421505896] transform = Transform3D(1, 0, 0, 0, 0.591008, 0.61566144, 0, -0.4617461, 0.7880107, -2.0847467e-06, 0.034545254, -0.10421119) mesh = ExtResource("5_26kjl") -skeleton = NodePath("") diff --git a/client/map/items/sliced_leek/sliced_leek_1.res b/client/map/items/sliced_leek/sliced_leek_1.res Binary files differindex 9a786370..dc5275d5 100644 --- a/client/map/items/sliced_leek/sliced_leek_1.res +++ b/client/map/items/sliced_leek/sliced_leek_1.res diff --git a/client/map/items/sliced_leek/sliced_leek_2.res b/client/map/items/sliced_leek/sliced_leek_2.res Binary files differindex 3234cd54..c0d7ccd3 100644 --- a/client/map/items/sliced_leek/sliced_leek_2.res +++ b/client/map/items/sliced_leek/sliced_leek_2.res diff --git a/client/map/items/sliced_leek/sliced_leek_3.res b/client/map/items/sliced_leek/sliced_leek_3.res Binary files differindex 2165204a..2fe303a4 100644 --- a/client/map/items/sliced_leek/sliced_leek_3.res +++ b/client/map/items/sliced_leek/sliced_leek_3.res diff --git a/client/map/items/sliced_leek/sliced_leek_4.res b/client/map/items/sliced_leek/sliced_leek_4.res Binary files differindex 05d54114..32c02690 100644 --- a/client/map/items/sliced_leek/sliced_leek_4.res +++ b/client/map/items/sliced_leek/sliced_leek_4.res diff --git a/client/map/items/sliced_leek/sliced_leek_5.res b/client/map/items/sliced_leek/sliced_leek_5.res Binary files differindex 90f4d4b2..93f9e009 100644 --- a/client/map/items/sliced_leek/sliced_leek_5.res +++ b/client/map/items/sliced_leek/sliced_leek_5.res diff --git a/client/map/items/sliced_leek/sliced_leek_6.res b/client/map/items/sliced_leek/sliced_leek_6.res Binary files differindex db0baeda..1cd6c906 100644 --- a/client/map/items/sliced_leek/sliced_leek_6.res +++ b/client/map/items/sliced_leek/sliced_leek_6.res diff --git a/client/map/items/sliced_lettuce.res b/client/map/items/sliced_lettuce.res Binary files differindex 1a748947..40cb0702 100644 --- a/client/map/items/sliced_lettuce.res +++ b/client/map/items/sliced_lettuce.res diff --git a/client/map/items/sliced_lettuce.tscn b/client/map/items/sliced_lettuce.tscn index f2840059..d5ec39ed 100644 --- a/client/map/items/sliced_lettuce.tscn +++ b/client/map/items/sliced_lettuce.tscn @@ -1,11 +1,10 @@ -[gd_scene load_steps=2 format=3 uid="uid://c8tjoqcdn1gpj"] +[gd_scene format=3 uid="uid://c8tjoqcdn1gpj"] [ext_resource type="ArrayMesh" uid="uid://jkb0e8d584uo" path="res://map/items/sliced_lettuce.res" id="1_y7x7n"] -[node name="SlicedLettuce" type="Node3D"] +[node name="SlicedLettuce" type="Node3D" unique_id=814161375] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01, 0) -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=189735380] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.01, 0) mesh = ExtResource("1_y7x7n") -skeleton = NodePath("") diff --git a/client/map/items/sliced_mushroom.res b/client/map/items/sliced_mushroom.res Binary files differnew file mode 100644 index 00000000..94b17fe4 --- /dev/null +++ b/client/map/items/sliced_mushroom.res diff --git a/client/map/items/sliced_mushroom.tscn b/client/map/items/sliced_mushroom.tscn new file mode 100644 index 00000000..17945fc0 --- /dev/null +++ b/client/map/items/sliced_mushroom.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://8waoyr3a7c6q"] + +[ext_resource type="ArrayMesh" uid="uid://13uivbfdn4kb" path="res://map/items/sliced_mushroom.res" id="1_4k44b"] + +[node name="SlicedMushroom" type="Node3D" unique_id=771921867] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1483580511] +transform = Transform3D(0.8, 0, 0, 0, -0.7250462, -0.33809468, 0, 0.33809468, -0.7250462, 0, 0.059715845, 0.1) +mesh = ExtResource("1_4k44b") diff --git a/client/map/items/sliced_potato.tscn b/client/map/items/sliced_potato.tscn index ec48414d..f64eafd3 100644 --- a/client/map/items/sliced_potato.tscn +++ b/client/map/items/sliced_potato.tscn @@ -1,14 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://b85iw6rv2snx8"] +[gd_scene format=3 uid="uid://b85iw6rv2snx8"] [ext_resource type="ArrayMesh" uid="uid://b4ayvyhakbe7t" path="res://map/items/french_fries.res" id="1_ikao7"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_qhqrd"] albedo_color = Color(0.88, 0.7546, 0.484, 1) -[node name="SlicedPotato" type="Node3D"] +[node name="SlicedPotato" type="Node3D" unique_id=552755740] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=983811931] transform = Transform3D(0.75, 0, 0, 0, 0.75, 0, 0, 0, 0.75, 0, 0, -0.112) mesh = ExtResource("1_ikao7") -skeleton = NodePath("") surface_material_override/0 = SubResource("StandardMaterial3D_qhqrd") diff --git a/client/map/items/sliced_tomato.res b/client/map/items/sliced_tomato.res Binary files differindex 3594e6f9..37996910 100644 --- a/client/map/items/sliced_tomato.res +++ b/client/map/items/sliced_tomato.res diff --git a/client/map/items/sliced_tomato.tscn b/client/map/items/sliced_tomato.tscn index 28ba45f4..9ea93827 100644 --- a/client/map/items/sliced_tomato.tscn +++ b/client/map/items/sliced_tomato.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://8u4yp0323kiw"] +[gd_scene format=3 uid="uid://8u4yp0323kiw"] [ext_resource type="ArrayMesh" uid="uid://cwjqxolxw0ttl" path="res://map/items/sliced_tomato.res" id="1_6yvlk"] -[node name="SlicedTomato" type="Node3D"] +[node name="SlicedTomato" type="Node3D" unique_id=1212521096] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=642983217] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_6yvlk") -skeleton = NodePath("") diff --git a/client/map/items/sliced_tomato_sliced_lettuce_fill.tscn b/client/map/items/sliced_tomato_sliced_lettuce_fill.tscn index 75ef95f1..4d0c4c4f 100644 --- a/client/map/items/sliced_tomato_sliced_lettuce_fill.tscn +++ b/client/map/items/sliced_tomato_sliced_lettuce_fill.tscn @@ -1,35 +1,35 @@ -[gd_scene load_steps=3 format=3 uid="uid://cy12k7ghclh2g"] +[gd_scene format=3 uid="uid://cy12k7ghclh2g"] [ext_resource type="ArrayMesh" uid="uid://cwjqxolxw0ttl" path="res://map/items/sliced_tomato.res" id="1_gnakr"] [ext_resource type="ArrayMesh" uid="uid://jkb0e8d584uo" path="res://map/items/sliced_lettuce.res" id="3_6hedi"] -[node name="SlicedTomatoFill" type="Node3D"] +[node name="SlicedTomatoFill" type="Node3D" unique_id=1588553817] -[node name="Mesh8" type="MeshInstance3D" parent="."] +[node name="Mesh8" type="MeshInstance3D" parent="." unique_id=1786817704] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, -0.1, 0.04, 0) mesh = ExtResource("1_gnakr") -[node name="Mesh11" type="MeshInstance3D" parent="."] +[node name="Mesh11" type="MeshInstance3D" parent="." unique_id=64683158] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0.1, 0.04, 0) mesh = ExtResource("1_gnakr") -[node name="Mesh12" type="MeshInstance3D" parent="."] +[node name="Mesh12" type="MeshInstance3D" parent="." unique_id=1975270560] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.04, 0.1) mesh = ExtResource("1_gnakr") -[node name="Mesh13" type="MeshInstance3D" parent="."] +[node name="Mesh13" type="MeshInstance3D" parent="." unique_id=1081920419] transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0.04, -0.1) mesh = ExtResource("1_gnakr") -[node name="Mesh9" type="MeshInstance3D" parent="."] +[node name="Mesh9" type="MeshInstance3D" parent="." unique_id=1635978560] transform = Transform3D(0.28, 0, 0, 0, 0.28, 0, 0, 0, 0.28, 0.0815632, 0.0377627, -0.0198822) visible = false mesh = ExtResource("1_gnakr") -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=364673189] transform = Transform3D(0.45, 0, 0, 0, 0.45, 0, 0, 0, 0.45, 0, 0.025, 0) mesh = ExtResource("3_6hedi") -[node name="MeshInstance3D4" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D4" type="MeshInstance3D" parent="." unique_id=196525840] transform = Transform3D(0.279, 0, 0, 0, 0.279, 0, 0, 0, 0.279, 0, 0.075, 0) mesh = ExtResource("3_6hedi") diff --git a/client/map/items/steak.res b/client/map/items/steak.res Binary files differindex 8deb7f8a..21d27302 100644 --- a/client/map/items/steak.res +++ b/client/map/items/steak.res diff --git a/client/map/items/steak.tscn b/client/map/items/steak.tscn index 59846d8a..8efb2b19 100644 --- a/client/map/items/steak.tscn +++ b/client/map/items/steak.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://c8ylx2rsklp2y"] +[gd_scene format=3 uid="uid://c8ylx2rsklp2y"] [ext_resource type="ArrayMesh" uid="uid://tuorjx63f0ij" path="res://map/items/steak.res" id="1_iei2f"] -[node name="Steak" type="Node3D"] +[node name="Steak" type="Node3D" unique_id=273592414] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=683408760] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_iei2f") -skeleton = NodePath("") diff --git a/client/map/items/steam.tscn b/client/map/items/steam.tscn index a6114124..2097c1ee 100644 --- a/client/map/items/steam.tscn +++ b/client/map/items/steam.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://g1wsqgb56o1o"] +[gd_scene format=3 uid="uid://g1wsqgb56o1o"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e1q7j"] transparency = 1 @@ -13,7 +13,7 @@ height = 0.2 _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"] +[node name="Steam" type="CPUParticles3D" unique_id=1010015344] emitting = false amount = 25 lifetime = 2.0 diff --git a/client/map/items/strawberry.res b/client/map/items/strawberry.res Binary files differindex 60da68ed..b92780ef 100644 --- a/client/map/items/strawberry.res +++ b/client/map/items/strawberry.res diff --git a/client/map/items/strawberry.tscn b/client/map/items/strawberry.tscn index 90df0c3c..cc9464e0 100644 --- a/client/map/items/strawberry.tscn +++ b/client/map/items/strawberry.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://df1xktleeqg3m"] +[gd_scene 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="Strawberry" type="Node3D" unique_id=613205790] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1524130613] transform = Transform3D(-5.68248e-10, 1.1365e-09, 0.013, 0, -0.013, 1.1365e-09, 0.013, 4.96778e-17, 5.68248e-10, 0, 0.125, 0) mesh = ExtResource("1_8dx1o") -skeleton = NodePath("") diff --git a/client/map/items/tomato.res b/client/map/items/tomato.res Binary files differindex aafc8738..77d921cf 100644 --- a/client/map/items/tomato.res +++ b/client/map/items/tomato.res diff --git a/client/map/items/tomato.tscn b/client/map/items/tomato.tscn index 4589cca5..e68801d8 100644 --- a/client/map/items/tomato.tscn +++ b/client/map/items/tomato.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cvgmmrm8xqg4t"] +[gd_scene format=3 uid="uid://cvgmmrm8xqg4t"] [ext_resource type="ArrayMesh" uid="uid://bh5t6gqdxv1t8" path="res://map/items/tomato.res" id="1_8xuup"] -[node name="Tomato" type="Node3D"] +[node name="Tomato" type="Node3D" unique_id=256268001] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1541018452] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_8xuup") -skeleton = NodePath("") diff --git a/client/map/items/unknown_item.gd b/client/map/items/unknown_item.gd index ec6cab1a..da43eb08 100644 --- a/client/map/items/unknown_item.gd +++ b/client/map/items/unknown_item.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/items/unknown_item.tscn b/client/map/items/unknown_item.tscn index 5e8b317a..fa838e9b 100644 --- a/client/map/items/unknown_item.tscn +++ b/client/map/items/unknown_item.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://cw54drt6oqxpd"] +[gd_scene format=3 uid="uid://cw54drt6oqxpd"] [sub_resource type="BoxMesh" id="BoxMesh_e6d7n"] @@ -7,9 +7,9 @@ albedo_color = Color(1, 0, 1, 1) emission_enabled = true emission = Color(1, 0, 1, 1) -[node name="UnknownItem" type="Node3D"] +[node name="UnknownItem" type="Node3D" unique_id=1035215297] -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1034064644] transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.2, 0) mesh = SubResource("BoxMesh_e6d7n") surface_material_override/0 = SubResource("StandardMaterial3D_voy47") diff --git a/client/map/items/unknown_order.tscn b/client/map/items/unknown_order.tscn index 24116387..558be6f4 100644 --- a/client/map/items/unknown_order.tscn +++ b/client/map/items/unknown_order.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://dgg7srscxmtmy"] +[gd_scene format=3 uid="uid://dgg7srscxmtmy"] [ext_resource type="FontFile" uid="uid://bo4vh5xkpvrh1" path="res://gui/resources/fonts/font-sansita-swashed.woff2" id="1_3pq52"] @@ -8,9 +8,9 @@ variation_opentype = { 2003265652: 700 } -[node name="UnknownOrder" type="Node3D"] +[node name="UnknownOrder" type="Node3D" unique_id=1440369537] -[node name="Label3D" type="Label3D" parent="."] +[node name="Label3D" type="Label3D" parent="." unique_id=717159416] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.189058, 0) pixel_size = 0.0025 billboard = 1 diff --git a/client/map/kitchen_background.gd b/client/map/kitchen_background.gd index 4b728a94..456aa598 100644 --- a/client/map/kitchen_background.gd +++ b/client/map/kitchen_background.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -22,13 +22,13 @@ func _ready() -> void: func init_map(): var map_tile = func (t): match t: - ".": return "floor" - "=": return "counter" - "s": return "stove" - "c": return "chair" - "t": return "table" - "o": return "oven" - "#": return "wall" + ".": return ["floor"] + "=": return ["counter"] + "s": return ["stove"] + "c": return ["chair"] + "t": return ["table"] + "o": return ["oven"] + "#": return ["wall"] _: push_error("unknown tile: ", t) var tiles = [ "...............", @@ -39,9 +39,10 @@ func init_map(): ".............=#", ".............=#" ].map(func (l): return Array(l.split("")).map(map_tile)) - var gt = func (e): return null if e[1] >= tiles.size() else null if e[0] >= tiles[e[1]].size() else tiles[e[1]][e[0]] - var co = Vector2i(floor(tiles[0].size() / 2), floor(tiles.size() - 2)) - for y in tiles.size(): - for x in tiles[y].size(): - map.set_tile(Vector2i(x,y) - co, gt.call([x,y]), [[x,y-1],[x-1,y],[x,y+1],[x+1,y]].map(gt)) + var offset = Vector2i(floor(tiles[0].size() / 2), floor(tiles.size() - 2)) + var pos_to_tile: Dictionary[Vector2i, Array] = {} # : Dictionary[Vector2i, Array[String]] + for y in range(tiles.size()): + for x in range(tiles[y].size()): + pos_to_tile[Vector2i(x,y) - offset] = tiles[y][x] + map.set_all_tiles(pos_to_tile) map.flush() diff --git a/client/map/kitchen_background.tscn b/client/map/kitchen_background.tscn index 5d572f73..918a6403 100644 --- a/client/map/kitchen_background.tscn +++ b/client/map/kitchen_background.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://wwu574dq2r8h"] +[gd_scene format=3 uid="uid://wwu574dq2r8h"] [ext_resource type="PackedScene" uid="uid://b4gone8fu53r7" path="res://map/map.tscn" id="1_heqla"] [ext_resource type="Script" uid="uid://ddpr5p4c6p8pn" path="res://map/kitchen_background.gd" id="1_ppf8f"] @@ -13,18 +13,18 @@ size = Vector3(14, 5, 0.3) [sub_resource type="BoxMesh" id="BoxMesh_xidlh"] size = Vector3(7.5, 5, 0.3) -[node name="KitchenBackground" type="Node3D"] +[node name="KitchenBackground" type="Node3D" unique_id=296843447] script = ExtResource("1_ppf8f") -[node name="Map" parent="." instance=ExtResource("1_heqla")] +[node name="Map" parent="." unique_id=1312929770 instance=ExtResource("1_heqla")] -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1245737099] environment = SubResource("Environment_ex25y") -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1705656468] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.5, -3.5) mesh = SubResource("BoxMesh_ppf8f") -[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1171319920] transform = Transform3D(-4.371139e-08, 0, 1, 0, 1, 0, -1, 0, -4.371139e-08, 7.5, 0.5, -1) mesh = SubResource("BoxMesh_xidlh") diff --git a/client/map/map.gd b/client/map/map.gd index f6cb2f82..00f0f7b3 100644 --- a/client/map/map.gd +++ b/client/map/map.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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,52 +17,87 @@ class_name Map extends Node3D class TileInfo: - func _init(position_, name_, tile_, neighbours_) -> void: - position = position_; name = name_; tile = tile_; neighbours = neighbours_ + func _init(position_, tiles_, tile_instances_, tile_parent_) -> void: + position = position_; tiles = tiles_; tile_instances = tile_instances_; tile_parent = tile_parent_ var position: Vector2i - var name: String - var tile: Tile - var neighbours: Array + var tiles: Array # Array[String] + var tile_instances: Array[Tile] + var tile_parent: Node3D + var interact_tile: Tile + +const NEIGHBOR_OFFSETS: Array[Vector2i] = [Vector2i.UP, Vector2i.LEFT, Vector2i.DOWN, Vector2i.RIGHT] var tile_by_pos: Dictionary[Vector2i, TileInfo] = {} -var autobake = false +var autoflush = false var currently_baked = false var floor_node := MeshInstance3D.new() -var tile_factory = TileFactory.new() +var tile_factory := TileFactory.new() -func get_tile_name(pos: Vector2i): # -> String? +func get_tiles_at(pos: Vector2i): # -> Array[String]? var e = tile_by_pos.get(pos) - if e != null: return e.name - else: return null -func get_tile_instance(pos: Vector2i) -> Tile: + if e == null: return null + return e.tiles +func get_topmost_instance(pos: Vector2i): # -> Tile? var e = tile_by_pos.get(pos) - if e != null: return e.tile - else: return null + if e == null: return null + return e.tile_instances[-1] +func get_tile_item(pos: Vector2i): # -> Item? + var e = get_topmost_instance(pos) + if e == null: return null + return e.item -func set_tile(pos: Vector2i, name_: String, neighbors: Array = [null,null,null,null]) -> Tile: - clear_tile(pos) - var tile := tile_factory.produce(name_, pos, neighbors) - add_child(tile) - tile.position = Vector3(pos.x, 0, pos.y) - tile_by_pos[pos] = TileInfo.new(pos, name_, tile, neighbors) - return tile +func set_all_tiles(changes: Dictionary[Vector2i, Array], srv: Game.ServerContext = null): + for pos: Vector2i in changes: + set_tiles(Vector2i(pos.x, pos.y), changes[pos], changes, srv) -func clear_tile(pos: Vector2i): - var tile = get_tile_instance(pos) - if tile == null: return - if tile.item != null: tile.item.queue_free() - if tile is FloorLike: - var floor_mesher = tile_factory.floor_meshers.get(tile.fm_id()) - if floor_mesher != null: - floor_mesher.remove_tile(pos) - tile.queue_free() +func set_tiles(pos: Vector2i, tiles: Array = [], pending_changes: Dictionary[Vector2i, Array] = {}, srv: Game.ServerContext = null): # tiles: Array[String] + var tile_info = tile_by_pos.get(pos) + if tile_info != null: + for inst: Tile in tile_info.tile_instances: + for tile: String in tiles: + # TODO: Don't return, but handle changes which weren't handled by the instance below. + if inst.change(tile): return # Instance handled change itself! + _remove_tile(pos) + if not tiles.is_empty(): _add_tiles(pos, tiles, pending_changes, srv) + if autoflush: flush() + +func _add_tiles(pos: Vector2i, tiles: Array, pending_changes: Dictionary[Vector2i, Array], srv: Game.ServerContext) -> void: + # Find neighbor tile names + var neighbors: Array[Array] = [] # Array[Array[String]] + for offset: Vector2i in NEIGHBOR_OFFSETS: + var neighbor_pos: Vector2i = pos + offset + if pending_changes.has(neighbor_pos): + neighbors.append(pending_changes[neighbor_pos]) + elif tile_by_pos.has(neighbor_pos): + neighbors.append(tile_by_pos[neighbor_pos]) + else: neighbors.append([]) + + var tiles_parent = Node3D.new() + tiles_parent.name = str(pos) + var tile_instances = tile_factory.produce(tiles_parent, tiles, pos, neighbors, srv) + tile_by_pos[pos] = TileInfo.new(pos, tiles, tile_instances, tiles_parent) + add_child(tiles_parent) + +func _remove_tile(pos: Vector2i): + var tile_info = tile_by_pos.get(pos) + if tile_info == null: return + + var topmost_instance = get_topmost_instance(pos) + if topmost_instance.item != null: + topmost_instance.item.queue_free() + + for instance: Tile in tile_info.tile_instances: + if instance is FloorLike: + var floor_mesher = tile_factory.floor_meshers.get(instance.fm_id()) + if floor_mesher != null: + floor_mesher.remove_tile(pos) + instance.queue_free() tile_by_pos.erase(pos) - tile.name += "_queued_free" @onready var voxelgi: VoxelGI = $VoxelGI func _ready(): - Settings.hook_changed("graphics.gi", "main", apply_gi_setting) + Settings.hook_changed("graphics.gi", self, apply_gi_setting) floor_node.material_override = preload("res://map/tiles/floor_material.tres") for fm in tile_factory.floor_meshers.values(): add_child(fm.mesh_instance) diff --git a/client/map/map.tscn b/client/map/map.tscn index 84a4f09b..27cd3900 100644 --- a/client/map/map.tscn +++ b/client/map/map.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://b4gone8fu53r7"] +[gd_scene format=3 uid="uid://b4gone8fu53r7"] [ext_resource type="Script" uid="uid://bxuukjyme1git" path="res://map/map.gd" id="1_3en0a"] @@ -6,9 +6,9 @@ [sub_resource type="VoxelGIData" id="VoxelGIData_m5j5n"] -[node name="Map" type="Node3D"] +[node name="Map" type="Node3D" unique_id=764657840] script = ExtResource("1_3en0a") -[node name="VoxelGI" type="VoxelGI" parent="."] +[node name="VoxelGI" type="VoxelGI" parent="." unique_id=1789448607] camera_attributes = SubResource("CameraAttributesPractical_kwk4i") data = SubResource("VoxelGIData_m5j5n") diff --git a/client/map/tiles/leek_crate.gd b/client/map/particles/checkmark/checkmark.gd index b90f6602..8a5cc248 100644 --- a/client/map/tiles/leek_crate.gd +++ b/client/map/particles/checkmark/checkmark.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,7 @@ # 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 LeekCrate -extends Crate +extends CPUParticles3D -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/leek_crate.tscn").instantiate()) +func _on_finished() -> void: + queue_free() diff --git a/client/map/particles/checkmark/checkmark.gd.uid b/client/map/particles/checkmark/checkmark.gd.uid new file mode 100644 index 00000000..913fb945 --- /dev/null +++ b/client/map/particles/checkmark/checkmark.gd.uid @@ -0,0 +1 @@ +uid://bj1h0r3qvy6vm diff --git a/client/map/particles/checkmark/checkmark.svg b/client/map/particles/checkmark/checkmark.svg new file mode 100644 index 00000000..f8a31e29 --- /dev/null +++ b/client/map/particles/checkmark/checkmark.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="256px" viewBox="0 -960 960 960" width="256px" fill="#FFFFFF"><path d="m419-283 294-294-66-66-228 228-111-111-65 66 176 177Zm61.14 228Q392-55 314.51-88.08q-77.48-33.09-135.41-91.02-57.93-57.93-91.02-135.27Q55-391.72 55-479.86 55-569 88.08-646.49q33.09-77.48 90.86-134.97 57.77-57.48 135.19-91.01Q391.56-906 479.78-906q89.22 0 166.83 33.45 77.6 33.46 135.01 90.81t90.89 134.87Q906-569.34 906-480q0 88.28-33.53 165.75t-91.01 135.28q-57.49 57.8-134.83 90.89Q569.28-55 480.14-55Z"/></svg>
\ No newline at end of file diff --git a/client/map/particles/checkmark/checkmark.svg.import b/client/map/particles/checkmark/checkmark.svg.import new file mode 100644 index 00000000..4011e4f8 --- /dev/null +++ b/client/map/particles/checkmark/checkmark.svg.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c10wjga8ni7eq" +path.s3tc="res://.godot/imported/checkmark.svg-6dd7b104b667f47666846eb9f77215a8.s3tc.ctex" +path.etc2="res://.godot/imported/checkmark.svg-6dd7b104b667f47666846eb9f77215a8.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://map/particles/checkmark/checkmark.svg" +dest_files=["res://.godot/imported/checkmark.svg-6dd7b104b667f47666846eb9f77215a8.s3tc.ctex", "res://.godot/imported/checkmark.svg-6dd7b104b667f47666846eb9f77215a8.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/client/map/particles/checkmark/checkmark.tscn b/client/map/particles/checkmark/checkmark.tscn new file mode 100644 index 00000000..25e3d606 --- /dev/null +++ b/client/map/particles/checkmark/checkmark.tscn @@ -0,0 +1,45 @@ +[gd_scene format=3 uid="uid://bdbw8whs3data"] + +[ext_resource type="Texture2D" uid="uid://c10wjga8ni7eq" path="res://map/particles/checkmark/checkmark.svg" id="1_co83x"] +[ext_resource type="Script" uid="uid://bj1h0r3qvy6vm" path="res://map/particles/checkmark/checkmark.gd" id="2_ru6ov"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ru6ov"] +transparency = 1 +no_depth_test = true +shading_mode = 0 +vertex_color_use_as_albedo = true +albedo_texture = ExtResource("1_co83x") +billboard_mode = 3 +billboard_keep_scale = true +particles_anim_h_frames = 1 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="QuadMesh" id="QuadMesh_4d8iq"] +material = SubResource("StandardMaterial3D_ru6ov") + +[sub_resource type="Curve" id="Curve_co83x"] +_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.25675318, 1), 0.0, 0.0, 0, 0, Vector2(0.9931608, 1), 0.0, 0.0, 0, 0] +point_count = 3 + +[sub_resource type="Gradient" id="Gradient_gh7p3"] +offsets = PackedFloat32Array(0, 0.26672226, 0.4904026, 1) +colors = PackedColorArray(1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) + +[node name="Checkmark" type="CPUParticles3D" unique_id=56025052] +emitting = false +amount = 1 +one_shot = true +explosiveness = 1.0 +mesh = SubResource("QuadMesh_4d8iq") +direction = Vector3(0, 0, 0) +spread = 0.0 +gravity = Vector3(0, 0, 0) +scale_amount_min = 0.3 +scale_amount_max = 0.3 +scale_amount_curve = SubResource("Curve_co83x") +color = Color(0, 1, 0, 1) +color_ramp = SubResource("Gradient_gh7p3") +script = ExtResource("2_ru6ov") + +[connection signal="finished" from="." to="." method="_on_finished"] diff --git a/client/map/progress/progress.gd b/client/map/progress/progress.gd index d8d714ba..be8de5ae 100644 --- a/client/map/progress/progress.gd +++ b/client/map/progress/progress.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/progress/progress.gdshader b/client/map/progress/progress.gdshader index 3c3557cd..cbf1a3d2 100644 --- a/client/map/progress/progress.gdshader +++ b/client/map/progress/progress.gdshader @@ -1,6 +1,6 @@ /* Hurry Curry! - a game about cooking - Copyright (C) 2025 Hurry Curry! Contributors + Copyright (C) 2026 Hurry Curry! Contributors 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 diff --git a/client/map/progress/progress.tscn b/client/map/progress/progress.tscn index af7dfe0a..b8182ea5 100644 --- a/client/map/progress/progress.tscn +++ b/client/map/progress/progress.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://4ewufm6tqhpb"] +[gd_scene format=3 uid="uid://4ewufm6tqhpb"] [ext_resource type="Shader" uid="uid://b3w7j4oka0yeb" path="res://map/progress/progress.gdshader" id="1_6f2a0"] [ext_resource type="Script" uid="uid://dmdqg418vkip6" path="res://map/progress/progress.gd" id="2_bb3u3"] @@ -13,7 +13,7 @@ shader = ExtResource("1_6f2a0") shader_parameter/progress = 0.0 shader_parameter/bad = false -[node name="Progress" type="MeshInstance3D"] +[node name="Progress" type="MeshInstance3D" unique_id=2131670011] mesh = SubResource("QuadMesh_m0itj") surface_material_override/0 = SubResource("ShaderMaterial_4k6cy") script = ExtResource("2_bb3u3") diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd index 5a7f7e3e..d3d1ca8d 100644 --- a/client/map/tile_factory.gd +++ b/client/map/tile_factory.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -20,8 +20,10 @@ extends Object class TileName: var name# : String var variant #: String? - func _init(raw_name: String): - var c = Array(raw_name.split(":")) + var raw_name: String + func _init(raw_name_: String): + raw_name = raw_name_ + var c = Array(raw_name_.split(":")) name = c[0]; variant = c[1] if c.size() >= 2 else null # TODO Array.get throws errors class TileCC: @@ -29,6 +31,9 @@ class TileCC: var position: Vector2i var neighbors: Array var floor_meshers: Dictionary[String, FloorMesher] + var server_context: Game.ServerContext + var below_tile_instances: Array[Tile] + var above_tile_names: Array[String] var floor_meshers: Dictionary[String, FloorMesher] = { "floor": FloorMesher.new(Floor.floor_mesh()), @@ -37,25 +42,57 @@ var floor_meshers: Dictionary[String, FloorMesher] = { "street": FloorMesher.new(Street.floor_mesh()) } -func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: +const TILE_COMBINATOR: Dictionary[Array, Array] = { # : Dictionary[Array[String], Array[String]] + ["counter", "sink"]: ["sink"] +} + +func produce(parent: Node3D, tile_names: Array, position: Vector2i, neighbors: Array, server_context: Game.ServerContext = null) -> Array[Tile]: + # Combinate tiles + tile_names = tile_names.duplicate() + for k in TILE_COMBINATOR: + if G.has_all(tile_names, k): + for item: String in k: tile_names.erase(item) + tile_names.append_array(TILE_COMBINATOR[k]) + + var tile_instances: Array[Tile] = [] + for i in range(tile_names.size()): + var tile_name: String = tile_names[i] + var above_tile_names: Array[String] = [] + above_tile_names.append_array(tile_names.slice(i+1, tile_names.size())) + var tile := produce_part(tile_name, position, neighbors, tile_instances, above_tile_names, server_context) + tile_instances.append(tile) + tile.position = Vector3(position.x, 0, position.y) + parent.add_child(tile) + + return tile_instances + +func produce_part(raw_name: String, position: Vector2i, neighbors: Array, below_tile_instances: Array[Tile] = [], above_tile_names: Array[String] = [], server_context: Game.ServerContext = null) -> Tile: var tile_name = TileName.new(raw_name) var ctx := TileCC.new() ctx.tile_name = tile_name ctx.position = position - ctx.neighbors = neighbors.map(func(n): return null if n == null else TileName.new(n).name) + ctx.neighbors = neighbors.map(func(a): + if a != null: + return a.map(func(b): return null if b == null else TileName.new(b).name) + else: return null + ) ctx.floor_meshers = floor_meshers + ctx.server_context = server_context + ctx.below_tile_instances = below_tile_instances + ctx.above_tile_names = above_tile_names match tile_name.name: - "black-hole-counter": return ItemPortal.new(ctx, false) - "black-hole": return PlayerPortal.new(ctx, false) - "book": return Book.new(ctx) - "ceiling-lamp": return CeilingLamp.new(ctx) + "book": return GenericTile.new(ctx, preload("res://map/tiles/book.tscn")) + "button": return Button_.new(ctx) + "button-base": return ButtonBase.new(ctx) + "ceiling-lamp": return GenericTile.new(ctx, preload("res://map/tiles/ceiling_lamp.tscn")) "chair": return Chair.new(ctx) - "chandelier": return Chandelier.new(ctx) + "chandelier": return GenericTile.new(ctx, preload("res://map/tiles/chandelier.tscn")) "conveyor": return Conveyor.new(ctx) "counter-window": return CounterWindow.new(ctx) - "counter": return CounterBase.new(ctx) + "counter-window-conveyor": return CounterWindowConveyor.new(ctx) + "counter": return Counter.new(ctx) "cutting-board": return CuttingBoard.new(ctx) "door": return Door.new(ctx) "fence": return Fence.new(ctx) @@ -63,9 +100,11 @@ func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: "freezer": return Freezer.new(ctx) "grass": return Grass.new(ctx) "lamp": return Lamp.new(ctx) + "map-selector": return GenericTile.new(ctx, preload("res://map/tiles/map_selector.tscn")) "oven": return Oven.new(ctx) "path": return Path.new(ctx) "rolling-board": return RollingBoard.new(ctx) + "screen": return Screen.new(ctx) "deep-fryer": return DeepFryer.new(ctx) "sink": return Sink.new(ctx) "stove": return Stove.new(ctx) @@ -75,8 +114,12 @@ func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: "tree": return ExteriorTree.new(ctx) "wall-window": return WallWindow.new(ctx) "wall": return Wall.new(ctx) - "white-hole-counter": return ItemPortal.new(ctx, true) - "white-hole": return PlayerPortal.new(ctx, true) + "white-hole-counter": return ItemPortal.new(ctx, 1) + "white-hole": return PlayerPortal.new(ctx) + "grey-hole-counter": return ItemPortal.new(ctx, 0) + "grey-hole": return PlayerPortal.new(ctx) + "black-hole-counter": return ItemPortal.new(ctx, -1) + "black-hole": return PlayerPortal.new(ctx) "house-balcony": return HouseBalcony.new(ctx) "house-door": return HouseDoor.new(ctx) @@ -86,19 +129,51 @@ func produce(raw_name: String, position: Vector2i, neighbors: Array) -> Tile: "house-roof": return HouseRoof.new(ctx) "house-roof-chimney": return HouseRoofChimney.new(ctx) - "bun-crate": return BunCrate.new(ctx) - "cheese-crate": return CheeseCrate.new(ctx) - "coconut-crate": return CoconutCrate.new(ctx) - "fish-crate": return FishCrate.new(ctx) - "flour-crate": return FlourCrate.new(ctx) - "leek-crate": return LeekCrate.new(ctx) - "lettuce-crate": return LettuceCrate.new(ctx) - "mushroom-crate": return MushroomCrate.new(ctx) - "steak-crate": return SteakCrate.new(ctx) - "rice-crate": return RiceCrate.new(ctx) - "strawberry-crate": return StrawberryCrate.new(ctx) - "tomato-crate": return TomatoCrate.new(ctx) - "potato-crate": return PotatoCrate.new(ctx) + "crate": return Crate.new(ctx) + + # TODO: update maps to use "crate:..." + "bun-crate": + ctx.tile_name.variant = "bun" + return Crate.new(ctx) + "cheese-crate": + ctx.tile_name.variant = "cheese" + return Crate.new(ctx) + "coconut-crate": + ctx.tile_name.variant = "coconut" + return Crate.new(ctx) + "fish-crate": + ctx.tile_name.variant = "fish" + return Crate.new(ctx) + "flour-crate": + ctx.tile_name.variant = "flour" + return Crate.new(ctx) + "leek-crate": + ctx.tile_name.variant = "leek" + return Crate.new(ctx) + "lettuce-crate": + ctx.tile_name.variant = "lettuce" + return Crate.new(ctx) + "mushroom-crate": + ctx.tile_name.variant = "mushroom" + return Crate.new(ctx) + "noodles-crate": + ctx.tile_name.variant = "noodles" + return Crate.new(ctx) + "steak-crate": + ctx.tile_name.variant = "steak" + return Crate.new(ctx) + "rice-crate": + ctx.tile_name.variant = "rice" + return Crate.new(ctx) + "strawberry-crate": + ctx.tile_name.variant = "strawberry" + return Crate.new(ctx) + "tomato-crate": + ctx.tile_name.variant = "tomato" + return Crate.new(ctx) + "potato-crate": + ctx.tile_name.variant = "potato" + return Crate.new(ctx) var t: push_warning("tile %s unknown" % t) diff --git a/client/map/tiles/active_interact_counter.gd b/client/map/tiles/active_interact_counter.gd new file mode 100644 index 00000000..b44c862a --- /dev/null +++ b/client/map/tiles/active_interact_counter.gd @@ -0,0 +1,61 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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/>. +# +@abstract +class_name ActiveInteractCounter +extends Tile + +var interact_sound: AudioStreamPlayer3D = AudioStreamPlayer3D.new() +var interact_tool: Node3D +var acting_players: Array[Player] = [] +var play_character_animation: Callable + +func _init(ctx: TileFactory.TileCC, station_model_: PackedScene, interact_tool_path: NodePath, play_character_animation_: Callable, audio_stream_: AudioStream): + super(ctx) + base.add_child(station_model_.instantiate()) + interact_sound.stream = audio_stream_ + add_child(interact_sound) + interact_tool = base.get_node(interact_tool_path) + play_character_animation = play_character_animation_ + +func progress(position_: float, speed: float, warn: bool, acting_players_: Array[Player]): + super(position_, speed, warn, acting_players) + + if speed != 0.: + if not interact_sound.playing: interact_sound.play() + acting_players = acting_players.filter(is_instance_valid) # Some players might have disconnected + var players_who_stopped := G.unordered_array_difference(acting_players, acting_players_) + for p: Player in players_who_stopped: + if p != null: play_character_animation.call(p, false) + for p: Player in acting_players_: + interact_tool.visible = false + play_character_animation.call(p, true) + elif speed == 0: + interact_sound.stop() + interact_tool.visible = true + for p: Player in acting_players: + play_character_animation.call(p, false) + acting_players = acting_players_ + +func finish(): + super() + acting_players = acting_players.filter(is_instance_valid) # Some players might have disconnected + for p: Player in acting_players: + play_character_animation.call(p, false) + interact_tool.visible = true + interact_sound.stop() + +static func interact_target(): # -> Vector3? + return Vector3(0., 0.575, 0.) diff --git a/client/map/tiles/active_interact_counter.gd.uid b/client/map/tiles/active_interact_counter.gd.uid new file mode 100644 index 00000000..c83526ff --- /dev/null +++ b/client/map/tiles/active_interact_counter.gd.uid @@ -0,0 +1 @@ +uid://bc4l8km0pnuq5 diff --git a/client/map/tiles/book.gd.uid b/client/map/tiles/book.gd.uid deleted file mode 100644 index a53157dc..00000000 --- a/client/map/tiles/book.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://tx2an1h38i3c diff --git a/client/map/tiles/book.res b/client/map/tiles/book.res Binary files differindex 9caf89f1..fa64057a 100644 --- a/client/map/tiles/book.res +++ b/client/map/tiles/book.res diff --git a/client/map/tiles/book.tscn b/client/map/tiles/book.tscn index 9e1b144c..c7e9d141 100644 --- a/client/map/tiles/book.tscn +++ b/client/map/tiles/book.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://c7fjfp5ygxsjc"] +[gd_scene format=3 uid="uid://c7fjfp5ygxsjc"] [ext_resource type="ArrayMesh" uid="uid://cgvow28wkwesp" path="res://map/tiles/book.res" id="1_vxs3d"] -[node name="Book" type="Node3D"] +[node name="Book" type="Node3D" unique_id=517586832] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=664640069] transform = Transform3D(1.19249e-08, 0, -1, 0, 1, 0, 1, 0, 1.19249e-08, 0, 0.5, 0) mesh = ExtResource("1_vxs3d") -skeleton = NodePath("") diff --git a/client/map/tiles/bun_crate.gd.uid b/client/map/tiles/bun_crate.gd.uid deleted file mode 100644 index 508d423c..00000000 --- a/client/map/tiles/bun_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://db7xuasfi403l diff --git a/client/map/tiles/bun_crate.tscn b/client/map/tiles/bun_crate.tscn index 00c8ead5..47460a14 100644 --- a/client/map/tiles/bun_crate.tscn +++ b/client/map/tiles/bun_crate.tscn @@ -1,34 +1,34 @@ -[gd_scene load_steps=3 format=3 uid="uid://bg2ykqq6rnyx6"] +[gd_scene format=3 uid="uid://bg2ykqq6rnyx6"] [ext_resource type="ArrayMesh" uid="uid://btn7oh1v2k40p" path="res://map/tiles/crate.res" id="1_84iuk"] [ext_resource type="ArrayMesh" uid="uid://ke5s5itvrqce" path="res://map/items/bun.res" id="2_a48hy"] -[node name="BunCrate" type="Node3D"] +[node name="BunCrate" type="Node3D" unique_id=1836475580] -[node name="Crate" type="MeshInstance3D" parent="."] +[node name="Crate" type="MeshInstance3D" parent="." unique_id=982382847] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_84iuk") -[node name="Bun" type="MeshInstance3D" parent="."] +[node name="Bun" type="MeshInstance3D" parent="." unique_id=1348733542] transform = Transform3D(0.35355335, -0.35355335, 0, 0.35355335, 0.35355335, 0, 0, 0, 0.5, 0.075, 0.15, -0.175) mesh = ExtResource("2_a48hy") -[node name="Bun2" type="MeshInstance3D" parent="."] +[node name="Bun2" type="MeshInstance3D" parent="." unique_id=590760409] transform = Transform3D(0.35355335, -0.35355335, 0, 0.35355335, 0.35355335, 0, 0, 0, 0.5, -0.15, 0.15, -0.175) mesh = ExtResource("2_a48hy") -[node name="Bun3" type="MeshInstance3D" parent="."] +[node name="Bun3" type="MeshInstance3D" parent="." unique_id=1530470047] transform = Transform3D(0.35355335, -0.35355335, 0, 0.35355335, 0.35355335, 0, 0, 0, 0.5, 0.3, 0.15, -0.175) mesh = ExtResource("2_a48hy") -[node name="Bun4" type="MeshInstance3D" parent="."] +[node name="Bun4" type="MeshInstance3D" parent="." unique_id=765223744] transform = Transform3D(-0.35355338, 0.35355338, -4.371139e-08, 0.35355338, 0.35355338, 0, 3.090862e-08, -3.090862e-08, -0.5, -0.09912277, 0.15, 0.175) mesh = ExtResource("2_a48hy") -[node name="Bun5" type="MeshInstance3D" parent="."] +[node name="Bun5" type="MeshInstance3D" parent="." unique_id=1175873093] transform = Transform3D(-0.35355338, 0.35355338, -4.371139e-08, 0.35355338, 0.35355338, 0, 3.090862e-08, -3.090862e-08, -0.5, 0.12587723, 0.15, 0.17499998) mesh = ExtResource("2_a48hy") -[node name="Bun6" type="MeshInstance3D" parent="."] +[node name="Bun6" type="MeshInstance3D" parent="." unique_id=1315373041] transform = Transform3D(-0.35355338, 0.35355338, -4.371139e-08, 0.35355338, 0.35355338, 0, 3.090862e-08, -3.090862e-08, -0.5, -0.3241228, 0.15, 0.17500001) mesh = ExtResource("2_a48hy") diff --git a/client/map/tiles/button/accept.svg b/client/map/tiles/button/accept.svg new file mode 100644 index 00000000..c703ae9a --- /dev/null +++ b/client/map/tiles/button/accept.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="128px" viewBox="0 -960 960 960" width="128px"> + <rect width="960" height="960" x="0" y="-960" fill="#00A300"/> + <path fill="#FFFFFF" d="m382-388 321-321q19-19 45-19t45 19q19 19 19 45t-19 45L427-253q-19 19-45 19t-45-19L167-423q-19-19-19-45t19-45q19-19 45-19t45 19l125 125Z"/> +</svg> diff --git a/client/map/tiles/button/accept.svg.import b/client/map/tiles/button/accept.svg.import new file mode 100644 index 00000000..010d0f2a --- /dev/null +++ b/client/map/tiles/button/accept.svg.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c1rx5o81pcv8g" +path.s3tc="res://.godot/imported/accept.svg-3967b4e72211bf837c252cb2420fcd55.s3tc.ctex" +path.etc2="res://.godot/imported/accept.svg-3967b4e72211bf837c252cb2420fcd55.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://map/tiles/button/accept.svg" +dest_files=["res://.godot/imported/accept.svg-3967b4e72211bf837c252cb2420fcd55.s3tc.ctex", "res://.godot/imported/accept.svg-3967b4e72211bf837c252cb2420fcd55.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/client/map/items/lettuce_crate.gd b/client/map/tiles/button/button.gd index 2a0ff5a5..f47eba2d 100644 --- a/client/map/items/lettuce_crate.gd +++ b/client/map/tiles/button/button.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,12 @@ # 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 LettuceCrate -extends Crate +class_name Button_ +extends Tile + +var button: ButtonModel = load("res://map/tiles/button/button.tscn").instantiate() func _init(ctx: TileFactory.TileCC): super(ctx) - base.add_child(load("res://map/tiles/lettuce_crate.tscn").instantiate()) + base.add_child(button) + button.set_up(ctx.tile_name.variant) diff --git a/client/map/tiles/button/button.gd.uid b/client/map/tiles/button/button.gd.uid new file mode 100644 index 00000000..1475ad20 --- /dev/null +++ b/client/map/tiles/button/button.gd.uid @@ -0,0 +1 @@ +uid://dyxxrus52yxxi diff --git a/client/map/tiles/button/button.tscn b/client/map/tiles/button/button.tscn new file mode 100644 index 00000000..c8ba94ac --- /dev/null +++ b/client/map/tiles/button/button.tscn @@ -0,0 +1,36 @@ +[gd_scene format=3 uid="uid://nhmmgqwlmc8g"] + +[ext_resource type="ArrayMesh" uid="uid://cgq0beass0omg" path="res://map/tiles/button/button_static.res" id="1_tihjt"] +[ext_resource type="Script" uid="uid://c06qln7x5266q" path="res://map/tiles/button/button_model.gd" id="1_ubqac"] +[ext_resource type="ArrayMesh" uid="uid://dhaxbrl6a0vg" path="res://map/tiles/button/button_dynamic_cancel.res" id="2_ubqac"] +[ext_resource type="ArrayMesh" uid="uid://u6ugrx5nrfj7" path="res://map/tiles/button/button_dynamic_accept.res" id="3_lxai3"] + +[node name="Button" type="Node3D" unique_id=1558887746] +script = ExtResource("1_ubqac") + +[node name="StaticMesh" type="MeshInstance3D" parent="." unique_id=1131117450] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.55, 0) +mesh = ExtResource("1_tihjt") + +[node name="Dynamic" type="Node3D" parent="." unique_id=509704898] + +[node name="Reject" type="MeshInstance3D" parent="Dynamic" unique_id=1474668033] +transform = Transform3D(0.375, 0, 0, 0, 0.5, 0, 0, 0, 0.375, 0, 0.525, 0) +visible = false +mesh = ExtResource("2_ubqac") + +[node name="Accept" type="MeshInstance3D" parent="Dynamic" unique_id=1159246571] +transform = Transform3D(0.375, 0, 0, 0, 0.5, 0, 0, 0, 0.375, 0, 0.525, 0) +mesh = ExtResource("3_lxai3") + +[node name="DynamicPressed" type="MeshInstance3D" parent="." unique_id=90564715] +transform = Transform3D(0.75, 0, 0, 0, 1, 0, 0, 0, 0.75, 0, 1.0500001, 0) +visible = false +mesh = ExtResource("2_ubqac") + +[node name="OmniLight3D" type="OmniLight3D" parent="DynamicPressed" unique_id=172878339] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.52889466, 0) +light_color = Color(1, 0, 0, 1) +omni_range = 2.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=326186226] diff --git a/client/map/tiles/button/button_dynamic_accept.res b/client/map/tiles/button/button_dynamic_accept.res Binary files differnew file mode 100644 index 00000000..21440b95 --- /dev/null +++ b/client/map/tiles/button/button_dynamic_accept.res diff --git a/client/map/tiles/button/button_dynamic_cancel.res b/client/map/tiles/button/button_dynamic_cancel.res Binary files differnew file mode 100644 index 00000000..d17c4dd3 --- /dev/null +++ b/client/map/tiles/button/button_dynamic_cancel.res diff --git a/client/map/tiles/button/button_model.gd b/client/map/tiles/button/button_model.gd new file mode 100644 index 00000000..41a4674f --- /dev/null +++ b/client/map/tiles/button/button_model.gd @@ -0,0 +1,28 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 ButtonModel +extends Node3D + +func set_up(variant: String): + match variant: + "accept": + $Dynamic/Accept.visible = true + $Dynamic/Reject.visible = false + "reject": + $Dynamic/Accept.visible = false + $Dynamic/Reject.visible = true + _: + push_error("Unrecognized button variant: %s" % variant) diff --git a/client/map/tiles/button/button_model.gd.uid b/client/map/tiles/button/button_model.gd.uid new file mode 100644 index 00000000..c9555c31 --- /dev/null +++ b/client/map/tiles/button/button_model.gd.uid @@ -0,0 +1 @@ +uid://c06qln7x5266q diff --git a/client/map/tiles/button/button_static.res b/client/map/tiles/button/button_static.res Binary files differnew file mode 100644 index 00000000..23ec99ec --- /dev/null +++ b/client/map/tiles/button/button_static.res diff --git a/client/map/tiles/button/cancel.svg b/client/map/tiles/button/cancel.svg new file mode 100644 index 00000000..4f62fa5f --- /dev/null +++ b/client/map/tiles/button/cancel.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="128px" viewBox="0 -960 960 960" width="128px"> + <rect width="960" height="960" x="0" y="-960" fill="#EA0026"/> + <path fill="#FFFFFF" d="M480-392 300-212q-18 18-44 18t-44-18q-18-18-18-44t18-44l180-180-180-180q-18-18-18-44t18-44q18-18 44-18t44 18l180 180 180-180q18-18 44-18t44 18q18 18 18 44t-18 44L568-480l180 180q18 18 18 44t-18 44q-18 18-44 18t-44-18L480-392Z"/> +</svg> diff --git a/client/map/tiles/button/cancel.svg.import b/client/map/tiles/button/cancel.svg.import new file mode 100644 index 00000000..98ab8ec5 --- /dev/null +++ b/client/map/tiles/button/cancel.svg.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blp5workmjdpi" +path.s3tc="res://.godot/imported/cancel.svg-c3c8e16f267e99928c19f8a5251da6ef.s3tc.ctex" +path.etc2="res://.godot/imported/cancel.svg-c3c8e16f267e99928c19f8a5251da6ef.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://map/tiles/button/cancel.svg" +dest_files=["res://.godot/imported/cancel.svg-c3c8e16f267e99928c19f8a5251da6ef.s3tc.ctex", "res://.godot/imported/cancel.svg-c3c8e16f267e99928c19f8a5251da6ef.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/client/map/tiles/button/map.svg b/client/map/tiles/button/map.svg new file mode 100644 index 00000000..11146ddd --- /dev/null +++ b/client/map/tiles/button/map.svg @@ -0,0 +1,4 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="128px" viewBox="0 -960 960 960" width="128px"> + <rect width="960" height="960" x="0" y="-960" fill="#0053C1"/> + <path fill="#FFFFFF" d="m612-94-263-93-170 69q-30 14-57-3.5T95-173v-558q0-21 12-38t32-24l210-73 263 92 169-69q30-13 57.5 4t27.5 51v565q0 20-12.5 34.5T822-168L612-94Zm-34-112v-484l-196-66v484l196 66Zm60 0 133-43v-492l-133 51v484Zm-449-15 133-51v-484l-133 44v491Zm449-469v484-484Zm-316-66v484-484Z"/> +</svg> diff --git a/client/map/tiles/button/map.svg.import b/client/map/tiles/button/map.svg.import new file mode 100644 index 00000000..c2471747 --- /dev/null +++ b/client/map/tiles/button/map.svg.import @@ -0,0 +1,45 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dnbivk0cko3kn" +path.s3tc="res://.godot/imported/map.svg-83021c6555bc23e5e8a2e0aa8351ba08.s3tc.ctex" +path.etc2="res://.godot/imported/map.svg-83021c6555bc23e5e8a2e0aa8351ba08.etc2.ctex" +metadata={ +"imported_formats": ["s3tc_bptc", "etc2_astc"], +"vram_texture": true +} + +[deps] + +source_file="res://map/tiles/button/map.svg" +dest_files=["res://.godot/imported/map.svg-83021c6555bc23e5e8a2e0aa8351ba08.s3tc.ctex", "res://.godot/imported/map.svg-83021c6555bc23e5e8a2e0aa8351ba08.etc2.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/client/map/tiles/flour_crate.gd b/client/map/tiles/button_base.gd index a8fd5386..1ceee5e2 100644 --- a/client/map/tiles/flour_crate.gd +++ b/client/map/tiles/button_base.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,12 @@ # 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 FlourCrate -extends Crate +class_name ButtonBase +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) - base.add_child(load("res://map/tiles/flour_crate.tscn").instantiate()) + base.add_child(load("res://map/tiles/button_base.tscn").instantiate()) + +static func interact_target(): # -> Vector3? + return Vector3(0, .5, 0) diff --git a/client/map/tiles/button_base.gd.uid b/client/map/tiles/button_base.gd.uid new file mode 100644 index 00000000..eafbd5d4 --- /dev/null +++ b/client/map/tiles/button_base.gd.uid @@ -0,0 +1 @@ +uid://dblj24kid00tx diff --git a/client/map/tiles/button_base.res b/client/map/tiles/button_base.res Binary files differnew file mode 100644 index 00000000..ba909081 --- /dev/null +++ b/client/map/tiles/button_base.res diff --git a/client/map/tiles/button_base.tscn b/client/map/tiles/button_base.tscn new file mode 100644 index 00000000..8e3efbab --- /dev/null +++ b/client/map/tiles/button_base.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://bfbq0lsh7gp21"] + +[ext_resource type="ArrayMesh" uid="uid://d3867ya8moxb5" path="res://map/tiles/button_base.res" id="1_yvd7h"] + +[node name="ButtonBase" type="Node3D" unique_id=1753800164] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=305913322] +transform = Transform3D(-2.1855694e-08, 0.5, -2.1855694e-08, 0, -2.1855694e-08, -0.5, -0.5, -2.1855694e-08, 9.553427e-16, 0, 0, 0) +mesh = ExtResource("1_yvd7h") diff --git a/client/map/tiles/ceiling_lamp.gd.uid b/client/map/tiles/ceiling_lamp.gd.uid deleted file mode 100644 index 23e304d9..00000000 --- a/client/map/tiles/ceiling_lamp.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c2eke3hg0l85c diff --git a/client/map/tiles/ceiling_lamp.res b/client/map/tiles/ceiling_lamp.res Binary files differindex f35e266b..37c4aa7b 100644 --- a/client/map/tiles/ceiling_lamp.res +++ b/client/map/tiles/ceiling_lamp.res diff --git a/client/map/tiles/ceiling_lamp.tscn b/client/map/tiles/ceiling_lamp.tscn index 50f79e11..dd2f5511 100644 --- a/client/map/tiles/ceiling_lamp.tscn +++ b/client/map/tiles/ceiling_lamp.tscn @@ -1,16 +1,15 @@ -[gd_scene load_steps=3 format=3 uid="uid://c8hu5h6dt0ixj"] +[gd_scene format=3 uid="uid://c8hu5h6dt0ixj"] [ext_resource type="ArrayMesh" uid="uid://bsir47jru4um7" path="res://map/tiles/ceiling_lamp.res" id="1_twi66"] [ext_resource type="Script" uid="uid://nm4trjneu1qt" path="res://map/tiles/light_tile.gd" id="1_yyibl"] -[node name="CeilingLamp" type="Node3D" node_paths=PackedStringArray("lights")] +[node name="CeilingLamp" type="Node3D" unique_id=1236677325 node_paths=PackedStringArray("lights")] script = ExtResource("1_yyibl") lights = [NodePath("OmniLight3D")] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1645317673] transform = Transform3D(100, 0, 0, 0, -1.19209e-05, 100, 0, -100, -1.19209e-05, 0, 1.875, 0) mesh = ExtResource("1_twi66") -skeleton = NodePath("") -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1571857968] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, 0) diff --git a/client/map/tiles/chair.gd b/client/map/tiles/chair.gd index c17f3f9b..d5669dca 100644 --- a/client/map/tiles/chair.gd +++ b/client/map/tiles/chair.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,19 +14,16 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Chair -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) var chair = preload("res://map/tiles/chair.tscn").instantiate() var facing = 0; for i in range(4): - if ctx.neighbors[i] == "conveyor": - facing = i - break - for i in range(4): - if ctx.neighbors[i] == "table": + if G.has_one(ctx.neighbors[i], ["coveyor", "table", "counter"]): facing = i break + base.add_child(chair) turn_facing(facing) diff --git a/client/map/tiles/chair.res b/client/map/tiles/chair.res Binary files differindex cbf730ab..b6f1aa48 100644 --- a/client/map/tiles/chair.res +++ b/client/map/tiles/chair.res diff --git a/client/map/tiles/chair.tscn b/client/map/tiles/chair.tscn index 5ba28da7..406f2661 100644 --- a/client/map/tiles/chair.tscn +++ b/client/map/tiles/chair.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bn1l1mcn8240o"] +[gd_scene format=3 uid="uid://bn1l1mcn8240o"] [ext_resource type="ArrayMesh" uid="uid://cwn5nt017j62d" path="res://map/tiles/chair.res" id="1_8tboh"] -[node name="Chair" type="Node3D"] +[node name="Chair" type="Node3D" unique_id=446076584] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=311426126] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_8tboh") -skeleton = NodePath("") diff --git a/client/map/tiles/chandelier.gd b/client/map/tiles/chandelier.gd deleted file mode 100644 index cce877ea..00000000 --- a/client/map/tiles/chandelier.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 Chandelier -extends Floor - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/chandelier.tscn").instantiate()) diff --git a/client/map/tiles/chandelier.gd.uid b/client/map/tiles/chandelier.gd.uid deleted file mode 100644 index df037e09..00000000 --- a/client/map/tiles/chandelier.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://xj1r8ubad6mu diff --git a/client/map/tiles/chandelier.res b/client/map/tiles/chandelier.res Binary files differindex d8007bb8..47b1c017 100644 --- a/client/map/tiles/chandelier.res +++ b/client/map/tiles/chandelier.res diff --git a/client/map/tiles/chandelier.tscn b/client/map/tiles/chandelier.tscn index d4e4dd71..a8a4b617 100644 --- a/client/map/tiles/chandelier.tscn +++ b/client/map/tiles/chandelier.tscn @@ -1,16 +1,15 @@ -[gd_scene load_steps=3 format=3 uid="uid://coql3wlp3jwoc"] +[gd_scene format=3 uid="uid://coql3wlp3jwoc"] [ext_resource type="Script" uid="uid://nm4trjneu1qt" path="res://map/tiles/light_tile.gd" id="1_6vise"] [ext_resource type="ArrayMesh" uid="uid://d11c3fl48g7qb" path="res://map/tiles/chandelier.res" id="1_urqpe"] -[node name="Chandelier" type="Node3D"] +[node name="Chandelier" type="Node3D" unique_id=396940130] script = ExtResource("1_6vise") -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=989396255] transform = Transform3D(100, 0, 0, 0, -1.19209e-05, 100, 0, -100, -1.19209e-05, 0, 1.875, 0) mesh = ExtResource("1_urqpe") -skeleton = NodePath("") -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=102026265] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0) light_color = Color(0.945098, 0.886275, 0.745098, 1) diff --git a/client/map/tiles/cheese_crate.gd b/client/map/tiles/cheese_crate.gd deleted file mode 100644 index 2965b8c0..00000000 --- a/client/map/tiles/cheese_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 CheeseCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/cheese_crate.tscn").instantiate()) diff --git a/client/map/tiles/cheese_crate.gd.uid b/client/map/tiles/cheese_crate.gd.uid deleted file mode 100644 index 36a6ceb9..00000000 --- a/client/map/tiles/cheese_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://pwmpgyk3prdi diff --git a/client/map/tiles/cheese_crate.tscn b/client/map/tiles/cheese_crate.tscn index 7a1bd93a..f78ea177 100644 --- a/client/map/tiles/cheese_crate.tscn +++ b/client/map/tiles/cheese_crate.tscn @@ -1,24 +1,24 @@ -[gd_scene load_steps=3 format=3 uid="uid://do7vpyky2hdd0"] +[gd_scene format=3 uid="uid://do7vpyky2hdd0"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_7kkwt"] [ext_resource type="PackedScene" uid="uid://0lbjf2sie4rk" path="res://map/items/cheese.tscn" id="2_3iu16"] -[node name="CheeseCrate" instance=ExtResource("1_7kkwt")] +[node name="CheeseCrate" unique_id=1947061861 instance=ExtResource("1_7kkwt")] -[node name="Cheese" parent="." index="1" instance=ExtResource("2_3iu16")] +[node name="Cheese" parent="." index="1" unique_id=1357798385 instance=ExtResource("2_3iu16")] transform = Transform3D(0.939693, 0, 0.34202, 0, 1, 0, -0.34202, 0, 0.939693, -0.155919, 0.03, -0.239194) -[node name="Cheese2" parent="." index="2" instance=ExtResource("2_3iu16")] +[node name="Cheese2" parent="." index="2" unique_id=1162582783 instance=ExtResource("2_3iu16")] transform = Transform3D(-0.766045, 0, -0.642788, 0, 1, 0, 0.642788, 0, -0.766045, 0.143516, 0.03, -0.129342) -[node name="Cheese3" parent="." index="3" instance=ExtResource("2_3iu16")] +[node name="Cheese3" parent="." index="3" unique_id=2099970654 instance=ExtResource("2_3iu16")] transform = Transform3D(0.822958, 0, -0.568102, 0, 1, 0, 0.568102, 0, 0.822958, -0.139973, 0.03, 0.178952) -[node name="Cheese4" parent="." index="4" instance=ExtResource("2_3iu16")] +[node name="Cheese4" parent="." index="4" unique_id=1356373605 instance=ExtResource("2_3iu16")] transform = Transform3D(-0.909381, 0, 0.415964, 0, 1, 0, -0.415964, 0, -0.909381, 0.17718, 0.03, 0.178952) -[node name="Cheese5" parent="." index="5" instance=ExtResource("2_3iu16")] +[node name="Cheese5" parent="." index="5" unique_id=1934598214 instance=ExtResource("2_3iu16")] transform = Transform3D(-0.909381, 0, 0.415964, 0, 1, 0, -0.415964, 0, -0.909381, 0.102617, 0.25, -0.074814) -[node name="Cheese6" parent="." index="6" instance=ExtResource("2_3iu16")] +[node name="Cheese6" parent="." index="6" unique_id=1487135630 instance=ExtResource("2_3iu16")] transform = Transform3D(-0.11381, 0, 0.993503, 0, 1, 0, -0.993503, 0, -0.11381, -0.207069, 0.25, 0.0827757) diff --git a/client/map/tiles/coconut_crate.gd b/client/map/tiles/coconut_crate.gd deleted file mode 100644 index 34c41f18..00000000 --- a/client/map/tiles/coconut_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 CoconutCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/coconut_crate.tscn").instantiate()) diff --git a/client/map/tiles/coconut_crate.gd.uid b/client/map/tiles/coconut_crate.gd.uid deleted file mode 100644 index 82cbfa8f..00000000 --- a/client/map/tiles/coconut_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://d2m7s35j2lyeb diff --git a/client/map/tiles/coconut_crate.tscn b/client/map/tiles/coconut_crate.tscn index af2146b1..e379d0ba 100644 --- a/client/map/tiles/coconut_crate.tscn +++ b/client/map/tiles/coconut_crate.tscn @@ -1,18 +1,18 @@ -[gd_scene load_steps=3 format=3 uid="uid://cti8difugwnxm"] +[gd_scene format=3 uid="uid://cti8difugwnxm"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_1qpmd"] [ext_resource type="PackedScene" uid="uid://cmsirxgv7iqnk" path="res://map/items/coconut.tscn" id="3_s5fgf"] -[node name="StrawberryCrate" instance=ExtResource("1_1qpmd")] +[node name="StrawberryCrate" unique_id=238285369 instance=ExtResource("1_1qpmd")] -[node name="Coconut" parent="." index="1" instance=ExtResource("3_s5fgf")] +[node name="Coconut" parent="." index="1" unique_id=1982239539 instance=ExtResource("3_s5fgf")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.177501, 0, -0.17735) -[node name="Coconut2" parent="." index="2" instance=ExtResource("3_s5fgf")] +[node name="Coconut2" parent="." index="2" unique_id=1881504205 instance=ExtResource("3_s5fgf")] transform = Transform3D(0.735258, 0, 0.677788, 0, 1, 0, -0.677788, 0, 0.735258, 0.185726, 0, -0.192698) -[node name="Coconut3" parent="." index="3" instance=ExtResource("3_s5fgf")] +[node name="Coconut3" parent="." index="3" unique_id=71866705 instance=ExtResource("3_s5fgf")] transform = Transform3D(0.835347, 0, -0.549723, 0, 1, 0, 0.549723, 0, 0.835347, -0.177501, 0, 0.17735) -[node name="Coconut4" parent="." index="4" instance=ExtResource("3_s5fgf")] +[node name="Coconut4" parent="." index="4" unique_id=1363077163 instance=ExtResource("3_s5fgf")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.184021, 0, 0.17735) diff --git a/client/map/tiles/conveyor.gd b/client/map/tiles/conveyor.gd index 60505425..e5e908b4 100644 --- a/client/map/tiles/conveyor.gd +++ b/client/map/tiles/conveyor.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Conveyor -extends Floor +extends Tile var conveyor: ConveyorModel = preload("res://map/tiles/conveyor.tscn").instantiate() @@ -22,7 +22,7 @@ func _init(ctx: TileFactory.TileCC): super(ctx) base.add_child(conveyor) -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., .425, 0.) func pass_to(tile: Tile): diff --git a/client/map/tiles/conveyor.res b/client/map/tiles/conveyor.res Binary files differindex e28bb057..2fcdf2bc 100644 --- a/client/map/tiles/conveyor.res +++ b/client/map/tiles/conveyor.res diff --git a/client/map/tiles/conveyor.tscn b/client/map/tiles/conveyor.tscn index 62e967a2..d5a53a6e 100644 --- a/client/map/tiles/conveyor.tscn +++ b/client/map/tiles/conveyor.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=6 format=3 uid="uid://df5wbypoqbkf"] +[gd_scene format=3 uid="uid://df5wbypoqbkf"] [ext_resource type="ArrayMesh" uid="uid://djet05vuyh6iv" path="res://map/tiles/conveyor.res" id="1_hoctt"] [ext_resource type="Script" uid="uid://sawoy4fqmd43" path="res://map/tiles/conveyor_model.gd" id="1_xdf1u"] [ext_resource type="PackedScene" uid="uid://60wue8ult1bx" path="res://map/tiles/conveyor_direction.tscn" id="2_sf55l"] [ext_resource type="Shader" uid="uid://2cpdtie0rquv" path="res://map/tiles/conveyor_direction.gdshader" id="4_8s3rd"] -[sub_resource type="ShaderMaterial" id="ShaderMaterial_bgatf"] +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vkrca"] resource_local_to_scene = true render_priority = 0 shader = ExtResource("4_8s3rd") @@ -15,14 +15,13 @@ shader_parameter/width = 0.2 shader_parameter/speed = 1.0 shader_parameter/alpha_fac = 1.0 -[node name="Conveyor" type="Node3D"] +[node name="Conveyor" type="Node3D" unique_id=1694281657] script = ExtResource("1_xdf1u") -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=863772891] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_hoctt") -skeleton = NodePath("") -[node name="ConveyorDirection" parent="." instance=ExtResource("2_sf55l")] +[node name="ConveyorDirection" parent="." unique_id=889314478 instance=ExtResource("2_sf55l")] transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.43, 0) -surface_material_override/0 = SubResource("ShaderMaterial_bgatf") +surface_material_override/0 = SubResource("ShaderMaterial_vkrca") diff --git a/client/map/tiles/conveyor_direction.gdshader b/client/map/tiles/conveyor_direction.gdshader index d59fcd2d..7adef653 100644 --- a/client/map/tiles/conveyor_direction.gdshader +++ b/client/map/tiles/conveyor_direction.gdshader @@ -1,6 +1,6 @@ /* Hurry Curry! - a game about cooking - Copyright (C) 2025 Hurry Curry! Contributors + Copyright (C) 2026 Hurry Curry! Contributors 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 diff --git a/client/map/tiles/conveyor_direction.tscn b/client/map/tiles/conveyor_direction.tscn index 79eae94c..5fe0baf1 100644 --- a/client/map/tiles/conveyor_direction.tscn +++ b/client/map/tiles/conveyor_direction.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://60wue8ult1bx"] +[gd_scene format=3 uid="uid://60wue8ult1bx"] [ext_resource type="Shader" uid="uid://2cpdtie0rquv" path="res://map/tiles/conveyor_direction.gdshader" id="1_47s57"] @@ -15,7 +15,7 @@ shader_parameter/width = 0.2 shader_parameter/speed = 1.0 shader_parameter/alpha_fac = 1.0 -[node name="ConveyorDirection" type="MeshInstance3D"] +[node name="ConveyorDirection" type="MeshInstance3D" unique_id=1563649411] transform = Transform3D(1, 0, 0, 0, 1.19249e-08, 1, 0, -1, 1.19249e-08, 0, 0, 0) mesh = SubResource("QuadMesh_hr8jj") surface_material_override/0 = SubResource("ShaderMaterial_h5q6r") diff --git a/client/map/tiles/conveyor_model.gd b/client/map/tiles/conveyor_model.gd index 1cbeb8a2..fcf36675 100644 --- a/client/map/tiles/conveyor_model.gd +++ b/client/map/tiles/conveyor_model.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -26,5 +26,5 @@ func _process(delta): func to_direction(direction: Vector2): direction.y *= -1 - $ConveyorDirection.rotation.y = direction.angle() + .5 * PI + $ConveyorDirection.global_rotation.y = direction.angle() + .5 * PI alpha = 1. diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd index bd16c7a3..b8e7531a 100644 --- a/client/map/tiles/counter.gd +++ b/client/map/tiles/counter.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,69 +14,14 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Counter -extends Floor - -const COUNTERS: Array = [ - "counter", - "pan", - "sink", - "oven", -] - -const FLOORS: Array = [ - "floor", - "chandelier", - "ceiling-lamp", - "grass", - "table", - "chair" -] - -enum CounterKind { - OUTER_CORNER, - STRAIGHT, - STRAIGHT_BACKSPLASH -} - -var kind: CounterKind = CounterKind.STRAIGHT - -static func interact_target() -> Vector3: - return Vector3(0, 0.5, 0) +extends CounterLike func _init(ctx: TileFactory.TileCC): super(ctx) - - var facing: int = 0 - var max_series: int = 0 - var max_idx: int = 0 - for start in range(4): - var series = 0 - for i in range(4): - if Counter.is_floor(ctx.neighbors[(start + i) % 4]): - series += 1 - else: - break - if series > max_series: - max_series = series - max_idx = start - - # we can neither find out whether it is an inner corner nor an outer corner - # backsplash - facing = max_idx - if max_series == 1: - if WallTile.WALLS.has(ctx.neighbors[(max_idx + 2) % 4]): - kind = CounterKind.STRAIGHT_BACKSPLASH - else: - kind = CounterKind.STRAIGHT - elif max_series == 2: - kind = CounterKind.OUTER_CORNER - - turn_facing(facing) - -static func is_counter(tile_name_t) -> bool: - if tile_name_t == null: - return false - return tile_name_t.ends_with("crate") or COUNTERS.has(tile_name_t) - -static func is_floor(floor_name) -> bool: - return FLOORS.has(floor_name) + match kind: + CounterKind.OUTER_CORNER: + base.add_child(load("res://map/tiles/counter_outer_corner.tscn").instantiate()) + CounterKind.STRAIGHT: + base.add_child(load("res://map/tiles/counter_straight.tscn").instantiate()) + CounterKind.STRAIGHT_BACKSPLASH: + base.add_child(load("res://map/tiles/counter_straight_backsplash.tscn").instantiate()) diff --git a/client/map/tiles/counter.gd.uid b/client/map/tiles/counter.gd.uid index 0fd45b66..395db459 100644 --- a/client/map/tiles/counter.gd.uid +++ b/client/map/tiles/counter.gd.uid @@ -1 +1 @@ -uid://bs61uem0427k6 +uid://bj8o06q70sek2 diff --git a/client/map/tiles/counter_base.gd.uid b/client/map/tiles/counter_base.gd.uid deleted file mode 100644 index f46c79fa..00000000 --- a/client/map/tiles/counter_base.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dx116e5ebg1p4 diff --git a/client/map/tiles/counter_like.gd b/client/map/tiles/counter_like.gd new file mode 100644 index 00000000..ebecbbfa --- /dev/null +++ b/client/map/tiles/counter_like.gd @@ -0,0 +1,80 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 CounterLike +extends Tile + +const COUNTERS: Array = [ + "counter", + "pan", + "sink", + "oven", +] + +const FLOORS: Array = [ + "floor", + "chandelier", + "ceiling-lamp", + "grass", + "table", + "chair" +] + +enum CounterKind { + OUTER_CORNER, + STRAIGHT, + STRAIGHT_BACKSPLASH +} + +var kind: CounterKind = CounterKind.STRAIGHT + +static func interact_target(): # -> Vector3? + return Vector3(0, 0.5, 0) + +func _init(ctx: TileFactory.TileCC): + super(ctx) + + var facing: int = 0 + var max_series: int = 0 + var max_idx: int = 0 + for start in range(4): + var series = 0 + for i in range(4): + if not is_attachable(ctx.neighbors[(start + i) % 4]): + series += 1 + else: + break + if series > max_series: + max_series = series + max_idx = start + + # we can neither find out whether it is an inner corner nor an outer corner + # backsplash + facing = max_idx + if max_series == 1: + if G.has_one(WallTile.WALLS, ctx.neighbors[(max_idx + 2) % 4]): + kind = CounterKind.STRAIGHT_BACKSPLASH + else: + kind = CounterKind.STRAIGHT + elif max_series == 2: + kind = CounterKind.OUTER_CORNER + + turn_facing(facing) + +static func is_attachable(neighbor: Array) -> bool: + for tile: String in neighbor: + if tile.ends_with("crate"): return true + if COUNTERS.has(tile): return true + return false diff --git a/client/map/tiles/counter_like.gd.uid b/client/map/tiles/counter_like.gd.uid new file mode 100644 index 00000000..0fd45b66 --- /dev/null +++ b/client/map/tiles/counter_like.gd.uid @@ -0,0 +1 @@ +uid://bs61uem0427k6 diff --git a/client/map/tiles/counter_outer_corner.res b/client/map/tiles/counter_outer_corner.res Binary files differindex 68488c25..e647a046 100644 --- a/client/map/tiles/counter_outer_corner.res +++ b/client/map/tiles/counter_outer_corner.res diff --git a/client/map/tiles/counter_outer_corner.tscn b/client/map/tiles/counter_outer_corner.tscn index c5227dfc..ca202f48 100644 --- a/client/map/tiles/counter_outer_corner.tscn +++ b/client/map/tiles/counter_outer_corner.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://blh11npblosbh"] +[gd_scene format=3 uid="uid://blh11npblosbh"] [ext_resource type="ArrayMesh" uid="uid://brpeawypw3jmg" path="res://map/tiles/counter_outer_corner.res" id="1_rq22t"] -[node name="Counter" type="Node3D"] +[node name="Counter" type="Node3D" unique_id=1053408630] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1111773353] transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_rq22t") -skeleton = NodePath("") diff --git a/client/map/tiles/counter_straight.res b/client/map/tiles/counter_straight.res Binary files differindex 78a0cad3..9e95bccc 100644 --- a/client/map/tiles/counter_straight.res +++ b/client/map/tiles/counter_straight.res diff --git a/client/map/tiles/counter_straight.tscn b/client/map/tiles/counter_straight.tscn index 74517d2d..20016723 100644 --- a/client/map/tiles/counter_straight.tscn +++ b/client/map/tiles/counter_straight.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cg084pjthp7tn"] +[gd_scene format=3 uid="uid://cg084pjthp7tn"] [ext_resource type="ArrayMesh" uid="uid://btafby3tayv7r" path="res://map/tiles/counter_straight.res" id="1_5ksmf"] -[node name="Counter" type="Node3D"] +[node name="Counter" type="Node3D" unique_id=264805024] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=9093183] mesh = ExtResource("1_5ksmf") -skeleton = NodePath("") diff --git a/client/map/tiles/counter_straight_backsplash.res b/client/map/tiles/counter_straight_backsplash.res Binary files differindex 80845fc0..313c99f8 100644 --- a/client/map/tiles/counter_straight_backsplash.res +++ b/client/map/tiles/counter_straight_backsplash.res diff --git a/client/map/tiles/counter_straight_backsplash.tscn b/client/map/tiles/counter_straight_backsplash.tscn index 3490df9c..e243836a 100644 --- a/client/map/tiles/counter_straight_backsplash.tscn +++ b/client/map/tiles/counter_straight_backsplash.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://blcqlogspnah1"] +[gd_scene format=3 uid="uid://blcqlogspnah1"] [ext_resource type="ArrayMesh" uid="uid://cdlmrxt42emtr" path="res://map/tiles/counter_straight_backsplash.res" id="1_3t3hs"] -[node name="Counter" type="Node3D"] +[node name="Counter" type="Node3D" unique_id=693383210] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1678672210] mesh = ExtResource("1_3t3hs") -skeleton = NodePath("") diff --git a/client/map/tiles/counter_window.gd b/client/map/tiles/counter_window.gd index 46889e43..d9cf6d24 100644 --- a/client/map/tiles/counter_window.gd +++ b/client/map/tiles/counter_window.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,7 +16,7 @@ class_name CounterWindow extends WallTile -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0, 0.625, 0) func _init(ctx: TileFactory.TileCC): diff --git a/client/map/tiles/counter_window.res b/client/map/tiles/counter_window.res Binary files differindex 2cb0f059..98d52663 100644 --- a/client/map/tiles/counter_window.res +++ b/client/map/tiles/counter_window.res diff --git a/client/map/tiles/counter_window.tscn b/client/map/tiles/counter_window.tscn index 8ae5a54d..09a5eaff 100644 --- a/client/map/tiles/counter_window.tscn +++ b/client/map/tiles/counter_window.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bwgkd65215m7e"] +[gd_scene format=3 uid="uid://bwgkd65215m7e"] [ext_resource type="ArrayMesh" uid="uid://lywflqnpelc7" path="res://map/tiles/counter_window.res" id="1_gyddt"] -[node name="CounterWindow" type="Node3D"] +[node name="CounterWindow" type="Node3D" unique_id=1350548242] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=2102120795] transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_gyddt") -skeleton = NodePath("") diff --git a/client/map/tiles/counter_base.gd b/client/map/tiles/counter_window_conveyor.gd index 34bc5b59..e34dd2fd 100644 --- a/client/map/tiles/counter_base.gd +++ b/client/map/tiles/counter_window_conveyor.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,15 +13,24 @@ # 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 CounterBase -extends Counter +class_name CounterWindowConveyor +extends WallTile + +var conveyor: ConveyorModel = preload("res://map/tiles/counter_window_conveyor.tscn").instantiate() func _init(ctx: TileFactory.TileCC): super(ctx) match kind: - CounterKind.OUTER_CORNER: - base.add_child(load("res://map/tiles/counter_outer_corner.tscn").instantiate()) - CounterKind.STRAIGHT: - base.add_child(load("res://map/tiles/counter_straight.tscn").instantiate()) - CounterKind.STRAIGHT_BACKSPLASH: - base.add_child(load("res://map/tiles/counter_straight_backsplash.tscn").instantiate()) + WallKind.STRAIGHT: + add_dyed_mesh(ctx, conveyor) + WallKind.OUTER_CORNER: + push_warning("There is no corner counter window!") + add_dyed_mesh(ctx, conveyor) + +static func interact_target(): # -> Vector3? + return Vector3(0., .425, 0.) + +func pass_to(tile: Tile): + super(tile) + var dir: Vector3 = (tile.position - position) + conveyor.to_direction(Vector2(dir.x, dir.z).normalized()) diff --git a/client/map/tiles/counter_window_conveyor.gd.uid b/client/map/tiles/counter_window_conveyor.gd.uid new file mode 100644 index 00000000..861f4f0c --- /dev/null +++ b/client/map/tiles/counter_window_conveyor.gd.uid @@ -0,0 +1 @@ +uid://onp3ijhfm4hg diff --git a/client/map/tiles/counter_window_conveyor.res b/client/map/tiles/counter_window_conveyor.res Binary files differnew file mode 100644 index 00000000..af234851 --- /dev/null +++ b/client/map/tiles/counter_window_conveyor.res diff --git a/client/map/tiles/counter_window_conveyor.tscn b/client/map/tiles/counter_window_conveyor.tscn new file mode 100644 index 00000000..5b977ecc --- /dev/null +++ b/client/map/tiles/counter_window_conveyor.tscn @@ -0,0 +1,31 @@ +[gd_scene format=3 uid="uid://qxbupftye50d"] + +[ext_resource type="ArrayMesh" uid="uid://cgxmagghg40l3" path="res://map/tiles/counter_window_conveyor.res" id="1_sxc4d"] +[ext_resource type="Script" uid="uid://sawoy4fqmd43" path="res://map/tiles/conveyor_model.gd" id="1_yowx8"] +[ext_resource type="PackedScene" uid="uid://60wue8ult1bx" path="res://map/tiles/conveyor_direction.tscn" id="2_5k25t"] +[ext_resource type="Shader" uid="uid://2cpdtie0rquv" path="res://map/tiles/conveyor_direction.gdshader" id="3_yowx8"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yowx8"] +albedo_color = Color(0, 0, 0, 1) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_yowx8"] +resource_local_to_scene = true +render_priority = 0 +shader = ExtResource("3_yowx8") +shader_parameter/angle = 0.2 +shader_parameter/frequency = 0.5 +shader_parameter/width = 0.2 +shader_parameter/speed = 1.0 +shader_parameter/alpha_fac = 1.0 + +[node name="CounterWindowConveyor" type="Node3D" unique_id=326965642] +script = ExtResource("1_yowx8") + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1365726575] +transform = Transform3D(-2.1855694e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.1855694e-08, 0, 0, 0) +mesh = ExtResource("1_sxc4d") +surface_material_override/3 = SubResource("StandardMaterial3D_yowx8") + +[node name="ConveyorDirection" parent="." unique_id=61838280 instance=ExtResource("2_5k25t")] +transform = Transform3D(-4.371139e-08, -1, -4.371139e-08, 0, -4.371139e-08, 1, -1, 4.371139e-08, 1.9106855e-15, 0, 0.43, 0) +surface_material_override/0 = SubResource("ShaderMaterial_yowx8") diff --git a/client/map/tiles/crate.gd b/client/map/tiles/crate.gd index a952c2e8..bb96b919 100644 --- a/client/map/tiles/crate.gd +++ b/client/map/tiles/crate.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,10 +14,57 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Crate -extends Counter +extends CounterLike -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0, 0.25, 0) func _init(ctx: TileFactory.TileCC): super(ctx) + match ctx.tile_name.variant: + "bun": + base.add_child(load("res://map/tiles/bun_crate.tscn").instantiate()) + "cheese": + base.add_child(load("res://map/tiles/cheese_crate.tscn").instantiate()) + "coconut": + base.add_child(load("res://map/tiles/coconut_crate.tscn").instantiate()) + "fish": + base.add_child(load("res://map/tiles/fish_crate.tscn").instantiate()) + "flour": + base.add_child(load("res://map/tiles/flour_crate.tscn").instantiate()) + "leek": + base.add_child(load("res://map/tiles/leek_crate.tscn").instantiate()) + "lettuce": + base.add_child(load("res://map/tiles/lettuce_crate.tscn").instantiate()) + "mushroom": + base.add_child(load("res://map/tiles/mushroom_crate.tscn").instantiate()) + "noodles": + base.add_child(load("res://map/tiles/noodles_crate.tscn").instantiate()) + "potato": + base.add_child(load("res://map/tiles/potato_crate.tscn").instantiate()) + "rice": + base.add_child(load("res://map/tiles/rice_crate.tscn").instantiate()) + "steak": + base.add_child(load("res://map/tiles/steak_crate.tscn").instantiate()) + "strawberry": + base.add_child(load("res://map/tiles/strawberry_crate.tscn").instantiate()) + "tomato": + base.add_child(load("res://map/tiles/tomato_crate.tscn").instantiate()) + var item_name: + base.add_child(load("res://map/tiles/crate.tscn").instantiate()) + for i in [ + [Vector3(0.25, 0.1, -0.2), deg_to_rad(-8)], + [Vector3(0.25, 0.15, 0.2), deg_to_rad(8)], + [Vector3(0, 0.1, -0.2), deg_to_rad(12)], + [Vector3(0, 0.1, 0.1), deg_to_rad(-6)], + [Vector3(-0.25, 0.15, -0.2), deg_to_rad(-8)], + [Vector3(-0.25, 0.1, 0.2), deg_to_rad(4)], + ]: + var crate_item_base = Node3D.new() + var crate_item = ItemFactory.produce(item_name, crate_item_base) + crate_item.position = i[0] + crate_item_base.position = i[0] + crate_item.rotation.y = i[1] + crate_item_base.rotation.y = i[1] + crate_item_base.add_child(crate_item) + base.add_child(crate_item_base) diff --git a/client/map/tiles/crate.res b/client/map/tiles/crate.res Binary files differindex 1d1183c5..6b1e5251 100644 --- a/client/map/tiles/crate.res +++ b/client/map/tiles/crate.res diff --git a/client/map/tiles/crate.tscn b/client/map/tiles/crate.tscn index 55da257b..885bee8e 100644 --- a/client/map/tiles/crate.tscn +++ b/client/map/tiles/crate.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://xdui0oya4lpb"] +[gd_scene format=3 uid="uid://xdui0oya4lpb"] [ext_resource type="ArrayMesh" uid="uid://btn7oh1v2k40p" path="res://map/tiles/crate.res" id="1_qu7f0"] -[node name="Crate" type="Node3D"] +[node name="Crate" type="Node3D" unique_id=1797382951] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=473438995] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_qu7f0") -skeleton = NodePath("") diff --git a/client/map/tiles/cutting_board.gd b/client/map/tiles/cutting_board.gd index 300b5700..d9f95911 100644 --- a/client/map/tiles/cutting_board.gd +++ b/client/map/tiles/cutting_board.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,43 +14,10 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name CuttingBoard -extends CounterBase - -var board = load("res://map/tiles/cutting_board.tscn").instantiate() -var chopping: AudioStreamPlayer3D = AudioStreamPlayer3D.new() -var acting_player +extends ActiveInteractCounter func _init(ctx: TileFactory.TileCC): - super(ctx) - chopping.stream = preload("res://map/tiles/sounds/chop.ogg") - add_child(chopping) - base.add_child(board) - -func progress(position_: float, speed: float, warn: bool, acting_player_): - super(position_, speed, warn, acting_player) - var knife: Node3D = board.get_node("Knife") - acting_player = acting_player_ - - if not chopping.playing and speed != 0.: - chopping.play() - if acting_player != null: - knife.visible = false - var acting_character: Character = acting_player.character - acting_character.cutting = true - elif speed == 0: - chopping.stop() - knife.visible = true - if acting_player != null: - var acting_character: Character = acting_player.character - acting_character.cutting = false - -func finish(): - super() - if is_instance_valid(acting_player): - var acting_character: Character = acting_player.character - acting_character.cutting = false - board.get_node("Knife").visible = true - chopping.stop() + super(ctx, preload("res://map/tiles/cutting_board.tscn"), "CuttingBoard/Knife", func (p: Player, x: bool): p.character.cutting = x, preload("res://map/tiles/sounds/chop.ogg")) -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., 0.575, 0.) diff --git a/client/map/tiles/cutting_board.res b/client/map/tiles/cutting_board.res Binary files differindex 15a1b5c3..9511f542 100644 --- a/client/map/tiles/cutting_board.res +++ b/client/map/tiles/cutting_board.res diff --git a/client/map/tiles/cutting_board.tscn b/client/map/tiles/cutting_board.tscn index dd469417..498665eb 100644 --- a/client/map/tiles/cutting_board.tscn +++ b/client/map/tiles/cutting_board.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://bslx1a7kdufde"] +[gd_scene 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://cufype1bex3r3" path="res://map/tiles/knife.tscn" id="3_wvxni"] @@ -150,17 +150,14 @@ _data = { &"cut_loop": SubResource("Animation_vu13j") } -[node name="CuttingBoard" type="Node3D"] +[node name="CuttingBoard" type="Node3D" unique_id=238504632] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=396141108] 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, -3.61999e-06, 1, 0, -1, -3.61999e-06, 0.375, 0.52, 0.19) +[node name="Knife" parent="." unique_id=1126807225 instance=ExtResource("3_wvxni")] +transform = Transform3D(1, 0, 0, 0, -3.6199901e-06, 1, 0, -1, -3.6199901e-06, 0.375, 0.52, 0.19) -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -libraries = { -"": SubResource("AnimationLibrary_fy61n") -} +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=127266211] +libraries/ = SubResource("AnimationLibrary_fy61n") diff --git a/client/map/tiles/deep_fryer.gd b/client/map/tiles/deep_fryer.gd index 82204cb8..d730207f 100644 --- a/client/map/tiles/deep_fryer.gd +++ b/client/map/tiles/deep_fryer.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,18 +14,16 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name DeepFryer -extends CounterBase - -var deep_fryer = load("res://map/tiles/deep_fryer.tscn").instantiate() +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) - base.add_child(deep_fryer) + base.add_child(preload("res://map/tiles/deep_fryer.tscn").instantiate()) func set_item(i: Item): super(i) if i != null: i.rotation_target = item_base.global_rotation.y + PI -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., 0.55, 0.) diff --git a/client/map/tiles/deep_fryer.gd.uid b/client/map/tiles/deep_fryer.gd.uid index 0fc161a4..26210181 100644 --- a/client/map/tiles/deep_fryer.gd.uid +++ b/client/map/tiles/deep_fryer.gd.uid @@ -1 +1 @@ -uid://x4gtbub0vfun +uid://bd0pophijvqv5 diff --git a/client/map/tiles/deep_fryer.tscn b/client/map/tiles/deep_fryer.tscn index cb854ec0..a163411f 100644 --- a/client/map/tiles/deep_fryer.tscn +++ b/client/map/tiles/deep_fryer.tscn @@ -1,20 +1,21 @@ -[gd_scene load_steps=4 format=3 uid="uid://bys6bffu5srpt"] +[gd_scene format=3 uid="uid://bys6bffu5srpt"] [ext_resource type="ArrayMesh" uid="uid://bketpomfy35to" path="res://map/tiles/deep_fryer_base.res" id="1_e4g0d"] [ext_resource type="ArrayMesh" uid="uid://c7k6gevpwdbv0" path="res://map/tiles/deep_fryer_fill.res" id="3_1rwcx"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1rwcx"] +transparency = 1 cull_mode = 1 -albedo_color = Color(0.75, 0.58, 0.45000002, 1) +albedo_color = Color(0.75, 0.58, 0.45000002, 0.6666667) roughness = 0.1 -[node name="DeepFryer" type="Node3D"] +[node name="DeepFryer" type="Node3D" unique_id=1218321913] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1815767562] transform = Transform3D(0.75, 0, 0, 0, -3.278354e-08, -0.75, 0, 0.75, -3.278354e-08, 0, 0.5, 0) mesh = ExtResource("1_e4g0d") -[node name="Fill" type="MeshInstance3D" parent="."] +[node name="Fill" type="MeshInstance3D" parent="." unique_id=56430436] transform = Transform3D(0.75, 0, 0, 0, -3.278354e-08, -0.75, 0, 0.75, -3.278354e-08, 0, 0.5, 0) mesh = ExtResource("3_1rwcx") surface_material_override/0 = SubResource("StandardMaterial3D_1rwcx") diff --git a/client/map/tiles/deep_fryer_base.res b/client/map/tiles/deep_fryer_base.res Binary files differindex 2a392ab6..e6fd0377 100644 --- a/client/map/tiles/deep_fryer_base.res +++ b/client/map/tiles/deep_fryer_base.res diff --git a/client/map/tiles/deep_fryer_fill.res b/client/map/tiles/deep_fryer_fill.res Binary files differindex 0280a561..5c450bf1 100644 --- a/client/map/tiles/deep_fryer_fill.res +++ b/client/map/tiles/deep_fryer_fill.res diff --git a/client/map/tiles/door.gd b/client/map/tiles/door.gd index 7fe23c93..37dd012f 100644 --- a/client/map/tiles/door.gd +++ b/client/map/tiles/door.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -21,7 +21,7 @@ func _init(ctx: TileFactory.TileCC): var new_facing = 0 for i in range(4): - if ctx.neighbors[i] == "door": + if ctx.neighbors[i].has("door"): new_facing = i turn_facing(new_facing) add_dyed_mesh(ctx, load("res://map/tiles/door.tscn").instantiate(), "Door", 1) diff --git a/client/map/tiles/door.res b/client/map/tiles/door.res Binary files differindex ad64d5b6..d2dbbdcf 100644 --- a/client/map/tiles/door.res +++ b/client/map/tiles/door.res diff --git a/client/map/tiles/door.tscn b/client/map/tiles/door.tscn index 894d30a2..d00e99ec 100644 --- a/client/map/tiles/door.tscn +++ b/client/map/tiles/door.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://coxh3mgvch5bd"] +[gd_scene format=3 uid="uid://coxh3mgvch5bd"] [ext_resource type="ArrayMesh" uid="uid://bomlbxf33hd11" path="res://map/tiles/door.res" id="1_wfoe6"] -[node name="Door" type="Node3D"] +[node name="Door" type="Node3D" unique_id=1352926697] -[node name="Door" type="MeshInstance3D" parent="."] +[node name="Door" type="MeshInstance3D" parent="." unique_id=1538534480] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_wfoe6") -skeleton = NodePath("") diff --git a/client/map/tiles/exterior_tree.gd b/client/map/tiles/exterior_tree.gd index fe9eeaf8..82c457e2 100644 --- a/client/map/tiles/exterior_tree.gd +++ b/client/map/tiles/exterior_tree.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name ExteriorTree -extends Grass +extends Tile const SCALE: Vector3 = Vector3(100., 100., 100.) const ROT: Vector3 = Vector3(1.5 * PI, 0., 0.) @@ -23,23 +23,41 @@ func _init(ctx: TileFactory.TileCC): super(ctx) var random = RandomNumberGenerator.new() random.seed = str(ctx.position).hash() - var tree: int = random.randi_range(1,5) - var trunk: Mesh = load("res://map/tiles/tree/trunk_%d.res" % tree) - var leaves: Mesh = load("res://map/tiles/tree/leaves_%d_%s.res" % [ - tree, - "lq" if Settings.read("graphics.lq_trees") else "hq" - ]) + var tree_type: int = random.randi_range(1,5) + var no_leaves := false + + if ctx.tile_name.variant != null: + var variant: String = ctx.tile_name.variant + if variant == "no_leaves": + no_leaves = true + else: + if variant.is_valid_int(): + var variant_int := int(variant) + if variant_int >= 1 and variant_int <= 5: + tree_type = variant_int + else: + push_error("Tree variant \"%d\" is out of bounds (expected element of [1..5])" % variant_int) + push_error("Tree variant \"%s\" not recognized" % variant) + + var tree_node: Node3D = Node3D.new() + + if not no_leaves: + var leaves: Mesh = load("res://map/tiles/tree/leaves_%d_%s.res" % [ + tree_type, + "lq" if Settings.read("graphics.lq_trees") else "hq" + ]) + var leaves_instance: MeshInstance3D = MeshInstance3D.new() + leaves_instance.mesh = leaves + leaves_instance.scale = SCALE + leaves_instance.rotation = ROT + tree_node.add_child(leaves_instance) + + var trunk: Mesh = load("res://map/tiles/tree/trunk_%d.res" % tree_type) var trunk_instance: MeshInstance3D = MeshInstance3D.new() trunk_instance.mesh = trunk trunk_instance.scale = SCALE trunk_instance.rotation = ROT - var leaves_instance: MeshInstance3D = MeshInstance3D.new() - leaves_instance.mesh = leaves - leaves_instance.scale = SCALE - leaves_instance.rotation = ROT - var tree_node: Node3D = Node3D.new() tree_node.add_child(trunk_instance) - tree_node.add_child(leaves_instance) tree_node.name = "Tree" base.add_child(tree_node) diff --git a/client/map/tiles/fence.gd b/client/map/tiles/fence.gd index 0510c4b9..5d2dfdd8 100644 --- a/client/map/tiles/fence.gd +++ b/client/map/tiles/fence.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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,10 +17,15 @@ class_name Fence extends WallTile func _init(ctx: TileFactory.TileCC): + walls = ["fence"] super(ctx) + var neighboring_fences := ctx.neighbors.map(is_wall).count(true) match kind: WallKind.STRAIGHT: - base.add_child(load("res://map/tiles/fence_straight.tscn").instantiate()) + if neighboring_fences == 1: + base.add_child(load("res://map/tiles/fence_end.tscn").instantiate()) + else: + base.add_child(load("res://map/tiles/fence_straight.tscn").instantiate()) WallKind.OUTER_CORNER: base.add_child(load("res://map/tiles/fence_corner.tscn").instantiate()) WallKind.T: @@ -29,5 +34,5 @@ func _init(ctx: TileFactory.TileCC): push_warning("no wall cross available!") base.add_child(load("res://map/tiles/fence_straight.tscn").instantiate()) -func get_base_mesh(): - return preload("res://map/tiles/grass.tscn").instantiate() +static func fm_id() -> String: + return "grass" diff --git a/client/map/tiles/fence_corner.res b/client/map/tiles/fence_corner.res Binary files differindex 14e345a6..8324c435 100644 --- a/client/map/tiles/fence_corner.res +++ b/client/map/tiles/fence_corner.res diff --git a/client/map/tiles/fence_corner.tscn b/client/map/tiles/fence_corner.tscn index b7b0d356..57adebf5 100644 --- a/client/map/tiles/fence_corner.tscn +++ b/client/map/tiles/fence_corner.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cvac5lq82xqhq"] +[gd_scene format=3 uid="uid://cvac5lq82xqhq"] [ext_resource type="ArrayMesh" uid="uid://25vo0ohcya7a" path="res://map/tiles/fence_corner.res" id="1_5aqc4"] -[node name="FenceCorner" type="Node3D"] +[node name="FenceCorner" type="Node3D" unique_id=1550671344] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=669814619] transform = Transform3D(-2.18557e-06, 0, 50, 0, 50, 0, -50, 0, -2.18557e-06, 0, 0, 0) mesh = ExtResource("1_5aqc4") -skeleton = NodePath("") diff --git a/client/map/tiles/fence_end.res b/client/map/tiles/fence_end.res Binary files differnew file mode 100644 index 00000000..c7862747 --- /dev/null +++ b/client/map/tiles/fence_end.res diff --git a/client/map/tiles/fence_end.tscn b/client/map/tiles/fence_end.tscn new file mode 100644 index 00000000..5d8e185c --- /dev/null +++ b/client/map/tiles/fence_end.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://dseef40ucueuv"] + +[ext_resource type="ArrayMesh" uid="uid://bhdxbn6ivop6k" path="res://map/tiles/fence_end.res" id="1_cdo5n"] + +[node name="FenceEnd" type="Node3D" unique_id=1482639971] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=461934852] +transform = Transform3D(5.9624404e-07, 0, -50, 0, 50, 0, 50, 0, 5.9624404e-07, 0, 0, 0) +mesh = ExtResource("1_cdo5n") diff --git a/client/map/tiles/fence_straight.res b/client/map/tiles/fence_straight.res Binary files differindex c3975138..44f673ed 100644 --- a/client/map/tiles/fence_straight.res +++ b/client/map/tiles/fence_straight.res diff --git a/client/map/tiles/fence_straight.tscn b/client/map/tiles/fence_straight.tscn index d31af10d..eb31dc7f 100644 --- a/client/map/tiles/fence_straight.tscn +++ b/client/map/tiles/fence_straight.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://d0w3mrbe8w8m0"] +[gd_scene format=3 uid="uid://d0w3mrbe8w8m0"] [ext_resource type="ArrayMesh" uid="uid://d1jfqqjhaqsgn" path="res://map/tiles/fence_straight.res" id="1_4ta43"] -[node name="FenceStraight" type="Node3D"] +[node name="FenceStraight" type="Node3D" unique_id=186177964] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1512127781] transform = Transform3D(-2.18557e-06, 0, 50, 0, 50, 0, -50, 0, -2.18557e-06, 0, 0, 0) mesh = ExtResource("1_4ta43") -skeleton = NodePath("") diff --git a/client/map/tiles/fence_t.res b/client/map/tiles/fence_t.res Binary files differindex 93043f7c..65e66589 100644 --- a/client/map/tiles/fence_t.res +++ b/client/map/tiles/fence_t.res diff --git a/client/map/tiles/fence_t.tscn b/client/map/tiles/fence_t.tscn index 1efb3fe8..c85f3c56 100644 --- a/client/map/tiles/fence_t.tscn +++ b/client/map/tiles/fence_t.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bk6ufdmbtrkkh"] +[gd_scene format=3 uid="uid://bk6ufdmbtrkkh"] [ext_resource type="ArrayMesh" uid="uid://b8v4k4o8cusn4" path="res://map/tiles/fence_t.res" id="1_i484t"] -[node name="FenceT" type="Node3D"] +[node name="FenceT" type="Node3D" unique_id=1903555463] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=891470237] transform = Transform3D(50, 0, 0, 0, 50, 0, 0, 0, 50, 0, 0, 0) mesh = ExtResource("1_i484t") -skeleton = NodePath("") diff --git a/client/map/tiles/fish_crate.gd b/client/map/tiles/fish_crate.gd deleted file mode 100644 index 76859159..00000000 --- a/client/map/tiles/fish_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 FishCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/fish_crate.tscn").instantiate()) diff --git a/client/map/tiles/fish_crate.gd.uid b/client/map/tiles/fish_crate.gd.uid deleted file mode 100644 index 2974ccf5..00000000 --- a/client/map/tiles/fish_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c346hqdpfl3df diff --git a/client/map/tiles/fish_crate.tscn b/client/map/tiles/fish_crate.tscn index a096a000..f55c203b 100644 --- a/client/map/tiles/fish_crate.tscn +++ b/client/map/tiles/fish_crate.tscn @@ -1,21 +1,21 @@ -[gd_scene load_steps=3 format=3 uid="uid://d0u4ym5vny6v3"] +[gd_scene format=3 uid="uid://d0u4ym5vny6v3"] [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="FishCrate" instance=ExtResource("1_uotdf")] +[node name="FishCrate" unique_id=702043979 instance=ExtResource("1_uotdf")] -[node name="Fish" parent="." index="1" instance=ExtResource("3_p6tbn")] +[node name="Fish" parent="." index="1" unique_id=417741247 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) -[node name="Fish2" parent="." index="2" instance=ExtResource("3_p6tbn")] +[node name="Fish2" parent="." index="2" unique_id=345509005 instance=ExtResource("3_p6tbn")] transform = Transform3D(-0.711008, -0.637308, 0.297164, 0.702745, -0.65893, 0.268256, 0.024849, 0.399563, 0.916369, -0.214561, 0.387099, 0.251797) -[node name="Fish3" parent="." index="3" instance=ExtResource("3_p6tbn")] +[node name="Fish3" parent="." index="3" unique_id=903314315 instance=ExtResource("3_p6tbn")] transform = Transform3D(0.570404, 0.618182, 0.540824, 0.777163, -0.619291, -0.111795, 0.265817, 0.484076, -0.833674, 0.258679, 0.387099, 0.251797) -[node name="Fish4" parent="." index="4" instance=ExtResource("3_p6tbn")] +[node name="Fish4" parent="." index="4" unique_id=532382365 instance=ExtResource("3_p6tbn")] transform = Transform3D(0.392672, 0.829406, 0.397361, 0.896997, -0.25003, -0.364529, -0.202991, 0.499572, -0.842154, 0.224403, 0.387099, -0.0202113) -[node name="Fish5" parent="." index="5" instance=ExtResource("3_p6tbn")] +[node name="Fish5" parent="." index="5" unique_id=984963027 instance=ExtResource("3_p6tbn")] transform = Transform3D(0.667773, 0.721732, 0.18216, 0.744349, -0.64583, -0.169849, -0.00494065, 0.249011, -0.968488, 0.162187, 0.340659, -0.264269) diff --git a/client/map/tiles/floor.gd b/client/map/tiles/floor.gd index e0959708..6baae392 100644 --- a/client/map/tiles/floor.gd +++ b/client/map/tiles/floor.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/floor.gdshader b/client/map/tiles/floor.gdshader index a1567189..dd6f277f 100644 --- a/client/map/tiles/floor.gdshader +++ b/client/map/tiles/floor.gdshader @@ -1,6 +1,6 @@ /* Hurry Curry! - a game about cooking - Copyright (C) 2025 Hurry Curry! Contributors + Copyright (C) 2026 Hurry Curry! Contributors 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 diff --git a/client/map/tiles/floor.res b/client/map/tiles/floor.res Binary files differindex bcd3625c..3e50860a 100644 --- a/client/map/tiles/floor.res +++ b/client/map/tiles/floor.res diff --git a/client/map/tiles/floor.tscn b/client/map/tiles/floor.tscn index 61299e3a..e4bd7fd4 100644 --- a/client/map/tiles/floor.tscn +++ b/client/map/tiles/floor.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://d22cslgao5jd4"] +[gd_scene format=3 uid="uid://d22cslgao5jd4"] [ext_resource type="ArrayMesh" uid="uid://bd11w8rl78pab" path="res://map/tiles/floor.res" id="1_8pd6m"] -[node name="Floor" type="Node3D"] +[node name="Floor" type="Node3D" unique_id=1210077403] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1731675264] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_8pd6m") -skeleton = NodePath("") diff --git a/client/map/tiles/floor_like.gd b/client/map/tiles/floor_like.gd index 228a95e9..fc9be052 100644 --- a/client/map/tiles/floor_like.gd +++ b/client/map/tiles/floor_like.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/floor_material.tres b/client/map/tiles/floor_material.tres index d0d4ad4f..dedb50ba 100644 --- a/client/map/tiles/floor_material.tres +++ b/client/map/tiles/floor_material.tres @@ -1,4 +1,4 @@ -[gd_resource type="ShaderMaterial" load_steps=2 format=3 uid="uid://dngt21phuitvu"] +[gd_resource type="ShaderMaterial" format=3 uid="uid://dngt21phuitvu"] [ext_resource type="Shader" uid="uid://bf1jo3phn2pvs" path="res://map/tiles/floor.gdshader" id="1_7ju4h"] diff --git a/client/map/tiles/floor_mesher.gd b/client/map/tiles/floor_mesher.gd index cb89cc0b..addd23d2 100644 --- a/client/map/tiles/floor_mesher.gd +++ b/client/map/tiles/floor_mesher.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/flour_crate.gd.uid b/client/map/tiles/flour_crate.gd.uid deleted file mode 100644 index 9dd3f3de..00000000 --- a/client/map/tiles/flour_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://fangsumpqnoy diff --git a/client/map/tiles/flour_crate.tscn b/client/map/tiles/flour_crate.tscn index 1e4a7b7d..8f7d39bd 100644 --- a/client/map/tiles/flour_crate.tscn +++ b/client/map/tiles/flour_crate.tscn @@ -1,24 +1,24 @@ -[gd_scene load_steps=3 format=3 uid="uid://qwk6nih458mh"] +[gd_scene format=3 uid="uid://qwk6nih458mh"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_7xctt"] [ext_resource type="PackedScene" uid="uid://dgo8cknr1o6ml" path="res://map/items/flour.tscn" id="2_i5ha0"] -[node name="FlourCrate" instance=ExtResource("1_7xctt")] +[node name="FlourCrate" unique_id=457614471 instance=ExtResource("1_7xctt")] -[node name="Flour" parent="." index="1" instance=ExtResource("2_i5ha0")] +[node name="Flour" parent="." index="1" unique_id=1669483030 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.990268, 0, -0.139173, 0, 1, 0, 0.139173, 0, 0.990268, 0.25, 0, -0.2) -[node name="Flour2" parent="." index="2" instance=ExtResource("2_i5ha0")] +[node name="Flour2" parent="." index="2" unique_id=145159583 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.990268, 0, 0.139173, 0, 1, 0, -0.139173, 0, 0.990268, 0.25, 0, 0.2) -[node name="Flour3" parent="." index="3" instance=ExtResource("2_i5ha0")] +[node name="Flour3" parent="." index="3" unique_id=663539735 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.973674, 0, 0.227943, 0, 1, 0, -0.227943, 0, 0.973674, 0, 0, -0.202263) -[node name="Flour4" parent="." index="4" instance=ExtResource("2_i5ha0")] +[node name="Flour4" parent="." index="4" unique_id=152480553 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.99525, -0.00903298, -0.0969282, -0.0219365, 0.949266, -0.313707, 0.0948444, 0.314343, 0.94456, 0, 0, 0.106343) -[node name="Flour5" parent="." index="5" instance=ExtResource("2_i5ha0")] +[node name="Flour5" parent="." index="5" unique_id=1577002603 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.990268, 0, -0.139173, 0, 1, 0, 0.139173, 0, 0.990268, -0.25, 0, -0.2) -[node name="Flour6" parent="." index="6" instance=ExtResource("2_i5ha0")] +[node name="Flour6" parent="." index="6" unique_id=1425393970 instance=ExtResource("2_i5ha0")] transform = Transform3D(0.997564, 0, 0.0697565, 0, 1, 0, -0.0697565, 0, 0.997564, -0.25, 0, 0.2) diff --git a/client/map/tiles/freezer.gd b/client/map/tiles/freezer.gd index 47ab89a9..72aa4660 100644 --- a/client/map/tiles/freezer.gd +++ b/client/map/tiles/freezer.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Freezer -extends Counter +extends CounterLike var freezer: FreezerModel = load("res://map/tiles/freezer.tscn").instantiate() diff --git a/client/map/tiles/freezer.tscn b/client/map/tiles/freezer.tscn index 604bd439..950d1ce3 100644 --- a/client/map/tiles/freezer.tscn +++ b/client/map/tiles/freezer.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://ch753p32b3jl8"] +[gd_scene format=3 uid="uid://ch753p32b3jl8"] [ext_resource type="Script" uid="uid://b8r7lcqws42yr" path="res://map/tiles/freezer_model.gd" id="1_kso20"] [ext_resource type="ArrayMesh" uid="uid://cbdalq2gofyu8" path="res://map/tiles/freezer_base.res" id="2_akcb5"] @@ -42,20 +42,18 @@ _data = { &"open": SubResource("Animation_axsnk") } -[node name="Freezer" type="Node3D"] +[node name="Freezer" type="Node3D" unique_id=758213999] script = ExtResource("1_kso20") -[node name="FreezerBase" type="MeshInstance3D" parent="."] +[node name="FreezerBase" type="MeshInstance3D" parent="." unique_id=54052954] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("2_akcb5") -skeleton = NodePath("") -[node name="FreezerDoor" type="MeshInstance3D" parent="FreezerBase"] +[node name="FreezerDoor" type="MeshInstance3D" parent="FreezerBase" unique_id=438445392] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.850006, 1.25, 0.5) mesh = ExtResource("3_0pgw0") -skeleton = NodePath("") -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=565200753] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 0) visible = false light_color = Color(0.566816, 0.801037, 0.838352, 1) @@ -64,7 +62,7 @@ omni_range = 3.0 script = ExtResource("4_1eu4t") completely_disable_light_if_shadows_disabled = true -[node name="OmniLight3D2" type="OmniLight3D" parent="."] +[node name="OmniLight3D2" type="OmniLight3D" parent="." unique_id=452354585] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0) visible = false light_color = Color(0.566816, 0.801037, 0.838352, 1) @@ -73,7 +71,7 @@ omni_range = 3.0 script = ExtResource("4_1eu4t") completely_disable_light_if_shadows_disabled = true -[node name="OmniLight3D3" type="OmniLight3D" parent="."] +[node name="OmniLight3D3" type="OmniLight3D" parent="." unique_id=1314789449] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0) visible = false light_color = Color(0.566816, 0.801037, 0.838352, 1) @@ -82,9 +80,7 @@ omni_range = 3.0 script = ExtResource("4_1eu4t") completely_disable_light_if_shadows_disabled = true -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -libraries = { -&"": SubResource("AnimationLibrary_usga0") -} +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1644020234] +libraries/ = SubResource("AnimationLibrary_usga0") [connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_player_animation_finished"] diff --git a/client/map/tiles/freezer_base.res b/client/map/tiles/freezer_base.res Binary files differindex dded8a8b..172564a5 100644 --- a/client/map/tiles/freezer_base.res +++ b/client/map/tiles/freezer_base.res diff --git a/client/map/tiles/freezer_door.res b/client/map/tiles/freezer_door.res Binary files differindex 9efb17a3..3fe84dfc 100644 --- a/client/map/tiles/freezer_door.res +++ b/client/map/tiles/freezer_door.res diff --git a/client/map/tiles/freezer_model.gd b/client/map/tiles/freezer_model.gd index 4defda9c..b05c6959 100644 --- a/client/map/tiles/freezer_model.gd +++ b/client/map/tiles/freezer_model.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/generic_tile.gd b/client/map/tiles/generic_tile.gd index 0a11efc6..73ac3fac 100644 --- a/client/map/tiles/generic_tile.gd +++ b/client/map/tiles/generic_tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,13 +13,9 @@ # 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 UnknownTile -extends Floor +class_name GenericTile +extends Tile -func _init(ctx: TileFactory.TileCC): +func _init(ctx: TileFactory.TileCC, scene: PackedScene): super(ctx) - var label = Label3D.new() - label.text = ctx.tile_name.name - label.position.y = 0.5 - label.billboard = BaseMaterial3D.BILLBOARD_ENABLED - item_base.add_child(label) + base.add_child(scene.instantiate()) diff --git a/client/map/tiles/generic_tile.gd.uid b/client/map/tiles/generic_tile.gd.uid index 3c331921..f73a3209 100644 --- a/client/map/tiles/generic_tile.gd.uid +++ b/client/map/tiles/generic_tile.gd.uid @@ -1 +1 @@ -uid://l154vna0x8de +uid://dtq5tlmwi8gxy diff --git a/client/map/tiles/grass.gd b/client/map/tiles/grass.gd index d9ebce7c..bc555b93 100644 --- a/client/map/tiles/grass.gd +++ b/client/map/tiles/grass.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,6 +16,13 @@ class_name Grass extends FloorLike +func _init(ctx: TileFactory.TileCC): + super(ctx) + if not base_mesh: + var grass_mesher: GrassMesher = ctx.floor_meshers[fm_id()] + var use_no_grass: bool = ctx.above_tile_names.any(func (s): return s == "chair" or s == "table" or s == "conveyor") + grass_mesher.add_tile(ctx.position, use_no_grass) + static func fm_id() -> String: return "grass" diff --git a/client/map/tiles/grass.res b/client/map/tiles/grass.res Binary files differindex 1c4565a1..6a070c8e 100644 --- a/client/map/tiles/grass.res +++ b/client/map/tiles/grass.res diff --git a/client/map/tiles/grass.tscn b/client/map/tiles/grass.tscn index 649cc6c1..720786c2 100644 --- a/client/map/tiles/grass.tscn +++ b/client/map/tiles/grass.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bi6o7lbvhunj1"] +[gd_scene format=3 uid="uid://bi6o7lbvhunj1"] [ext_resource type="ArrayMesh" uid="uid://dyu8iuolwqr5l" path="res://map/tiles/grass.res" id="1_pjjrj"] -[node name="Grass" type="Node3D"] +[node name="Grass" type="Node3D" unique_id=380813708] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=714753882] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_pjjrj") -skeleton = NodePath("") diff --git a/client/map/tiles/grass_mesher.gd b/client/map/tiles/grass_mesher.gd index 466c3c1e..f157c84c 100644 --- a/client/map/tiles/grass_mesher.gd +++ b/client/map/tiles/grass_mesher.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -19,10 +19,21 @@ extends FloorMesher const GRASS_MESH: Mesh = preload("res://map/tiles/grass_side.tres") var multimesh_instance := MultiMeshInstance3D.new() +var no_grass_tiles: Dictionary[String, Vector2i] = {} + func _init(mesh: MeshInstance3D) -> void: super(mesh) mesh_instance.add_child(multimesh_instance) +func add_tile(pos: Vector2i, use_no_grass: bool = false): + super(pos) + if use_no_grass: + no_grass_tiles[str(pos)] = pos + +func remove_tile(pos: Vector2i): + super(pos) + no_grass_tiles.erase(str(pos)) + func flush() -> void: super() var random = RandomNumberGenerator.new() @@ -33,8 +44,10 @@ func flush() -> void: multimesh.transform_format = MultiMesh.TRANSFORM_3D multimesh.instance_count = tiles.size() * Settings.read("graphics.grass_amount") var t := tiles.values() + var no_grass := no_grass_tiles.values() for i in multimesh.instance_count: - var p = t[i / Settings.read("graphics.grass_amount")] + var p: Vector2i = t[i / Settings.read("graphics.grass_amount")] + if p in no_grass: continue var origin := Vector3(random.randf_range(-.5, .5), 0.25, random.randf_range(-.5, .5)) + Vector3(p.x + 0.5, 0.0, p.y + 0.5) var basis_ := (Basis(Vector3(0, 1, 0), random.randf_range(0, PI)) * Basis(Vector3(1, 0, 0), PI/2)).scaled(Vector3(0.75, 0.5, 0.75)) multimesh.set_instance_transform(i, Transform3D(basis_, origin)) diff --git a/client/map/tiles/grass_side.tres b/client/map/tiles/grass_side.tres index 3f29e10e..52042308 100644 --- a/client/map/tiles/grass_side.tres +++ b/client/map/tiles/grass_side.tres @@ -1,4 +1,4 @@ -[gd_resource type="ArrayMesh" load_steps=4 format=3 uid="uid://l2by4gv4wpd1"] +[gd_resource type="ArrayMesh" format=3 uid="uid://l2by4gv4wpd1"] [ext_resource type="Texture2D" uid="uid://p35o0tkyfmrl" path="res://map/tiles/grass_side.webp" id="1_d17wb"] diff --git a/client/map/tiles/house/balcony.res b/client/map/tiles/house/balcony.res Binary files differindex 6a8b9c8e..012c7fbb 100644 --- a/client/map/tiles/house/balcony.res +++ b/client/map/tiles/house/balcony.res diff --git a/client/map/tiles/house/balcony.tscn b/client/map/tiles/house/balcony.tscn index 1c0232ff..7613c68b 100644 --- a/client/map/tiles/house/balcony.tscn +++ b/client/map/tiles/house/balcony.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://dymxdxvmgjtae"] +[gd_scene format=3 uid="uid://dymxdxvmgjtae"] [ext_resource type="ArrayMesh" uid="uid://1y54ofmdj40i" path="res://map/tiles/house/balcony.res" id="1_6niu3"] [ext_resource type="Material" uid="uid://djepfh3hn45mt" path="res://map/tiles/house/window_glass.tres" id="2_1yhve"] @@ -6,12 +6,11 @@ [ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="4_dqlht"] [ext_resource type="Material" uid="uid://c56pgcp4onece" path="res://map/tiles/house/frame.tres" id="5_xtshi"] -[node name="HouseBalcony" type="Node3D"] +[node name="HouseBalcony" type="Node3D" unique_id=1463800129] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1473000161] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_6niu3") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_1yhve") surface_material_override/1 = ExtResource("3_phigl") surface_material_override/2 = ExtResource("4_dqlht") diff --git a/client/map/tiles/house/chimney.res b/client/map/tiles/house/chimney.res Binary files differindex 3c7d43a3..00487f53 100644 --- a/client/map/tiles/house/chimney.res +++ b/client/map/tiles/house/chimney.res diff --git a/client/map/tiles/house/chimney.tscn b/client/map/tiles/house/chimney.tscn index 68b8faa3..1c40f67b 100644 --- a/client/map/tiles/house/chimney.tscn +++ b/client/map/tiles/house/chimney.tscn @@ -1,14 +1,13 @@ -[gd_scene load_steps=4 format=3 uid="uid://bu1y3cish4snv"] +[gd_scene format=3 uid="uid://bu1y3cish4snv"] [ext_resource type="ArrayMesh" uid="uid://cji0k4mpudcxs" path="res://map/tiles/house/chimney.res" id="1_tq8p8"] [ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="2_epifg"] [ext_resource type="Material" uid="uid://bnip4xf36u1vv" path="res://map/tiles/house/rooftop.tres" id="2_q0gbv"] -[node name="HouseRoofChimney" type="Node3D"] +[node name="HouseRoofChimney" type="Node3D" unique_id=1380252236] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1708887236] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_tq8p8") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_q0gbv") surface_material_override/1 = ExtResource("2_epifg") diff --git a/client/map/tiles/house/corner.res b/client/map/tiles/house/corner.res Binary files differindex 33db9356..e116a260 100644 --- a/client/map/tiles/house/corner.res +++ b/client/map/tiles/house/corner.res diff --git a/client/map/tiles/house/corner.tscn b/client/map/tiles/house/corner.tscn index dc2f5c15..89f9e79e 100644 --- a/client/map/tiles/house/corner.tscn +++ b/client/map/tiles/house/corner.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=3 uid="uid://dyl01w3dwdodh"] +[gd_scene format=3 uid="uid://dyl01w3dwdodh"] [ext_resource type="ArrayMesh" uid="uid://qa436i3ovnsa" path="res://map/tiles/house/corner.res" id="1_trrsu"] [ext_resource type="Material" uid="uid://djepfh3hn45mt" path="res://map/tiles/house/window_glass.tres" id="2_dpdnb"] @@ -7,12 +7,11 @@ [ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="3_x4hec"] [ext_resource type="Material" uid="uid://c56pgcp4onece" path="res://map/tiles/house/frame.tres" id="4_p1skd"] -[node name="HouseCorner" type="Node3D"] +[node name="HouseCorner" type="Node3D" unique_id=902381028] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=527847211] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_trrsu") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_dpdnb") surface_material_override/1 = ExtResource("3_edb5f") surface_material_override/2 = ExtResource("4_p1skd") diff --git a/client/map/tiles/house/door.res b/client/map/tiles/house/door.res Binary files differindex 4314a3ce..e4005e41 100644 --- a/client/map/tiles/house/door.res +++ b/client/map/tiles/house/door.res diff --git a/client/map/tiles/house/door.tscn b/client/map/tiles/house/door.tscn index 4b6f840f..8e2ccd9c 100644 --- a/client/map/tiles/house/door.tscn +++ b/client/map/tiles/house/door.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://me0va8kbn0ck"] +[gd_scene format=3 uid="uid://me0va8kbn0ck"] [ext_resource type="Material" uid="uid://c56pgcp4onece" path="res://map/tiles/house/frame.tres" id="1_7cj7h"] [ext_resource type="ArrayMesh" uid="uid://bvrrb1rr6f41l" path="res://map/tiles/house/door.res" id="1_k0ila"] @@ -11,12 +11,11 @@ cull_mode = 1 albedo_color = Color(0.160784, 0.180392, 0.0901961, 1) -[node name="HouseDoor" type="Node3D"] +[node name="HouseDoor" type="Node3D" unique_id=309824877] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1256654900] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_k0ila") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_n2fsy") surface_material_override/1 = ExtResource("3_ca1vx") surface_material_override/2 = ExtResource("4_lvj6j") diff --git a/client/map/tiles/house/oriel.res b/client/map/tiles/house/oriel.res Binary files differindex c25d1c64..fc2f19a0 100644 --- a/client/map/tiles/house/oriel.res +++ b/client/map/tiles/house/oriel.res diff --git a/client/map/tiles/house/oriel.tscn b/client/map/tiles/house/oriel.tscn index 2f67cf9c..1843bda0 100644 --- a/client/map/tiles/house/oriel.tscn +++ b/client/map/tiles/house/oriel.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://cvu75687xehqb"] +[gd_scene format=3 uid="uid://cvu75687xehqb"] [ext_resource type="ArrayMesh" uid="uid://bvi7worim1fe5" path="res://map/tiles/house/oriel.res" id="1_66iue"] [ext_resource type="Material" uid="uid://djepfh3hn45mt" path="res://map/tiles/house/window_glass.tres" id="2_66iue"] @@ -6,12 +6,11 @@ [ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="4_fd1my"] [ext_resource type="Material" uid="uid://c56pgcp4onece" path="res://map/tiles/house/frame.tres" id="5_5mym6"] -[node name="HouseOriel" type="Node3D"] +[node name="HouseOriel" type="Node3D" unique_id=1351378153] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1577039197] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_66iue") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_66iue") surface_material_override/1 = ExtResource("3_fqtxf") surface_material_override/2 = ExtResource("4_fd1my") diff --git a/client/map/tiles/house/roof.res b/client/map/tiles/house/roof.res Binary files differindex b5efd434..ee0ab279 100644 --- a/client/map/tiles/house/roof.res +++ b/client/map/tiles/house/roof.res diff --git a/client/map/tiles/house/roof.tscn b/client/map/tiles/house/roof.tscn index b9eb92c2..11170208 100644 --- a/client/map/tiles/house/roof.tscn +++ b/client/map/tiles/house/roof.tscn @@ -1,12 +1,11 @@ -[gd_scene load_steps=3 format=3 uid="uid://ct7832jj3fewr"] +[gd_scene format=3 uid="uid://ct7832jj3fewr"] [ext_resource type="ArrayMesh" uid="uid://xuscogcrjlv0" path="res://map/tiles/house/roof.res" id="1_ar68v"] [ext_resource type="Material" uid="uid://bnip4xf36u1vv" path="res://map/tiles/house/rooftop.tres" id="2_cfl0y"] -[node name="HouseRoof" type="Node3D"] +[node name="HouseRoof" type="Node3D" unique_id=1848385786] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=134240680] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_ar68v") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_cfl0y") diff --git a/client/map/tiles/house/side.res b/client/map/tiles/house/side.res Binary files differindex ff974a33..709b07cc 100644 --- a/client/map/tiles/house/side.res +++ b/client/map/tiles/house/side.res diff --git a/client/map/tiles/house/side.tscn b/client/map/tiles/house/side.tscn index b6d22484..11f1c241 100644 --- a/client/map/tiles/house/side.tscn +++ b/client/map/tiles/house/side.tscn @@ -1,14 +1,13 @@ -[gd_scene load_steps=4 format=3 uid="uid://booer6datgac"] +[gd_scene format=3 uid="uid://booer6datgac"] [ext_resource type="ArrayMesh" uid="uid://bd72yr7fhdbb6" path="res://map/tiles/house/side.res" id="1_h8y51"] [ext_resource type="Material" uid="uid://bnip4xf36u1vv" path="res://map/tiles/house/rooftop.tres" id="2_caago"] [ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="3_rlg5c"] -[node name="HouseSide" type="Node3D"] +[node name="HouseSide" type="Node3D" unique_id=876251696] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=605370668] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_h8y51") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_caago") surface_material_override/1 = ExtResource("3_rlg5c") diff --git a/client/map/tiles/house/wall.res b/client/map/tiles/house/wall.res Binary files differindex daeaa55c..d9c48a44 100644 --- a/client/map/tiles/house/wall.res +++ b/client/map/tiles/house/wall.res diff --git a/client/map/tiles/house/wall.tscn b/client/map/tiles/house/wall.tscn index 05bb73ef..e024158e 100644 --- a/client/map/tiles/house/wall.tscn +++ b/client/map/tiles/house/wall.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://ctd63c1uvf6va"] +[gd_scene format=3 uid="uid://ctd63c1uvf6va"] [ext_resource type="ArrayMesh" uid="uid://c4tqpo8dn2mm7" path="res://map/tiles/house/wall.res" id="1_oovdv"] [ext_resource type="Material" uid="uid://c56pgcp4onece" path="res://map/tiles/house/frame.tres" id="1_xlk0v"] @@ -6,12 +6,11 @@ [ext_resource type="Material" uid="uid://djepfh3hn45mt" path="res://map/tiles/house/window_glass.tres" id="2_oovdv"] [ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="4_oovdv"] -[node name="HouseWall" type="Node3D"] +[node name="HouseWall" type="Node3D" unique_id=205942806] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1914595227] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_oovdv") -skeleton = NodePath("") surface_material_override/0 = ExtResource("2_oovdv") surface_material_override/1 = ExtResource("2_gloxj") surface_material_override/2 = ExtResource("4_oovdv") diff --git a/client/map/tiles/house_balcony.gd b/client/map/tiles/house_balcony.gd index 98fc63ac..210faaa5 100644 --- a/client/map/tiles/house_balcony.gd +++ b/client/map/tiles/house_balcony.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_door.gd b/client/map/tiles/house_door.gd index bcd35254..96c14459 100644 --- a/client/map/tiles/house_door.gd +++ b/client/map/tiles/house_door.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_oriel.gd b/client/map/tiles/house_oriel.gd index a659267b..828663f7 100644 --- a/client/map/tiles/house_oriel.gd +++ b/client/map/tiles/house_oriel.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_roof.gd b/client/map/tiles/house_roof.gd index 9e3e7b5c..30dfb517 100644 --- a/client/map/tiles/house_roof.gd +++ b/client/map/tiles/house_roof.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_roof_chimney.gd b/client/map/tiles/house_roof_chimney.gd index d46686d5..4d178788 100644 --- a/client/map/tiles/house_roof_chimney.gd +++ b/client/map/tiles/house_roof_chimney.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_side.gd b/client/map/tiles/house_side.gd index bca0317a..3fbaae9d 100644 --- a/client/map/tiles/house_side.gd +++ b/client/map/tiles/house_side.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_tile.gd b/client/map/tiles/house_tile.gd index cd0ff6c3..aba81f80 100644 --- a/client/map/tiles/house_tile.gd +++ b/client/map/tiles/house_tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/house_wall.gd b/client/map/tiles/house_wall.gd index fea2515d..e01fda08 100644 --- a/client/map/tiles/house_wall.gd +++ b/client/map/tiles/house_wall.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/item_portal.gd b/client/map/tiles/item_portal.gd index 69bad5e9..23e14caf 100644 --- a/client/map/tiles/item_portal.gd +++ b/client/map/tiles/item_portal.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,10 +14,10 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name ItemPortal -extends CounterBase +extends Tile -var model: PortalModel = load("res://map/tiles/portal.tscn").instantiate() -func _init(ctx: TileFactory.TileCC, type: bool): +var model := preload("res://map/tiles/portal.tscn") +func _init(ctx: TileFactory.TileCC, type: float): super(ctx) + base.add_child(model.instantiate()) model.configure(0.2, type) - base.add_child(model) diff --git a/client/map/tiles/knife.res b/client/map/tiles/knife.res Binary files differindex 622d9eb3..8e49bd2e 100644 --- a/client/map/tiles/knife.res +++ b/client/map/tiles/knife.res diff --git a/client/map/tiles/knife.tscn b/client/map/tiles/knife.tscn index a7cd690e..02836ca3 100644 --- a/client/map/tiles/knife.tscn +++ b/client/map/tiles/knife.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cufype1bex3r3"] +[gd_scene format=3 uid="uid://cufype1bex3r3"] [ext_resource type="ArrayMesh" uid="uid://buqo28euvn7ru" path="res://map/tiles/knife.res" id="1_uotix"] -[node name="Knife" type="Node3D"] +[node name="Knife" type="Node3D" unique_id=49665079] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=772515596] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_uotix") -skeleton = NodePath("") diff --git a/client/map/tiles/lamp.gd b/client/map/tiles/lamp.gd index d315f737..d99949ee 100644 --- a/client/map/tiles/lamp.gd +++ b/client/map/tiles/lamp.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/lamp.res b/client/map/tiles/lamp.res Binary files differindex b4817fac..fa4085b9 100644 --- a/client/map/tiles/lamp.res +++ b/client/map/tiles/lamp.res diff --git a/client/map/tiles/lamp.tscn b/client/map/tiles/lamp.tscn index 6dbe9e86..13bc8dc8 100644 --- a/client/map/tiles/lamp.tscn +++ b/client/map/tiles/lamp.tscn @@ -1,18 +1,18 @@ -[gd_scene load_steps=3 format=3 uid="uid://b6x5xlchih2mc"] +[gd_scene format=3 uid="uid://b6x5xlchih2mc"] [ext_resource type="ArrayMesh" uid="uid://cranpcmdoa8mx" path="res://map/tiles/lamp.res" id="1_2f0v1"] [ext_resource type="Script" uid="uid://nm4trjneu1qt" path="res://map/tiles/light_tile.gd" id="1_87gp4"] -[node name="Lamp" type="Node3D" node_paths=PackedStringArray("lights")] +[node name="Lamp" type="Node3D" unique_id=742335162 node_paths=PackedStringArray("lights")] script = ExtResource("1_87gp4") lights = [NodePath("OmniLight3D")] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1819243081] transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) cast_shadow = 0 mesh = ExtResource("1_2f0v1") -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=421050732] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.68634, 0) light_color = Color(0.896459, 0.717604, 0.587842, 1) light_energy = 3.0 diff --git a/client/map/tiles/leek_crate.gd.uid b/client/map/tiles/leek_crate.gd.uid deleted file mode 100644 index 8366b070..00000000 --- a/client/map/tiles/leek_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://fmpnrlya8too diff --git a/client/map/tiles/leek_crate.tscn b/client/map/tiles/leek_crate.tscn index 2cf77bc2..9e40ae72 100644 --- a/client/map/tiles/leek_crate.tscn +++ b/client/map/tiles/leek_crate.tscn @@ -1,24 +1,24 @@ -[gd_scene load_steps=3 format=3 uid="uid://bkrly2qyttgwh"] +[gd_scene format=3 uid="uid://bkrly2qyttgwh"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_l8q4i"] [ext_resource type="PackedScene" uid="uid://cmpwfkdnrm6e6" path="res://map/items/leek.tscn" id="2_n2ove"] -[node name="LeekCrate" instance=ExtResource("1_l8q4i")] +[node name="LeekCrate" unique_id=1033364037 instance=ExtResource("1_l8q4i")] -[node name="Leek" parent="." index="1" instance=ExtResource("2_n2ove")] +[node name="Leek" parent="." index="1" unique_id=1746190140 instance=ExtResource("2_n2ove")] transform = Transform3D(-0.5767554, -0.79622483, -0.18269974, 0.8157721, -0.573194, -0.07723002, -0.043229926, -0.19358417, 0.9801311, -0.11139119, 0.28240138, -0.204823) -[node name="Leek2" parent="." index="2" instance=ExtResource("2_n2ove")] +[node name="Leek2" parent="." index="2" unique_id=974732976 instance=ExtResource("2_n2ove")] transform = Transform3D(0.5011232, -0.9659322, -0.3177097, 0.8640088, 0.5337136, 0.23595639, -0.04862662, -0.471297, 0.91836, 0.3106259, 0.18931627, -0.223387) -[node name="Leek3" parent="." index="3" instance=ExtResource("2_n2ove")] +[node name="Leek3" parent="." index="3" unique_id=1903030949 instance=ExtResource("2_n2ove")] transform = Transform3D(-0.40310276, -0.9025585, 0.15131347, 0.911373, -0.41092736, -0.023192208, 0.08311114, 0.12855409, 0.9882142, -0.136853, 0.30587843, 0.253195) -[node name="Leek4" parent="." index="4" instance=ExtResource("2_n2ove")] +[node name="Leek4" parent="." index="4" unique_id=1669547444 instance=ExtResource("2_n2ove")] transform = Transform3D(0.47521883, 0.51630676, -0.7674939, 0.8236207, 0.10721652, 0.560059, 0.3095418, -1.0779284, -0.31190884, 0.1674414, 0.2460402, 0.34835967) -[node name="Leek5" parent="." index="5" instance=ExtResource("2_n2ove")] +[node name="Leek5" parent="." index="5" unique_id=2085585545 instance=ExtResource("2_n2ove")] transform = Transform3D(0.32411182, -0.028707754, -0.94571644, 0.9431412, 0.10330227, 0.32105142, 0.0737312, -1.1951997, 0.050463554, 0.22963816, 0.2460402, 0.07488689) -[node name="Leek6" parent="." index="6" instance=ExtResource("2_n2ove")] +[node name="Leek6" parent="." index="6" unique_id=1797263298 instance=ExtResource("2_n2ove")] transform = Transform3D(-0.4909433, -1.0452821, 0.014611006, 0.85173434, -0.58012193, -0.2020859, 0.1830938, -0.10412076, 0.9792587, -0.10463678, 0.29387888, 0.014548987) diff --git a/client/map/tiles/lettuce_crate.tscn b/client/map/tiles/lettuce_crate.tscn index 922773bf..e98f26c2 100644 --- a/client/map/tiles/lettuce_crate.tscn +++ b/client/map/tiles/lettuce_crate.tscn @@ -1,18 +1,18 @@ -[gd_scene load_steps=3 format=3 uid="uid://brgkq8x5jgxyb"] +[gd_scene format=3 uid="uid://brgkq8x5jgxyb"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_57wln"] [ext_resource type="PackedScene" uid="uid://cuf8vwqk6xujk" path="res://map/items/lettuce.tscn" id="3_03evc"] -[node name="LettuceCrate" instance=ExtResource("1_57wln")] +[node name="LettuceCrate" unique_id=1488715909 instance=ExtResource("1_57wln")] -[node name="Lettuce" parent="." index="1" instance=ExtResource("3_03evc")] +[node name="Lettuce" parent="." index="1" unique_id=1196212278 instance=ExtResource("3_03evc")] transform = Transform3D(0.258819, 0, -0.965926, 0, 1, 0, 0.965926, 0, 0.258819, -0.15, 0, -0.15) -[node name="Lettuce2" parent="." index="2" instance=ExtResource("3_03evc")] +[node name="Lettuce2" parent="." index="2" unique_id=867063712 instance=ExtResource("3_03evc")] transform = Transform3D(0.939693, 0, -0.34202, 0, 1, 0, 0.34202, 0, 0.939693, 0.15, 0, 0.15) -[node name="Lettuce3" parent="." index="3" instance=ExtResource("3_03evc")] +[node name="Lettuce3" parent="." index="3" unique_id=1638372503 instance=ExtResource("3_03evc")] transform = Transform3D(0.939693, 0, -0.34202, 0, 1, 0, 0.34202, 0, 0.939693, -0.15, 0.15, 0.15) -[node name="Lettuce4" parent="." index="4" instance=ExtResource("3_03evc")] +[node name="Lettuce4" parent="." index="4" unique_id=563023149 instance=ExtResource("3_03evc")] transform = Transform3D(0.939693, 0, -0.34202, 0, 1, 0, 0.34202, 0, 0.939693, 0.15, 0.15, -0.15) diff --git a/client/map/tiles/light_tile.gd b/client/map/tiles/light_tile.gd index 2476d8eb..2187ec6f 100644 --- a/client/map/tiles/light_tile.gd +++ b/client/map/tiles/light_tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/map_selector.res b/client/map/tiles/map_selector.res Binary files differnew file mode 100644 index 00000000..4b25868d --- /dev/null +++ b/client/map/tiles/map_selector.res diff --git a/client/map/tiles/map_selector.tscn b/client/map/tiles/map_selector.tscn new file mode 100644 index 00000000..a91b8cb7 --- /dev/null +++ b/client/map/tiles/map_selector.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://bsl8lb18f8hcv"] + +[ext_resource type="ArrayMesh" uid="uid://bbfwavihrmf4i" path="res://map/tiles/map_selector.res" id="1_ktcsy"] + +[node name="MapSelector" type="Node3D" unique_id=2017272843] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=767071822] +transform = Transform3D(-2.1855694e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.1855694e-08, 0, 0.525, 0) +mesh = ExtResource("1_ktcsy") diff --git a/client/map/tiles/mushroom_crate.gd b/client/map/tiles/mushroom_crate.gd deleted file mode 100644 index de59b8f5..00000000 --- a/client/map/tiles/mushroom_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 MushroomCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/mushroom_crate.tscn").instantiate()) diff --git a/client/map/tiles/mushroom_crate.gd.uid b/client/map/tiles/mushroom_crate.gd.uid deleted file mode 100644 index b0c54434..00000000 --- a/client/map/tiles/mushroom_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://by0dud130fog6 diff --git a/client/map/tiles/mushroom_crate.tscn b/client/map/tiles/mushroom_crate.tscn index 01a5ed87..aa42f482 100644 --- a/client/map/tiles/mushroom_crate.tscn +++ b/client/map/tiles/mushroom_crate.tscn @@ -1,21 +1,21 @@ -[gd_scene load_steps=3 format=3 uid="uid://dn4o5dyp7t021"] +[gd_scene format=3 uid="uid://dn4o5dyp7t021"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_juoqu"] [ext_resource type="PackedScene" uid="uid://cc0jqiiywrrc0" path="res://map/items/mushroom.tscn" id="2_juoqu"] -[node name="MushroomCrate" instance=ExtResource("1_juoqu")] +[node name="MushroomCrate" unique_id=2098365067 instance=ExtResource("1_juoqu")] -[node name="Mushroom" parent="." index="1" instance=ExtResource("2_juoqu")] +[node name="Mushroom" parent="." index="1" unique_id=1158588513 instance=ExtResource("2_juoqu")] transform = Transform3D(0.3251556, 0, -0.94566053, 0.22043908, 0.9724513, 0.075795695, 0.91960883, -0.23310593, 0.316198, -0.18228972, 0.08433756, -0.16040182) -[node name="Mushroom2" parent="." index="2" instance=ExtResource("2_juoqu")] +[node name="Mushroom2" parent="." index="2" unique_id=1505234337 instance=ExtResource("2_juoqu")] transform = Transform3D(1.0213542, -0.27169096, -0.30499113, 0.30648074, 1.0527234, 0.08855964, 0.27000946, -0.16720423, 1.0531559, -0.15469912, 0.08611792, 0.22869657) -[node name="Mushroom3" parent="." index="3" instance=ExtResource("2_juoqu")] +[node name="Mushroom3" parent="." index="3" unique_id=1740137701 instance=ExtResource("2_juoqu")] transform = Transform3D(0.905218, -0.124258906, 0.40637422, 0.12618923, 0.9917586, 0.022162013, -0.40577894, 0.031218598, 0.91343796, 0.25116885, 0.080719024, 0.16321422) -[node name="Mushroom4" parent="." index="4" instance=ExtResource("2_juoqu")] +[node name="Mushroom4" parent="." index="4" unique_id=382878953 instance=ExtResource("2_juoqu")] transform = Transform3D(-0.34809524, -0.05838425, -0.93563926, 0.1280063, 0.9857505, -0.10913467, 0.9286787, -0.15775698, -0.33566153, 0.2079333, 0.058740195, -0.1254655) -[node name="Mushroom5" parent="." index="5" instance=ExtResource("2_juoqu")] +[node name="Mushroom5" parent="." index="5" unique_id=1716232471 instance=ExtResource("2_juoqu")] transform = Transform3D(-0.09821522, -0.16101892, -0.9820523, 0.3132099, 0.9316722, -0.18408266, 0.94459164, -0.32566825, -0.041071653, 0, 0.15, 0.03306987) diff --git a/client/map/tiles/noodles_crate.tscn b/client/map/tiles/noodles_crate.tscn new file mode 100644 index 00000000..151219aa --- /dev/null +++ b/client/map/tiles/noodles_crate.tscn @@ -0,0 +1,30 @@ +[gd_scene format=3 uid="uid://b0jyx2gu6fcx7"] + +[ext_resource type="ArrayMesh" uid="uid://btn7oh1v2k40p" path="res://map/tiles/crate.res" id="1_vcnsh"] +[ext_resource type="ArrayMesh" uid="uid://c7nmboj44jn7a" path="res://map/items/noodles.res" id="2_3k214"] + +[node name="Crate" type="Node3D" unique_id=235966363] + +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=2104345741] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +mesh = ExtResource("1_vcnsh") + +[node name="Noodles" type="MeshInstance3D" parent="." unique_id=330418144] +transform = Transform3D(0.49983656, 0.012705037, 0.0014109544, -0.012783143, 0.4967825, 0.05517004, 0, -0.05518808, 0.49694493, -0.02444148, 0.3581394, 0.099653274) +mesh = ExtResource("2_3k214") + +[node name="Noodles2" type="MeshInstance3D" parent="." unique_id=39703036] +transform = Transform3D(0.36541817, 0, 0.16269466, 0, 0.4, 0, -0.16269466, 0, 0.36541817, -0.151, 0.239, 0.265) +mesh = ExtResource("2_3k214") + +[node name="Noodles3" type="MeshInstance3D" parent="." unique_id=1633575361] +transform = Transform3D(-0.19513778, 0, 0.3491722, 0, 0.39999998, 0, -0.3491722, 0, -0.19513778, 0.23498613, 0.24920535, 0.14507401) +mesh = ExtResource("2_3k214") + +[node name="Noodles4" type="MeshInstance3D" parent="." unique_id=264982564] +transform = Transform3D(-0.3997121, 0, -0.015173763, 0, 0.39999998, 0, 0.015173763, 0, -0.3997121, 0.16035348, 0.24920535, -0.2861838) +mesh = ExtResource("2_3k214") + +[node name="Noodles5" type="MeshInstance3D" parent="." unique_id=1506519209] +transform = Transform3D(0.111918226, 0, -0.38402385, 0, 0.39999995, 0, 0.38402385, 0, 0.111918226, -0.2625249, 0.24920535, -0.16159214) +mesh = ExtResource("2_3k214") diff --git a/client/map/tiles/oven.gd b/client/map/tiles/oven.gd index ef47047f..14ff0758 100644 --- a/client/map/tiles/oven.gd +++ b/client/map/tiles/oven.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Oven -extends Counter +extends CounterLike var oven: OvenModel = load("res://map/tiles/oven.tscn").instantiate() diff --git a/client/map/tiles/oven.tscn b/client/map/tiles/oven.tscn index 69fea89d..14b0a7cc 100644 --- a/client/map/tiles/oven.tscn +++ b/client/map/tiles/oven.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://bil6eip7uwqvs"] +[gd_scene format=3 uid="uid://bil6eip7uwqvs"] [ext_resource type="Script" uid="uid://evb48gqf08js" 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"] @@ -39,25 +39,21 @@ _data = { &"open": SubResource("Animation_yb3ht") } -[node name="Oven" type="Node3D"] +[node name="Oven" type="Node3D" unique_id=144691918] script = ExtResource("1_3v43w") -[node name="Base" type="MeshInstance3D" parent="."] +[node name="Base" type="MeshInstance3D" parent="." unique_id=1278985448] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_d1hwl") -skeleton = NodePath("") -[node name="Door" type="MeshInstance3D" parent="Base"] +[node name="Door" type="MeshInstance3D" parent="Base" unique_id=964634352] 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="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1708626511] +libraries/ = SubResource("AnimationLibrary_io5nw") -[node name="OmniLight3D" type="OmniLight3D" parent="."] +[node name="OmniLight3D" type="OmniLight3D" parent="." unique_id=1222495133] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.7, 0) visible = false light_color = Color(0.944743, 0.70243, 0.38641, 1) diff --git a/client/map/tiles/oven_base.res b/client/map/tiles/oven_base.res Binary files differindex 6cef2533..c9a9cb73 100644 --- a/client/map/tiles/oven_base.res +++ b/client/map/tiles/oven_base.res diff --git a/client/map/tiles/oven_door.res b/client/map/tiles/oven_door.res Binary files differindex 8c468117..695b437b 100644 --- a/client/map/tiles/oven_door.res +++ b/client/map/tiles/oven_door.res diff --git a/client/map/tiles/oven_model.gd b/client/map/tiles/oven_model.gd index 9ad66bd6..644213ff 100644 --- a/client/map/tiles/oven_model.gd +++ b/client/map/tiles/oven_model.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/path.gd b/client/map/tiles/path.gd index 1127c0bf..cfb598ca 100644 --- a/client/map/tiles/path.gd +++ b/client/map/tiles/path.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/path.res b/client/map/tiles/path.res Binary files differindex e775b24e..9bd9f0dd 100644 --- a/client/map/tiles/path.res +++ b/client/map/tiles/path.res diff --git a/client/map/tiles/path.tscn b/client/map/tiles/path.tscn index b618e279..a5a04374 100644 --- a/client/map/tiles/path.tscn +++ b/client/map/tiles/path.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://bwyb2ujmcrsar"] +[gd_scene format=3 uid="uid://bwyb2ujmcrsar"] [ext_resource type="ArrayMesh" uid="uid://1jelocokc0vu" path="res://map/tiles/path.res" id="1_6fqu5"] -[node name="Path" type="Node3D"] +[node name="Path" type="Node3D" unique_id=1933680340] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1928567105] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.3, 0) mesh = ExtResource("1_6fqu5") -skeleton = NodePath("") diff --git a/client/map/tiles/player_portal.gd b/client/map/tiles/player_portal.gd index e722a7ee..a9bd7fa0 100644 --- a/client/map/tiles/player_portal.gd +++ b/client/map/tiles/player_portal.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,10 +14,16 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name PlayerPortal -extends Floor +extends Tile var model: PortalModel = load("res://map/tiles/portal.tscn").instantiate() -func _init(ctx: TileFactory.TileCC, type: bool): +func _init(ctx: TileFactory.TileCC): super(ctx) - model.configure(0.4, type) + change(ctx.tile_name.name) base.add_child(model) + +func change(tn: String) -> bool: + if tn == "white-hole": model.target_type = 1.; model.target_size = 0.4; return true + if tn == "grey-hole": model.target_type = 0.; model.target_size = 0.2; return true + if tn == "black-hole": model.target_type = -1.; model.target_size = 0.4; return true + return false diff --git a/client/map/tiles/portal.gd b/client/map/tiles/portal.gd index 961a8615..dc7d8700 100644 --- a/client/map/tiles/portal.gd +++ b/client/map/tiles/portal.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,7 +16,22 @@ class_name PortalModel extends Node3D +var target_type = 0. +var current_type = 0. +var target_size = 0. +var current_size = 0. +@onready var mat: ShaderMaterial = $Mesh.get_active_material(0) + +func _process(delta: float) -> void: + if not mat: return + if abs(target_type - current_type) > 0.01: + current_type = G.interpolate(current_type, target_type, delta * 15.) + mat.set_shader_parameter("type", current_type) + if abs(target_size - current_size) > 0.01: + current_size = G.interpolate(current_size, target_size, delta * 5.) + mat.set_shader_parameter("size", current_size) + func configure(size: float, type: bool): - var mat: ShaderMaterial = $Mesh.get_active_material(0) - mat.set_shader_parameter("size", size) - mat.set_shader_parameter("type", 1. if type else -1.) + mat = $Mesh.get_active_material(0) + target_type = 1. if type else -1. + target_size = size diff --git a/client/map/tiles/portal.gdshader b/client/map/tiles/portal.gdshader index a9dbd1e6..e3093b07 100644 --- a/client/map/tiles/portal.gdshader +++ b/client/map/tiles/portal.gdshader @@ -1,6 +1,6 @@ /* Hurry Curry! - a game about cooking - Copyright (C) 2025 Hurry Curry! Contributors + Copyright (C) 2026 Hurry Curry! Contributors 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 @@ -25,6 +25,7 @@ varying vec3 world_position; uniform float type : hint_range(-1.0, 1.0); uniform float size : hint_range(0.0, 2.0); +uniform vec3 glow : source_color; void vertex() { MODELVIEW_MATRIX = VIEW_MATRIX * mat4( @@ -37,25 +38,21 @@ void vertex() { world_camera = (inverse(MODELVIEW_MATRIX) * vec4(0, 0, 0, 1)).xyz; } +vec2 rv_to_screen(mat4 pm, vec3 rv) { + vec4 k = pm * vec4(rv*1000.0, 1.0); + k /= k.w; + return (k.xy + 1.) / 2.; +} + void fragment() { vec3 ray = world_camera / size; vec3 rv = normalize(world_position - world_camera); - vec3 em = vec3(0.); - bool hit = false; - - for (int i = 0; i < 100; i++) { - float st = length(ray) * 0.1; - ray += normalize(rv) * st; - if (length(ray) < 1.) { hit = true; break; } - rv += -normalize(ray) * -type / exp(dot(ray,ray)) * st; - em += st * smoothstep(1.5,1.2,length(ray)) * 0.2; - } - - vec4 k = PROJECTION_MATRIX * vec4(rv*1000.0, 1.0); - k /= k.w; - vec2 k2 = (k.xy + 1.) / 2.; - - vec3 col = hit ? vec3(type*0.5+0.5) : texture(screen_texture, k2).rgb; - col += vec3(0.3,0.0,1.0) * max(em - 0.1,0.); + + vec3 o = ray + length(ray)*rv; + float d = length(o) - 1.; + rv += o / (exp(d*2.)-1.) * type * 0.08; + vec2 screen = rv_to_screen(PROJECTION_MATRIX, rv); + vec3 col = d<0. ? vec3(type*0.5+0.5) : texture(screen_texture, screen).rgb; + col += glow * exp(d < 0. ? d*30. : d*-10.); ALBEDO = col; } diff --git a/client/map/tiles/portal.tscn b/client/map/tiles/portal.tscn index 372b97ea..07c39c76 100644 --- a/client/map/tiles/portal.tscn +++ b/client/map/tiles/portal.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=5 format=3 uid="uid://cc5ubao3ln3r6"] +[gd_scene format=3 uid="uid://cc5ubao3ln3r6"] [ext_resource type="Shader" uid="uid://emcvwj5fjmju" path="res://map/tiles/portal.gdshader" id="1_aiexk"] [ext_resource type="Script" uid="uid://cbr1qsqk5cyl2" path="res://map/tiles/portal.gd" id="1_h7xlp"] @@ -10,13 +10,14 @@ size = Vector2(3, 3) resource_local_to_scene = true render_priority = 0 shader = ExtResource("1_aiexk") -shader_parameter/type = 4.75e-08 -shader_parameter/size = 0.2 +shader_parameter/type = -1.0 +shader_parameter/size = 0.2000000095 +shader_parameter/glow = Color(0.6156863, 0.003921569, 1, 1) -[node name="Portal" type="Node3D"] +[node name="Portal" type="Node3D" unique_id=1362510877] script = ExtResource("1_h7xlp") -[node name="Mesh" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.7, 0) +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=726727519] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0022193193, 0.69999975, -0.0013526678) mesh = SubResource("QuadMesh_us4em") surface_material_override/0 = SubResource("ShaderMaterial_hvgsb") diff --git a/client/map/tiles/potato_crate.gd b/client/map/tiles/potato_crate.gd deleted file mode 100644 index d5fdd8e9..00000000 --- a/client/map/tiles/potato_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 PotatoCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/potato_crate.tscn").instantiate()) diff --git a/client/map/tiles/potato_crate.gd.uid b/client/map/tiles/potato_crate.gd.uid deleted file mode 100644 index cf021ee9..00000000 --- a/client/map/tiles/potato_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://tyivqc0wc6mi diff --git a/client/map/tiles/potato_crate.tscn b/client/map/tiles/potato_crate.tscn index 9ced8854..404e3fdc 100644 --- a/client/map/tiles/potato_crate.tscn +++ b/client/map/tiles/potato_crate.tscn @@ -1,38 +1,38 @@ -[gd_scene load_steps=3 format=3 uid="uid://c764nf6aojyvx"] +[gd_scene format=3 uid="uid://c764nf6aojyvx"] [ext_resource type="ArrayMesh" uid="uid://btn7oh1v2k40p" path="res://map/tiles/crate.res" id="1_3ga66"] [ext_resource type="ArrayMesh" uid="uid://hj2dib0t8em3" path="res://map/items/potato.res" id="2_3ga66"] -[node name="PotatoCrate" type="Node3D"] +[node name="PotatoCrate" type="Node3D" unique_id=958359962] -[node name="Crate" type="MeshInstance3D" parent="."] +[node name="Crate" type="MeshInstance3D" parent="." unique_id=1476692277] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_3ga66") -[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=737788022] transform = Transform3D(1.9395866e-08, 0.44372568, 0.074883275, 0.43525255, 0.019013587, -0.112666346, -0.11425943, 0.0724292, -0.42918384, -0.2245059, 0.2020701, -0.17833076) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D6" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D6" type="MeshInstance3D" parent="." unique_id=11436800] transform = Transform3D(1.9395866e-08, 0.44372568, 0.074883275, 0.43525255, 0.019013587, -0.112666346, -0.11425943, 0.0724292, -0.42918384, -0.0090149045, 0.35778415, -0.17833076) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D7" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D7" type="MeshInstance3D" parent="." unique_id=866909482] transform = Transform3D(0.07296345, 0.06498954, -0.43926376, 0.43169037, 0.09389621, 0.08559741, 0.10401813, -0.4352699, -0.04712081, 0.015495509, 0.3663897, 0.14554687) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D2" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D2" type="MeshInstance3D" parent="." unique_id=1979398488] transform = Transform3D(-0.12614171, -0.25575554, -0.3481054, 0.43195862, -0.07468642, -0.10165464, -1.5851693e-08, -0.3626445, 0.26643753, -0.18310761, 0.21690153, 0.19903006) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D3" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D3" type="MeshInstance3D" parent="." unique_id=934217696] transform = Transform3D(0.08798323, 0.09877133, 0.43012, 0.44131497, -0.019691661, -0.08575129, 1.8829489e-08, 0.43858457, -0.1007151, 0.19106877, 0.19821344, -0.2371732) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D5" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D5" type="MeshInstance3D" parent="." unique_id=455737052] transform = Transform3D(-0.061073676, -0.043150976, 0.4437432, 0.4453779, 0.0143979285, 0.062698804, -0.020209989, 0.4476948, 0.040753797, 0.1624504, 0.19821344, -0.01481241) mesh = ExtResource("2_3ga66") -[node name="MeshInstance3D4" type="MeshInstance3D" parent="."] +[node name="MeshInstance3D4" type="MeshInstance3D" parent="." unique_id=702936552] transform = Transform3D(-6.4949006e-09, -0.148586, 0.31689468, 0.35, -1.5298985e-08, 2.6817607e-17, 1.3851905e-08, 0.31689468, 0.148586, 0.23736578, 0.175, 0.22895074) mesh = ExtResource("2_3ga66") diff --git a/client/map/tiles/rice_crate.gd b/client/map/tiles/rice_crate.gd deleted file mode 100644 index 456a18f7..00000000 --- a/client/map/tiles/rice_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 RiceCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/rice_crate.tscn").instantiate()) diff --git a/client/map/tiles/rice_crate.gd.uid b/client/map/tiles/rice_crate.gd.uid deleted file mode 100644 index c1e454e7..00000000 --- a/client/map/tiles/rice_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b51bickm0rq1y diff --git a/client/map/tiles/rice_crate.tscn b/client/map/tiles/rice_crate.tscn index 72c6c540..f9b86963 100644 --- a/client/map/tiles/rice_crate.tscn +++ b/client/map/tiles/rice_crate.tscn @@ -1,9 +1,9 @@ -[gd_scene load_steps=3 format=3 uid="uid://bk0jvgj6xg23d"] +[gd_scene format=3 uid="uid://bk0jvgj6xg23d"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_wfea8"] [ext_resource type="PackedScene" uid="uid://rs4b17lp80cx" path="res://map/items/rice.tscn" id="2_fbw0j"] -[node name="RiceCrate" instance=ExtResource("1_wfea8")] +[node name="RiceCrate" unique_id=1561944393 instance=ExtResource("1_wfea8")] -[node name="Rice" parent="." index="1" instance=ExtResource("2_fbw0j")] +[node name="Rice" parent="." index="1" unique_id=38870235 instance=ExtResource("2_fbw0j")] transform = Transform3D(3, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0) diff --git a/client/map/tiles/rolling_board.gd b/client/map/tiles/rolling_board.gd index 078897b1..93db2989 100644 --- a/client/map/tiles/rolling_board.gd +++ b/client/map/tiles/rolling_board.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,44 +14,10 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name RollingBoard -extends CounterBase - -var board = load("res://map/tiles/rolling_board.tscn").instantiate() -var rolling: AudioStreamPlayer3D = AudioStreamPlayer3D.new() -var acting_player +extends ActiveInteractCounter func _init(ctx: TileFactory.TileCC): - super(ctx) - rolling.stream = preload("res://map/tiles/sounds/roll.ogg") - rolling.volume_db = -10 - add_child(rolling) - base.add_child(board) - -func progress(position_: float, speed: float, warn: bool, acting_player_): - super(position_, speed, warn, acting_player) - var pin: Node3D = board.get_node("RollingPin") - acting_player = acting_player_ - - if not rolling.playing and speed != 0.: - rolling.play() - if acting_player != null: - pin.visible = false - var acting_character: Character = acting_player.character - acting_character.rolling = true - elif speed == 0: - rolling.stop() - pin.visible = true - if acting_player != null: - var acting_character: Character = acting_player.character - acting_character.rolling = false - -func finish(): - super() - if is_instance_valid(acting_player): - var acting_character: Character = acting_player.character - acting_character.rolling = false - board.get_node("RollingPin").visible = true - rolling.stop() + super(ctx, preload("res://map/tiles/rolling_board.tscn"), "RollingBoard/RollingPin", func (p: Player, x: bool): p.character.rolling = x, preload("res://map/tiles/sounds/roll.ogg")) -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., 0.575, 0.) diff --git a/client/map/tiles/rolling_board.tscn b/client/map/tiles/rolling_board.tscn index ecf1c036..3e366ad3 100644 --- a/client/map/tiles/rolling_board.tscn +++ b/client/map/tiles/rolling_board.tscn @@ -1,14 +1,13 @@ -[gd_scene load_steps=3 format=3 uid="uid://c15xsbx0bduqt"] +[gd_scene format=3 uid="uid://c15xsbx0bduqt"] [ext_resource type="ArrayMesh" uid="uid://dd4g04lgvsly5" path="res://map/tiles/cutting_board.res" id="1_cuxby"] [ext_resource type="PackedScene" uid="uid://c8t04dfp45a86" path="res://map/tiles/rolling_pin.tscn" id="2_cuxby"] -[node name="CuttingBoard" type="Node3D"] +[node name="RollingBoard" type="Node3D" unique_id=145149049] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1864479003] transform = Transform3D(0.4, 0, 0, 0, 0.5, 0, 0, 0, 0.5, -0.075, 0.5, 0) mesh = ExtResource("1_cuxby") -skeleton = NodePath("") -[node name="RollingPin" parent="." instance=ExtResource("2_cuxby")] +[node name="RollingPin" parent="." unique_id=397072105 instance=ExtResource("2_cuxby")] transform = Transform3D(0.0979824, 0, -0.9951882, 0, 1, 0, 0.9951882, 0, 0.0979824, 0.3562666, 0.575, 0) diff --git a/client/map/tiles/rolling_pin.res b/client/map/tiles/rolling_pin.res Binary files differindex 29a31bc7..c5be7946 100644 --- a/client/map/tiles/rolling_pin.res +++ b/client/map/tiles/rolling_pin.res diff --git a/client/map/tiles/rolling_pin.tscn b/client/map/tiles/rolling_pin.tscn index b25419cd..c2cbc343 100644 --- a/client/map/tiles/rolling_pin.tscn +++ b/client/map/tiles/rolling_pin.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://c8t04dfp45a86"] +[gd_scene format=3 uid="uid://c8t04dfp45a86"] [ext_resource type="ArrayMesh" uid="uid://bijk6tpibbek3" path="res://map/tiles/rolling_pin.res" id="1_s0lm5"] -[node name="RollingPin" type="Node3D"] +[node name="RollingPin" type="Node3D" unique_id=1931827681] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1368520525] transform = Transform3D(1.75, 0, 0, 0, 1.75, 0, 0, 0, 1.75, 0, 0, 0) mesh = ExtResource("1_s0lm5") -skeleton = NodePath("") diff --git a/client/map/tiles/screen/screen.gd b/client/map/tiles/screen/screen.gd new file mode 100644 index 00000000..41667830 --- /dev/null +++ b/client/map/tiles/screen/screen.gd @@ -0,0 +1,24 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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 Screen +extends Tile + +func _init(ctx: TileFactory.TileCC): + super(ctx) + var screen_model: ScreenModel = load("res://map/tiles/screen/screen.tscn").instantiate() + base.add_child(screen_model) + screen_model.set_server_context(ctx.server_context) +
\ No newline at end of file diff --git a/client/map/tiles/screen/screen.gd.uid b/client/map/tiles/screen/screen.gd.uid new file mode 100644 index 00000000..c55416cb --- /dev/null +++ b/client/map/tiles/screen/screen.gd.uid @@ -0,0 +1 @@ +uid://dodq5s5bpfr3c diff --git a/client/map/tiles/screen/screen.res.depren b/client/map/tiles/screen/screen.res.depren Binary files differnew file mode 100644 index 00000000..365a3c86 --- /dev/null +++ b/client/map/tiles/screen/screen.res.depren diff --git a/client/map/tiles/screen/screen.tscn b/client/map/tiles/screen/screen.tscn new file mode 100644 index 00000000..a1f88294 --- /dev/null +++ b/client/map/tiles/screen/screen.tscn @@ -0,0 +1,36 @@ +[gd_scene format=3 uid="uid://vqe0wrt0ddq"] + +[ext_resource type="ArrayMesh" uid="uid://g6nwwhptmmmd" path="res://map/tiles/screen/screen_display.res" id="1_d1utq"] +[ext_resource type="Script" uid="uid://cye7akcsp46cv" path="res://map/tiles/screen/screen_model.gd" id="1_fabw7"] +[ext_resource type="ArrayMesh" uid="uid://nsmq1ko2woad" path="res://map/tiles/screen/screen_base.res" id="1_mm46a"] +[ext_resource type="PackedScene" uid="uid://d22cslgao5jd4" path="res://map/tiles/floor.tscn" id="3_dmy1m"] +[ext_resource type="PackedScene" uid="uid://dgtdfctc0x78v" path="res://gui/menus/screen_info.tscn" id="4_ebgc8"] + +[node name="Screen" type="Node3D" unique_id=1614533170] +script = ExtResource("1_fabw7") + +[node name="Base" type="MeshInstance3D" parent="." unique_id=597805735] +transform = Transform3D(2, 0, 0, 0, 0, -2, 0, 2, 0, 0, 0, 0) +mesh = ExtResource("1_mm46a") + +[node name="Display" type="MeshInstance3D" parent="." unique_id=1268321578] +transform = Transform3D(3, 0, 0, 0, 0, -3, 0, 3, 0, -0.004130006, 2.244278, 0.3346749) +mesh = ExtResource("1_d1utq") + +[node name="ScreenViewport" type="SubViewport" parent="Display" unique_id=1731785275] +disable_3d = true +size = Vector2i(834, 480) + +[node name="ScreenInfo" parent="Display/ScreenViewport" unique_id=907327052 instance=ExtResource("4_ebgc8")] +script = null + +[node name="Floor" parent="." unique_id=527188940 instance=ExtResource("3_dmy1m")] +transform = Transform3D(12.117, 0, 0, 0, 12.117, 0, 0, 0, 12.117, 0, 0, 0) +visible = false + +[node name="OmniLight3D" type="SpotLight3D" parent="." unique_id=1339528342] +transform = Transform3D(1, 0, 0, 0, -0.9653816, 0.26084167, 0, -0.26084167, -0.9653816, 0, 2.1330748, 0.46361876) +light_color = Color(0.3137255, 0.32941177, 0.76862746, 1) +light_energy = 7.0 +spot_range = 3.25 +spot_angle = 75.0 diff --git a/client/map/tiles/screen/screen_base.res b/client/map/tiles/screen/screen_base.res Binary files differnew file mode 100644 index 00000000..885becfe --- /dev/null +++ b/client/map/tiles/screen/screen_base.res diff --git a/client/map/tiles/screen/screen_display.res b/client/map/tiles/screen/screen_display.res Binary files differnew file mode 100644 index 00000000..f7e8ee59 --- /dev/null +++ b/client/map/tiles/screen/screen_display.res diff --git a/client/map/tiles/screen/screen_model.gd b/client/map/tiles/screen/screen_model.gd new file mode 100644 index 00000000..9f63fc3f --- /dev/null +++ b/client/map/tiles/screen/screen_model.gd @@ -0,0 +1,25 @@ +# Hurry Curry! - a game about cooking +# Copyright (C) 2026 Hurry Curry! Contributors +# +# 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/>. +# +extends Node3D +class_name ScreenModel + +func set_server_context(server_context: Game.ServerContext) -> void: + if server_context.motd == null: + $Display/ScreenViewport/ScreenInfo/MarginContainer/VBoxContainer/RichTextLabel.text = "[font_size=48][b]%s[/b]" % server_context.name + else: + $Display/ScreenViewport/ScreenInfo/MarginContainer/VBoxContainer/RichTextLabel.text = """[font_size=48][b]%s[/b] + +%s[/font_size]""" % [server_context.name, server_context.motd] diff --git a/client/map/tiles/screen/screen_model.gd.uid b/client/map/tiles/screen/screen_model.gd.uid new file mode 100644 index 00000000..6a2a81b0 --- /dev/null +++ b/client/map/tiles/screen/screen_model.gd.uid @@ -0,0 +1 @@ +uid://cye7akcsp46cv diff --git a/client/map/tiles/sink.gd b/client/map/tiles/sink.gd index 055cc353..4f9fffdf 100644 --- a/client/map/tiles/sink.gd +++ b/client/map/tiles/sink.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Sink -extends Counter +extends CounterLike var particles: SinkParticles = preload("res://map/tiles/sink_particles.tscn").instantiate() var running: AudioStreamPlayer3D = AudioStreamPlayer3D.new() diff --git a/client/map/tiles/sink.res b/client/map/tiles/sink.res Binary files differindex dc8b2f8d..6ac27f7d 100644 --- a/client/map/tiles/sink.res +++ b/client/map/tiles/sink.res diff --git a/client/map/tiles/sink.tscn b/client/map/tiles/sink.tscn index 887a6a86..d2c85160 100644 --- a/client/map/tiles/sink.tscn +++ b/client/map/tiles/sink.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://pxa0p42ojyg1"] +[gd_scene format=3 uid="uid://pxa0p42ojyg1"] [ext_resource type="ArrayMesh" uid="uid://bibdbxyp15njt" path="res://map/tiles/sink.res" id="1_w6v3o"] -[node name="Sink" type="Node3D"] +[node name="Sink" type="Node3D" unique_id=1560247840] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1377464037] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_w6v3o") -skeleton = NodePath("") diff --git a/client/map/tiles/sink_backsplash.res b/client/map/tiles/sink_backsplash.res Binary files differindex a1bec8c2..5a7577a1 100644 --- a/client/map/tiles/sink_backsplash.res +++ b/client/map/tiles/sink_backsplash.res diff --git a/client/map/tiles/sink_backsplash.tscn b/client/map/tiles/sink_backsplash.tscn index 8154023c..632603a3 100644 --- a/client/map/tiles/sink_backsplash.tscn +++ b/client/map/tiles/sink_backsplash.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://ctwkcro4c528y"] +[gd_scene format=3 uid="uid://ctwkcro4c528y"] [ext_resource type="ArrayMesh" uid="uid://rlvhl2hknvf6" path="res://map/tiles/sink_backsplash.res" id="1_bwi78"] -[node name="Sink" type="Node3D"] +[node name="Sink" type="Node3D" unique_id=921333855] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1099590544] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_bwi78") -skeleton = NodePath("") diff --git a/client/map/tiles/sink_particles.gd b/client/map/tiles/sink_particles.gd index 415b1d64..6674c21d 100644 --- a/client/map/tiles/sink_particles.gd +++ b/client/map/tiles/sink_particles.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/sink_particles.tscn b/client/map/tiles/sink_particles.tscn index 6d655c45..2543d59c 100644 --- a/client/map/tiles/sink_particles.tscn +++ b/client/map/tiles/sink_particles.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=8 format=3 uid="uid://ckxtlgx7hg368"] +[gd_scene format=3 uid="uid://ckxtlgx7hg368"] [ext_resource type="Script" uid="uid://bmk30s2yv3j05" path="res://map/tiles/sink_particles.gd" id="1_vh7ox"] @@ -26,10 +26,10 @@ height = 0.1 _data = [Vector2(0.264045, 0), 0.0, 0.0, 0, 0, Vector2(0.460674, 1), 0.0, 0.0, 0, 0, Vector2(0.949438, 1), 0.0, 0.0, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0] point_count = 4 -[node name="SinkParticles" type="Node3D"] +[node name="SinkParticles" type="Node3D" unique_id=974890413] script = ExtResource("1_vh7ox") -[node name="Stream" type="CPUParticles3D" parent="."] +[node name="Stream" type="CPUParticles3D" parent="." unique_id=685739412] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.75, -0.05) emitting = false amount = 10 @@ -41,7 +41,7 @@ initial_velocity_min = 0.1 initial_velocity_max = 0.3 color_ramp = SubResource("Gradient_p7a7b") -[node name="Bubbles" type="CPUParticles3D" parent="."] +[node name="Bubbles" type="CPUParticles3D" parent="." unique_id=2070218564] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 0) emitting = false amount = 30 diff --git a/client/map/tiles/steak_crate.gd b/client/map/tiles/steak_crate.gd deleted file mode 100644 index df3d8154..00000000 --- a/client/map/tiles/steak_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 SteakCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/steak_crate.tscn").instantiate()) diff --git a/client/map/tiles/steak_crate.gd.uid b/client/map/tiles/steak_crate.gd.uid deleted file mode 100644 index 40de1785..00000000 --- a/client/map/tiles/steak_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://cgjeokxei2o1d diff --git a/client/map/tiles/steak_crate.res b/client/map/tiles/steak_crate.res Binary files differindex afb91ff5..0fe078bf 100644 --- a/client/map/tiles/steak_crate.res +++ b/client/map/tiles/steak_crate.res diff --git a/client/map/tiles/steak_crate.tscn b/client/map/tiles/steak_crate.tscn index 985dcfdd..48bc48dc 100644 --- a/client/map/tiles/steak_crate.tscn +++ b/client/map/tiles/steak_crate.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://cyi73ubyehy37"] +[gd_scene format=3 uid="uid://cyi73ubyehy37"] [ext_resource type="ArrayMesh" uid="uid://bdsqnesyjl3kv" path="res://map/tiles/steak_crate.res" id="1_ewp50"] -[node name="SteakCrate" type="Node3D"] +[node name="SteakCrate" type="Node3D" unique_id=766152255] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=432520379] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_ewp50") -skeleton = NodePath("") diff --git a/client/map/tiles/stove.gd b/client/map/tiles/stove.gd index d305da8c..13ae2c7e 100644 --- a/client/map/tiles/stove.gd +++ b/client/map/tiles/stove.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,11 +14,11 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Stove -extends Counter +extends CounterLike func _init(ctx: TileFactory.TileCC): super(ctx) base.add_child(load("res://map/tiles/stove.tscn").instantiate()) -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., 0.625, 0.) diff --git a/client/map/tiles/stove.res b/client/map/tiles/stove.res Binary files differindex 5008a897..4b4de9aa 100644 --- a/client/map/tiles/stove.res +++ b/client/map/tiles/stove.res diff --git a/client/map/tiles/stove.tscn b/client/map/tiles/stove.tscn index c47b9a55..85c1c477 100644 --- a/client/map/tiles/stove.tscn +++ b/client/map/tiles/stove.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://gns51upjpuaf"] +[gd_scene format=3 uid="uid://gns51upjpuaf"] [ext_resource type="ArrayMesh" uid="uid://b343sdfdwvqne" path="res://map/tiles/stove.res" id="1_dpdf3"] -[node name="Stove" type="Node3D"] +[node name="Stove" type="Node3D" unique_id=1168423898] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1617771593] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_dpdf3") -skeleton = NodePath("") diff --git a/client/map/tiles/strawberry_crate.gd b/client/map/tiles/strawberry_crate.gd deleted file mode 100644 index cf941df2..00000000 --- a/client/map/tiles/strawberry_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 StrawberryCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/strawberry_crate.tscn").instantiate()) diff --git a/client/map/tiles/strawberry_crate.gd.uid b/client/map/tiles/strawberry_crate.gd.uid deleted file mode 100644 index 70f4ef4e..00000000 --- a/client/map/tiles/strawberry_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bc8jd34nankae diff --git a/client/map/tiles/strawberry_crate.tscn b/client/map/tiles/strawberry_crate.tscn index 070323b6..0e85a59d 100644 --- a/client/map/tiles/strawberry_crate.tscn +++ b/client/map/tiles/strawberry_crate.tscn @@ -1,21 +1,21 @@ -[gd_scene load_steps=3 format=3 uid="uid://disox718eydry"] +[gd_scene format=3 uid="uid://disox718eydry"] [ext_resource type="PackedScene" uid="uid://xdui0oya4lpb" path="res://map/tiles/crate.tscn" id="1_j8iml"] [ext_resource type="PackedScene" uid="uid://df1xktleeqg3m" path="res://map/items/strawberry.tscn" id="3_pv4co"] -[node name="StrawberryCrate" instance=ExtResource("1_j8iml")] +[node name="StrawberryCrate" unique_id=824564931 instance=ExtResource("1_j8iml")] -[node name="Strawberry" parent="." index="1" instance=ExtResource("3_pv4co")] +[node name="Strawberry" parent="." index="1" unique_id=1554090960 instance=ExtResource("3_pv4co")] transform = Transform3D(0.450462, -0.749695, 0.48481, 0.857167, 0.515038, 0, -0.249695, 0.415563, 0.87462, 0.280431, 0.2, -0.249977) -[node name="Strawberry2" parent="." index="2" instance=ExtResource("3_pv4co")] +[node name="Strawberry2" parent="." index="2" unique_id=605451216 instance=ExtResource("3_pv4co")] transform = Transform3D(0.514594, -0.856429, -0.0415094, 0.857167, 0.515038, 0, 0.0213789, -0.0355805, 0.999138, 0.304305, 0.2, 0.224393) -[node name="Strawberry3" parent="." index="3" instance=ExtResource("3_pv4co")] +[node name="Strawberry3" parent="." index="3" unique_id=1846780345 instance=ExtResource("3_pv4co")] transform = Transform3D(0.333174, -0.941988, -0.0406744, 0.942623, 0.333757, -0.00828417, 0.0213789, -0.0355805, 0.999138, 0.0704219, 0.2, 0.0109546) -[node name="Strawberry4" parent="." index="4" instance=ExtResource("3_pv4co")] +[node name="Strawberry4" parent="." index="4" unique_id=711548062 instance=ExtResource("3_pv4co")] transform = Transform3D(-0.06674, -0.173859, -0.982506, 0.976472, -0.213751, -0.0285059, -0.205055, -0.961293, 0.184035, -0.181014, 0.232884, -0.103933) -[node name="Strawberry5" parent="." index="5" instance=ExtResource("3_pv4co")] +[node name="Strawberry5" parent="." index="5" unique_id=50238983 instance=ExtResource("3_pv4co")] transform = Transform3D(-0.0250969, -0.243938, 0.969466, 0.976472, -0.213751, -0.0285059, 0.214178, 0.945941, 0.243563, -0.181014, 0.232884, 0.0976371) diff --git a/client/map/tiles/street.gd b/client/map/tiles/street.gd index 38fb61f4..1ed21111 100644 --- a/client/map/tiles/street.gd +++ b/client/map/tiles/street.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/street.res b/client/map/tiles/street.res Binary files differindex 13da376b..5edd49a2 100644 --- a/client/map/tiles/street.res +++ b/client/map/tiles/street.res diff --git a/client/map/tiles/street.tscn b/client/map/tiles/street.tscn index 4200c4ab..435f93ff 100644 --- a/client/map/tiles/street.tscn +++ b/client/map/tiles/street.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dhdu8gbrhj6wy"] +[gd_scene format=3 uid="uid://dhdu8gbrhj6wy"] [ext_resource type="ArrayMesh" uid="uid://bamfsa38y0o20" path="res://map/tiles/street.res" id="1_h0wov"] -[node name="Street" type="Node3D"] +[node name="Street" type="Node3D" unique_id=846434626] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=308299248] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, -0.3, 0) mesh = ExtResource("1_h0wov") -skeleton = NodePath("") diff --git a/client/map/tiles/table.gd b/client/map/tiles/table.gd index 43e3dbea..4fe10323 100644 --- a/client/map/tiles/table.gd +++ b/client/map/tiles/table.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,11 +14,11 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Table -extends Floor +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) base.add_child(load("res://map/tiles/table.tscn").instantiate()) -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0., .5, 0.) diff --git a/client/map/tiles/table.res b/client/map/tiles/table.res Binary files differindex 0e4f0fa9..ed98d026 100644 --- a/client/map/tiles/table.res +++ b/client/map/tiles/table.res diff --git a/client/map/tiles/table.tscn b/client/map/tiles/table.tscn index 96efc7eb..a0d9155d 100644 --- a/client/map/tiles/table.tscn +++ b/client/map/tiles/table.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://ctuxsfv7rcqb4"] +[gd_scene format=3 uid="uid://ctuxsfv7rcqb4"] [ext_resource type="ArrayMesh" uid="uid://caf1m4egynwvn" path="res://map/tiles/table.res" id="1_ycvmt"] -[node name="Table" type="Node3D"] +[node name="Table" type="Node3D" unique_id=1328090581] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1607758610] mesh = ExtResource("1_ycvmt") -skeleton = NodePath("") diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd index 9d4d732e..df7aa38d 100644 --- a/client/map/tiles/tile.gd +++ b/client/map/tiles/tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -32,32 +32,42 @@ func _init(ctx: TileFactory.TileCC): base.name = "Base" base.position += Vector3(0.5, 0, 0.5) add_child(base) - self.name = str(ctx.position) + self.name = ctx.tile_name.raw_name var item_base_ = Node3D.new() # this method is supposed to be overriden @warning_ignore("static_called_on_instance") - item_base_.position = interact_target() + + var item_base_pos = interact_target() + if item_base_pos == null: + if ctx.below_tile_instances.is_empty(): + item_base_pos = Vector3.ZERO + else: + item_base_pos = ctx.below_tile_instances[-1].item_base.position + item_base_.position = item_base_pos item_base_.name = "ItemBase" base.add_child(item_base_) item_base = item_base_ + base_mesh = get_base_mesh() if base_mesh != null: var m: Node3D = base_mesh m.position += Vector3(0.5, 0, 0.5) add_child(m) + if not ctx.below_tile_instances.is_empty(): + base.rotation.y = ctx.below_tile_instances[-1].base.rotation.y func turn_facing(facing: Facing): base.rotation.y = facing * 0.5 * PI + PI # defines where items go when interacting -static func interact_target() -> Vector3: - return Vector3(0, 0, 0) +static func interact_target(): #-> Vector3? + return null # actions when interacting, e.g. animations func interact(): pass -func progress(position_: float, speed: float, warn: bool, _acting_player): +func progress(position_: float, speed: float, warn: bool, _acting_players: Array[Player]): if item != null: item.progress(position_, speed, warn) @@ -94,3 +104,9 @@ func take_item() -> Item: func get_base_mesh(): return null + +# Called when about to be changed to different tile +# returning false deletes the tile and replaces it normally +# returning true means this function applies the change +func change(_name: String) -> bool: + return false diff --git a/client/map/tiles/tomato_crate.gd b/client/map/tiles/tomato_crate.gd deleted file mode 100644 index 29b8e3a5..00000000 --- a/client/map/tiles/tomato_crate.gd +++ /dev/null @@ -1,21 +0,0 @@ -# Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors -# -# 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 TomatoCrate -extends Crate - -func _init(ctx: TileFactory.TileCC): - super(ctx) - base.add_child(load("res://map/tiles/tomato_crate.tscn").instantiate()) diff --git a/client/map/tiles/tomato_crate.gd.uid b/client/map/tiles/tomato_crate.gd.uid deleted file mode 100644 index fcdce7a8..00000000 --- a/client/map/tiles/tomato_crate.gd.uid +++ /dev/null @@ -1 +0,0 @@ -uid://chvydto06s4qk diff --git a/client/map/tiles/tomato_crate.res b/client/map/tiles/tomato_crate.res Binary files differindex 4490208b..e5add892 100644 --- a/client/map/tiles/tomato_crate.res +++ b/client/map/tiles/tomato_crate.res diff --git a/client/map/tiles/tomato_crate.tscn b/client/map/tiles/tomato_crate.tscn index 999a9017..2730983c 100644 --- a/client/map/tiles/tomato_crate.tscn +++ b/client/map/tiles/tomato_crate.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://div5vbcn10yv8"] +[gd_scene format=3 uid="uid://div5vbcn10yv8"] [ext_resource type="ArrayMesh" uid="uid://ycxehic1fe7x" path="res://map/tiles/tomato_crate.res" id="1_2nsw8"] -[node name="TomatoCrate" type="Node3D"] +[node name="TomatoCrate" type="Node3D" unique_id=210851246] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1201079374] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_2nsw8") -skeleton = NodePath("") diff --git a/client/map/tiles/trash.gd b/client/map/tiles/trash.gd index 14ef9ad2..68e7f7d1 100644 --- a/client/map/tiles/trash.gd +++ b/client/map/tiles/trash.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name Trash -extends Crate +extends CounterLike func _init(ctx: TileFactory.TileCC): super(ctx) diff --git a/client/map/tiles/trash.res b/client/map/tiles/trash.res Binary files differindex 925af56e..131a8f74 100644 --- a/client/map/tiles/trash.res +++ b/client/map/tiles/trash.res diff --git a/client/map/tiles/trash.tscn b/client/map/tiles/trash.tscn index f1458277..f07e53dc 100644 --- a/client/map/tiles/trash.tscn +++ b/client/map/tiles/trash.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://dab8capc4hhks"] +[gd_scene format=3 uid="uid://dab8capc4hhks"] [ext_resource type="ArrayMesh" uid="uid://b5jcsnrkaqnsu" path="res://map/tiles/trash.res" id="1_w302o"] -[node name="Crate" type="Node3D"] +[node name="Crate" type="Node3D" unique_id=1478036191] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=710606675] mesh = ExtResource("1_w302o") -skeleton = NodePath("") diff --git a/client/map/tiles/tree/bark.tres b/client/map/tiles/tree/bark.tres index 3a6e8a04..01d9dd89 100644 --- a/client/map/tiles/tree/bark.tres +++ b/client/map/tiles/tree/bark.tres @@ -1,4 +1,4 @@ -[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://beyncaufbtoay"] +[gd_resource type="StandardMaterial3D" format=3 uid="uid://beyncaufbtoay"] [ext_resource type="Texture2D" uid="uid://bgh74bmrp46qc" path="res://map/tiles/tree/bark.webp" id="1_3mn2u"] [ext_resource type="Texture2D" uid="uid://bmvab6kdyccm4" path="res://map/tiles/tree/bark_normal.webp" id="2_v3ray"] diff --git a/client/map/tiles/tree/leaves.tres b/client/map/tiles/tree/leaves.tres index ad1b14e9..4347214f 100644 --- a/client/map/tiles/tree/leaves.tres +++ b/client/map/tiles/tree/leaves.tres @@ -1,10 +1,12 @@ -[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://bwkrkt2cb0wa"] +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bwkrkt2cb0wa"] [ext_resource type="Texture2D" uid="uid://bxxh66na6bumt" path="res://map/tiles/tree/leaves.webp" id="1_jg4r8"] [resource] resource_name = "NormalTree_Leaves" -transparency = 4 +transparency = 2 +alpha_scissor_threshold = 0.5 +alpha_antialiasing_mode = 0 albedo_texture = ExtResource("1_jg4r8") metallic_specular = 0.0 distance_fade_min_distance = 2.0 diff --git a/client/map/tiles/tree/leaves_1_hq.res b/client/map/tiles/tree/leaves_1_hq.res Binary files differindex 776aab86..e73c0414 100644 --- a/client/map/tiles/tree/leaves_1_hq.res +++ b/client/map/tiles/tree/leaves_1_hq.res diff --git a/client/map/tiles/tree/leaves_1_lq.res b/client/map/tiles/tree/leaves_1_lq.res Binary files differindex b701536a..29ff9170 100644 --- a/client/map/tiles/tree/leaves_1_lq.res +++ b/client/map/tiles/tree/leaves_1_lq.res diff --git a/client/map/tiles/tree/leaves_2_hq.res b/client/map/tiles/tree/leaves_2_hq.res Binary files differindex ce83d2f1..dd544faf 100644 --- a/client/map/tiles/tree/leaves_2_hq.res +++ b/client/map/tiles/tree/leaves_2_hq.res diff --git a/client/map/tiles/tree/leaves_2_lq.res b/client/map/tiles/tree/leaves_2_lq.res Binary files differindex 5064b2bb..f01221d4 100644 --- a/client/map/tiles/tree/leaves_2_lq.res +++ b/client/map/tiles/tree/leaves_2_lq.res diff --git a/client/map/tiles/tree/leaves_3_hq.res b/client/map/tiles/tree/leaves_3_hq.res Binary files differindex fef80645..528d5a0d 100644 --- a/client/map/tiles/tree/leaves_3_hq.res +++ b/client/map/tiles/tree/leaves_3_hq.res diff --git a/client/map/tiles/tree/leaves_3_lq.res b/client/map/tiles/tree/leaves_3_lq.res Binary files differindex 108f9120..0888c744 100644 --- a/client/map/tiles/tree/leaves_3_lq.res +++ b/client/map/tiles/tree/leaves_3_lq.res diff --git a/client/map/tiles/tree/leaves_4_hq.res b/client/map/tiles/tree/leaves_4_hq.res Binary files differindex e0657993..9c9cbec4 100644 --- a/client/map/tiles/tree/leaves_4_hq.res +++ b/client/map/tiles/tree/leaves_4_hq.res diff --git a/client/map/tiles/tree/leaves_4_lq.res b/client/map/tiles/tree/leaves_4_lq.res Binary files differindex 156b18e2..6b0d9b45 100644 --- a/client/map/tiles/tree/leaves_4_lq.res +++ b/client/map/tiles/tree/leaves_4_lq.res diff --git a/client/map/tiles/tree/leaves_5_hq.res b/client/map/tiles/tree/leaves_5_hq.res Binary files differindex 63839358..11005d72 100644 --- a/client/map/tiles/tree/leaves_5_hq.res +++ b/client/map/tiles/tree/leaves_5_hq.res diff --git a/client/map/tiles/tree/leaves_5_lq.res b/client/map/tiles/tree/leaves_5_lq.res Binary files differindex 4ed6ae0e..d265681b 100644 --- a/client/map/tiles/tree/leaves_5_lq.res +++ b/client/map/tiles/tree/leaves_5_lq.res diff --git a/client/map/tiles/tree/leaves_lq.res b/client/map/tiles/tree/leaves_lq.res Binary files differindex 3b5b5549..ae8e6713 100644 --- a/client/map/tiles/tree/leaves_lq.res +++ b/client/map/tiles/tree/leaves_lq.res diff --git a/client/map/tiles/tree/trunk_1.res b/client/map/tiles/tree/trunk_1.res Binary files differindex abdbc3ab..2cade494 100644 --- a/client/map/tiles/tree/trunk_1.res +++ b/client/map/tiles/tree/trunk_1.res diff --git a/client/map/tiles/tree/trunk_2.res b/client/map/tiles/tree/trunk_2.res Binary files differindex 2a66054f..058b8bd5 100644 --- a/client/map/tiles/tree/trunk_2.res +++ b/client/map/tiles/tree/trunk_2.res diff --git a/client/map/tiles/tree/trunk_3.res b/client/map/tiles/tree/trunk_3.res Binary files differindex 02cb6023..aa61effd 100644 --- a/client/map/tiles/tree/trunk_3.res +++ b/client/map/tiles/tree/trunk_3.res diff --git a/client/map/tiles/tree/trunk_4.res b/client/map/tiles/tree/trunk_4.res Binary files differindex 87c47b25..a015328d 100644 --- a/client/map/tiles/tree/trunk_4.res +++ b/client/map/tiles/tree/trunk_4.res diff --git a/client/map/tiles/tree/trunk_5.res b/client/map/tiles/tree/trunk_5.res Binary files differindex 82722415..cf5a5111 100644 --- a/client/map/tiles/tree/trunk_5.res +++ b/client/map/tiles/tree/trunk_5.res diff --git a/client/map/tiles/ceiling_lamp.gd b/client/map/tiles/unknown_tile.gd index 3b504ed7..aa6eee79 100644 --- a/client/map/tiles/ceiling_lamp.gd +++ b/client/map/tiles/unknown_tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -13,9 +13,13 @@ # 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 CeilingLamp -extends Floor +class_name UnknownTile +extends Tile func _init(ctx: TileFactory.TileCC): super(ctx) - base.add_child(load("res://map/tiles/ceiling_lamp.tscn").instantiate()) + var label = Label3D.new() + label.text = ctx.tile_name.name + label.position.y = 0.5 + label.billboard = BaseMaterial3D.BILLBOARD_ENABLED + item_base.add_child(label) diff --git a/client/map/tiles/unknown_tile.gd.uid b/client/map/tiles/unknown_tile.gd.uid new file mode 100644 index 00000000..3c331921 --- /dev/null +++ b/client/map/tiles/unknown_tile.gd.uid @@ -0,0 +1 @@ +uid://l154vna0x8de diff --git a/client/map/tiles/wall.gd b/client/map/tiles/wall.gd index 25289635..1c14de11 100644 --- a/client/map/tiles/wall.gd +++ b/client/map/tiles/wall.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 diff --git a/client/map/tiles/wall_corner.res b/client/map/tiles/wall_corner.res Binary files differindex f232815a..5a76913d 100644 --- a/client/map/tiles/wall_corner.res +++ b/client/map/tiles/wall_corner.res diff --git a/client/map/tiles/wall_corner.tscn b/client/map/tiles/wall_corner.tscn index a158a119..c79b718e 100644 --- a/client/map/tiles/wall_corner.tscn +++ b/client/map/tiles/wall_corner.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://ooke2w0txqvo"] +[gd_scene format=3 uid="uid://ooke2w0txqvo"] [ext_resource type="ArrayMesh" uid="uid://bjhbhom37qena" path="res://map/tiles/wall_corner.res" id="1_8v0wt"] -[node name="Wall" type="Node3D"] +[node name="Wall" type="Node3D" unique_id=170493502] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=1971348054] transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_8v0wt") -skeleton = NodePath("") diff --git a/client/map/tiles/wall_cross.res b/client/map/tiles/wall_cross.res Binary files differindex d23f908d..4a2ce34e 100644 --- a/client/map/tiles/wall_cross.res +++ b/client/map/tiles/wall_cross.res diff --git a/client/map/tiles/wall_cross.tscn b/client/map/tiles/wall_cross.tscn index 15a8b24a..b10838b2 100644 --- a/client/map/tiles/wall_cross.tscn +++ b/client/map/tiles/wall_cross.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://37s417kannw"] +[gd_scene format=3 uid="uid://37s417kannw"] [ext_resource type="ArrayMesh" uid="uid://csy08a5uaejvm" path="res://map/tiles/wall_cross.res" id="1_cq25f"] -[node name="WallCross" type="Node3D"] +[node name="WallCross" type="Node3D" unique_id=480226603] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=635719470] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = ExtResource("1_cq25f") -skeleton = NodePath("") diff --git a/client/map/tiles/wall_straight.res b/client/map/tiles/wall_straight.res Binary files differindex 61e00eea..587f0e63 100644 --- a/client/map/tiles/wall_straight.res +++ b/client/map/tiles/wall_straight.res diff --git a/client/map/tiles/wall_straight.tscn b/client/map/tiles/wall_straight.tscn index 0de536b8..0c9ca066 100644 --- a/client/map/tiles/wall_straight.tscn +++ b/client/map/tiles/wall_straight.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://tx8anusdso4j"] +[gd_scene format=3 uid="uid://tx8anusdso4j"] [ext_resource type="ArrayMesh" uid="uid://sxg6np20cvs2" path="res://map/tiles/wall_straight.res" id="1_stsuc"] -[node name="Wall" type="Node3D"] +[node name="Wall" type="Node3D" unique_id=1493672826] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=2012998439] transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_stsuc") -skeleton = NodePath("") diff --git a/client/map/tiles/wall_t.res b/client/map/tiles/wall_t.res Binary files differindex 5de79639..84776fb8 100644 --- a/client/map/tiles/wall_t.res +++ b/client/map/tiles/wall_t.res diff --git a/client/map/tiles/wall_t.tscn b/client/map/tiles/wall_t.tscn index 9d390517..b8fd430c 100644 --- a/client/map/tiles/wall_t.tscn +++ b/client/map/tiles/wall_t.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://canjwc3qoprsp"] +[gd_scene format=3 uid="uid://canjwc3qoprsp"] [ext_resource type="ArrayMesh" uid="uid://bysasgavbv1mj" path="res://map/tiles/wall_t.res" id="1_sb5lc"] -[node name="Wall" type="Node3D"] +[node name="Wall" type="Node3D" unique_id=1440368655] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=836503802] transform = Transform3D(5.96244e-09, 0, -0.5, 0, 0.5, 0, 0.5, 0, 5.96244e-09, 0, 0, 0) mesh = ExtResource("1_sb5lc") -skeleton = NodePath("") diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd index 390a4bfb..01522609 100644 --- a/client/map/tiles/wall_tile.gd +++ b/client/map/tiles/wall_tile.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -14,7 +14,7 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # class_name WallTile -extends Floor +extends Tile static func create_material(color: Color): var mat = StandardMaterial3D.new() @@ -31,8 +31,8 @@ const WALLS: Array = [ "wall", "wall-window", "counter-window", + "counter-window-conveyor", "door", - "fence" ] var walls: Array = WALLS @@ -56,8 +56,8 @@ func _init(ctx: TileFactory.TileCC): for start in range(4): var series = 0 for i in range(4): - var i_name = ctx.neighbors[(start + i) % 4] - if is_wall(i_name): + var neighbor: Array = ctx.neighbors[(start + i) % 4] + if is_wall(neighbor): series += 1 else: break @@ -68,7 +68,7 @@ func _init(ctx: TileFactory.TileCC): if max_series == 1: facing = max_idx kind = WallKind.STRAIGHT - if not env.is_empty() and env.has(ctx.neighbors[(facing + 1) % 4]) or ctx.neighbors[(facing + 1) % 4] == null: + if not env.is_empty() and G.has_one(env, ctx.neighbors[(facing + 1) % 4]) or ctx.neighbors[(facing + 1) % 4].is_empty(): facing = (facing + 2) % 4 elif max_series == 2: facing = max_idx @@ -86,5 +86,5 @@ func add_dyed_mesh(ctx: TileFactory.TileCC, node: Node3D, node_name = "Mesh", su meshi.set_surface_override_material(surface, MATERIALS.get(ctx.tile_name.variant, MATERIALS["green"])) base.add_child(node) -func is_wall(tile_name_t) -> bool: - return walls.has(tile_name_t) +func is_wall(neighbor: Array) -> bool: + return G.has_one(neighbor, walls) diff --git a/client/map/tiles/window.gd b/client/map/tiles/window.gd index da0963ed..9f8670a7 100644 --- a/client/map/tiles/window.gd +++ b/client/map/tiles/window.gd @@ -1,5 +1,5 @@ # Hurry Curry! - a game about cooking -# Copyright (C) 2025 Hurry Curry! contributors +# Copyright (C) 2026 Hurry Curry! Contributors # # 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 @@ -16,7 +16,7 @@ class_name WallWindow extends WallTile -static func interact_target() -> Vector3: +static func interact_target(): # -> Vector3? return Vector3(0, 0.625, 0) func _init(ctx: TileFactory.TileCC): diff --git a/client/map/tiles/window.res b/client/map/tiles/window.res Binary files differindex b2ff56f0..f685d179 100644 --- a/client/map/tiles/window.res +++ b/client/map/tiles/window.res diff --git a/client/map/tiles/window.tscn b/client/map/tiles/window.tscn index b2db9c74..d086bc13 100644 --- a/client/map/tiles/window.tscn +++ b/client/map/tiles/window.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=2 format=3 uid="uid://mn0avehv0qtt"] +[gd_scene format=3 uid="uid://mn0avehv0qtt"] [ext_resource type="ArrayMesh" uid="uid://ce60y0y6dqypp" path="res://map/tiles/window.res" id="1_ek3mj"] -[node name="Window" type="Node3D"] +[node name="Window" type="Node3D" unique_id=1268337780] -[node name="Mesh" type="MeshInstance3D" parent="."] +[node name="Mesh" type="MeshInstance3D" parent="." unique_id=753789933] transform = Transform3D(-2.18557e-08, 0, 0.5, 0, 0.5, 0, -0.5, 0, -2.18557e-08, 0, 0, 0) mesh = ExtResource("1_ek3mj") -skeleton = NodePath("") |