aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/map/tile_factory.gd8
-rw-r--r--client/map/tiles/counter.gd2
-rw-r--r--client/map/tiles/house/balcony.resbin0 -> 13786 bytes
-rw-r--r--client/map/tiles/house/balcony.tscn18
-rw-r--r--client/map/tiles/house/chimney.resbin0 -> 3317 bytes
-rw-r--r--client/map/tiles/house/chimney.tscn14
-rw-r--r--client/map/tiles/house/corner.resbin0 -> 11505 bytes
-rw-r--r--client/map/tiles/house/corner.tscn20
-rw-r--r--client/map/tiles/house/door.resbin0 -> 14207 bytes
-rw-r--r--client/map/tiles/house/door.tres5
-rw-r--r--client/map/tiles/house/door.tscn25
-rw-r--r--client/map/tiles/house/frame.tres7
-rw-r--r--client/map/tiles/house/oriel.resbin0 -> 12695 bytes
-rw-r--r--client/map/tiles/house/oriel.tscn18
-rw-r--r--client/map/tiles/house/roof.resbin0 -> 1378 bytes
-rw-r--r--client/map/tiles/house/roof.tres5
-rw-r--r--client/map/tiles/house/roof.tscn12
-rw-r--r--client/map/tiles/house/rooftop.tres5
-rw-r--r--client/map/tiles/house/side.resbin0 -> 1716 bytes
-rw-r--r--client/map/tiles/house/side.tscn14
-rw-r--r--client/map/tiles/house/wall.resbin0 -> 11677 bytes
-rw-r--r--client/map/tiles/house/wall.tscn18
-rw-r--r--client/map/tiles/house/wall_color.tres5
-rw-r--r--client/map/tiles/house/window_glass.tres6
-rw-r--r--client/map/tiles/house_balcony.gd22
-rw-r--r--client/map/tiles/house_balcony.gd.uid1
-rw-r--r--client/map/tiles/house_door.gd22
-rw-r--r--client/map/tiles/house_door.gd.uid1
-rw-r--r--client/map/tiles/house_oriel.gd22
-rw-r--r--client/map/tiles/house_oriel.gd.uid1
-rw-r--r--client/map/tiles/house_roof.gd21
-rw-r--r--client/map/tiles/house_roof.gd.uid1
-rw-r--r--client/map/tiles/house_roof_chimney.gd21
-rw-r--r--client/map/tiles/house_roof_chimney.gd.uid1
-rw-r--r--client/map/tiles/house_side.gd35
-rw-r--r--client/map/tiles/house_side.gd.uid1
-rw-r--r--client/map/tiles/house_tile.gd37
-rw-r--r--client/map/tiles/house_tile.gd.uid1
-rw-r--r--client/map/tiles/house_wall.gd22
-rw-r--r--client/map/tiles/house_wall.gd.uid1
-rw-r--r--client/map/tiles/wall_tile.gd11
-rw-r--r--data/maps/debug2.yaml13
42 files changed, 410 insertions, 6 deletions
diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd
index da76f24d..7ba575c3 100644
--- a/client/map/tile_factory.gd
+++ b/client/map/tile_factory.gd
@@ -58,6 +58,14 @@ static func produce(tile_name: String, position: Vector2i, neighbors: Array, flo
"white-hole-counter": return ItemPortal.new(ctx, true)
"white-hole": return PlayerPortal.new(ctx, true)
+ "house-balcony": return HouseBalcony.new(ctx)
+ "house-door": return HouseDoor.new(ctx)
+ "house-oriel": return HouseOriel.new(ctx)
+ "house-wall": return HouseWall.new(ctx)
+ "house-side": return HouseSide.new(ctx)
+ "house-roof": return HouseRoof.new(ctx)
+ "house-roof-chimney": return HouseRoofChimney.new(ctx)
+
"cheese-crate": return CheeseCrate.new(ctx)
"coconut-crate": return CoconutCrate.new(ctx)
"dirty-plate-crate": return CounterBase.new(ctx)
diff --git a/client/map/tiles/counter.gd b/client/map/tiles/counter.gd
index f819490c..9ca18550 100644
--- a/client/map/tiles/counter.gd
+++ b/client/map/tiles/counter.gd
@@ -62,7 +62,7 @@ func _init(ctx: TileFactory.TileCC):
# backsplash
facing = max_idx
if max_series == 1:
- if WallTile.is_wall(ctx.neighbors[(max_idx + 2) % 4]):
+ if WallTile.WALLS.has(ctx.neighbors[(max_idx + 2) % 4]):
kind = CounterKind.STRAIGHT_BACKSPLASH
else:
kind = CounterKind.STRAIGHT
diff --git a/client/map/tiles/house/balcony.res b/client/map/tiles/house/balcony.res
new file mode 100644
index 00000000..6a8b9c8e
--- /dev/null
+++ b/client/map/tiles/house/balcony.res
Binary files differ
diff --git a/client/map/tiles/house/balcony.tscn b/client/map/tiles/house/balcony.tscn
new file mode 100644
index 00000000..1c0232ff
--- /dev/null
+++ b/client/map/tiles/house/balcony.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=6 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"]
+[ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="3_phigl"]
+[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="Mesh" type="MeshInstance3D" parent="."]
+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")
+surface_material_override/3 = ExtResource("5_xtshi")
diff --git a/client/map/tiles/house/chimney.res b/client/map/tiles/house/chimney.res
new file mode 100644
index 00000000..3c7d43a3
--- /dev/null
+++ b/client/map/tiles/house/chimney.res
Binary files differ
diff --git a/client/map/tiles/house/chimney.tscn b/client/map/tiles/house/chimney.tscn
new file mode 100644
index 00000000..68b8faa3
--- /dev/null
+++ b/client/map/tiles/house/chimney.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=4 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="Mesh" type="MeshInstance3D" parent="."]
+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
new file mode 100644
index 00000000..33db9356
--- /dev/null
+++ b/client/map/tiles/house/corner.res
Binary files differ
diff --git a/client/map/tiles/house/corner.tscn b/client/map/tiles/house/corner.tscn
new file mode 100644
index 00000000..dc2f5c15
--- /dev/null
+++ b/client/map/tiles/house/corner.tscn
@@ -0,0 +1,20 @@
+[gd_scene load_steps=7 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"]
+[ext_resource type="Material" uid="uid://bnip4xf36u1vv" path="res://map/tiles/house/rooftop.tres" id="3_dpdnb"]
+[ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="3_edb5f"]
+[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="Mesh" type="MeshInstance3D" parent="."]
+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")
+surface_material_override/3 = ExtResource("3_dpdnb")
+surface_material_override/4 = ExtResource("3_x4hec")
diff --git a/client/map/tiles/house/door.res b/client/map/tiles/house/door.res
new file mode 100644
index 00000000..4314a3ce
--- /dev/null
+++ b/client/map/tiles/house/door.res
Binary files differ
diff --git a/client/map/tiles/house/door.tres b/client/map/tiles/house/door.tres
new file mode 100644
index 00000000..aaa20f8b
--- /dev/null
+++ b/client/map/tiles/house/door.tres
@@ -0,0 +1,5 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://cjbkkx8jxitsf"]
+
+[resource]
+cull_mode = 1
+albedo_color = Color(0.286275, 0.32549, 0.207843, 1)
diff --git a/client/map/tiles/house/door.tscn b/client/map/tiles/house/door.tscn
new file mode 100644
index 00000000..4b6f840f
--- /dev/null
+++ b/client/map/tiles/house/door.tscn
@@ -0,0 +1,25 @@
+[gd_scene load_steps=8 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"]
+[ext_resource type="Material" uid="uid://djepfh3hn45mt" path="res://map/tiles/house/window_glass.tres" id="2_n2fsy"]
+[ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="3_ca1vx"]
+[ext_resource type="Material" uid="uid://p1okexdmch4x" path="res://map/tiles/house/wall_color.tres" id="4_lvj6j"]
+[ext_resource type="Material" uid="uid://cjbkkx8jxitsf" path="res://map/tiles/house/door.tres" id="6_n2fsy"]
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n2fsy"]
+cull_mode = 1
+albedo_color = Color(0.160784, 0.180392, 0.0901961, 1)
+
+[node name="HouseDoor" type="Node3D"]
+
+[node name="Mesh" type="MeshInstance3D" parent="."]
+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")
+surface_material_override/3 = ExtResource("1_7cj7h")
+surface_material_override/4 = ExtResource("6_n2fsy")
+surface_material_override/5 = SubResource("StandardMaterial3D_n2fsy")
diff --git a/client/map/tiles/house/frame.tres b/client/map/tiles/house/frame.tres
new file mode 100644
index 00000000..ad243d0b
--- /dev/null
+++ b/client/map/tiles/house/frame.tres
@@ -0,0 +1,7 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://c56pgcp4onece"]
+
+[resource]
+resource_name = "Frame"
+cull_mode = 2
+albedo_color = Color(0.906332, 0.906332, 0.906332, 1)
+roughness = 0.5
diff --git a/client/map/tiles/house/oriel.res b/client/map/tiles/house/oriel.res
new file mode 100644
index 00000000..c25d1c64
--- /dev/null
+++ b/client/map/tiles/house/oriel.res
Binary files differ
diff --git a/client/map/tiles/house/oriel.tscn b/client/map/tiles/house/oriel.tscn
new file mode 100644
index 00000000..2f67cf9c
--- /dev/null
+++ b/client/map/tiles/house/oriel.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=6 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"]
+[ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="3_fqtxf"]
+[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="Mesh" type="MeshInstance3D" parent="."]
+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")
+surface_material_override/3 = ExtResource("5_5mym6")
diff --git a/client/map/tiles/house/roof.res b/client/map/tiles/house/roof.res
new file mode 100644
index 00000000..b5efd434
--- /dev/null
+++ b/client/map/tiles/house/roof.res
Binary files differ
diff --git a/client/map/tiles/house/roof.tres b/client/map/tiles/house/roof.tres
new file mode 100644
index 00000000..ca714564
--- /dev/null
+++ b/client/map/tiles/house/roof.tres
@@ -0,0 +1,5 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://dtoltk5uaa2l6"]
+
+[resource]
+cull_mode = 2
+albedo_color = Color(0.505882, 0.313726, 0.270588, 1)
diff --git a/client/map/tiles/house/roof.tscn b/client/map/tiles/house/roof.tscn
new file mode 100644
index 00000000..b9eb92c2
--- /dev/null
+++ b/client/map/tiles/house/roof.tscn
@@ -0,0 +1,12 @@
+[gd_scene load_steps=3 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="Mesh" type="MeshInstance3D" parent="."]
+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/rooftop.tres b/client/map/tiles/house/rooftop.tres
new file mode 100644
index 00000000..76ed928f
--- /dev/null
+++ b/client/map/tiles/house/rooftop.tres
@@ -0,0 +1,5 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://bnip4xf36u1vv"]
+
+[resource]
+cull_mode = 2
+albedo_color = Color(0.2, 0.2, 0.2, 1)
diff --git a/client/map/tiles/house/side.res b/client/map/tiles/house/side.res
new file mode 100644
index 00000000..ff974a33
--- /dev/null
+++ b/client/map/tiles/house/side.res
Binary files differ
diff --git a/client/map/tiles/house/side.tscn b/client/map/tiles/house/side.tscn
new file mode 100644
index 00000000..b6d22484
--- /dev/null
+++ b/client/map/tiles/house/side.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=4 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="Mesh" type="MeshInstance3D" parent="."]
+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
new file mode 100644
index 00000000..daeaa55c
--- /dev/null
+++ b/client/map/tiles/house/wall.res
Binary files differ
diff --git a/client/map/tiles/house/wall.tscn b/client/map/tiles/house/wall.tscn
new file mode 100644
index 00000000..05bb73ef
--- /dev/null
+++ b/client/map/tiles/house/wall.tscn
@@ -0,0 +1,18 @@
+[gd_scene load_steps=6 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"]
+[ext_resource type="Material" uid="uid://dtoltk5uaa2l6" path="res://map/tiles/house/roof.tres" id="2_gloxj"]
+[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="Mesh" type="MeshInstance3D" parent="."]
+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")
+surface_material_override/3 = ExtResource("1_xlk0v")
diff --git a/client/map/tiles/house/wall_color.tres b/client/map/tiles/house/wall_color.tres
new file mode 100644
index 00000000..31871a59
--- /dev/null
+++ b/client/map/tiles/house/wall_color.tres
@@ -0,0 +1,5 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://p1okexdmch4x"]
+
+[resource]
+cull_mode = 2
+albedo_color = Color(0.905882, 0.882353, 0.807843, 1)
diff --git a/client/map/tiles/house/window_glass.tres b/client/map/tiles/house/window_glass.tres
new file mode 100644
index 00000000..ceb7af80
--- /dev/null
+++ b/client/map/tiles/house/window_glass.tres
@@ -0,0 +1,6 @@
+[gd_resource type="StandardMaterial3D" format=3 uid="uid://djepfh3hn45mt"]
+
+[resource]
+cull_mode = 2
+metallic = 1.0
+roughness = 0.1
diff --git a/client/map/tiles/house_balcony.gd b/client/map/tiles/house_balcony.gd
new file mode 100644
index 00000000..03005d19
--- /dev/null
+++ b/client/map/tiles/house_balcony.gd
@@ -0,0 +1,22 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseBalcony
+extends HouseTile
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ if kind != WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/balcony.tscn").instantiate())
diff --git a/client/map/tiles/house_balcony.gd.uid b/client/map/tiles/house_balcony.gd.uid
new file mode 100644
index 00000000..97d21b60
--- /dev/null
+++ b/client/map/tiles/house_balcony.gd.uid
@@ -0,0 +1 @@
+uid://cnkclt2cik31a
diff --git a/client/map/tiles/house_door.gd b/client/map/tiles/house_door.gd
new file mode 100644
index 00000000..19708fd6
--- /dev/null
+++ b/client/map/tiles/house_door.gd
@@ -0,0 +1,22 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseDoor
+extends HouseTile
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ if kind != WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/door.tscn").instantiate())
diff --git a/client/map/tiles/house_door.gd.uid b/client/map/tiles/house_door.gd.uid
new file mode 100644
index 00000000..950a4842
--- /dev/null
+++ b/client/map/tiles/house_door.gd.uid
@@ -0,0 +1 @@
+uid://cdiytve8uuhss
diff --git a/client/map/tiles/house_oriel.gd b/client/map/tiles/house_oriel.gd
new file mode 100644
index 00000000..0bc0cca7
--- /dev/null
+++ b/client/map/tiles/house_oriel.gd
@@ -0,0 +1,22 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseOriel
+extends HouseTile
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ if kind != WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/oriel.tscn").instantiate())
diff --git a/client/map/tiles/house_oriel.gd.uid b/client/map/tiles/house_oriel.gd.uid
new file mode 100644
index 00000000..fe2443fa
--- /dev/null
+++ b/client/map/tiles/house_oriel.gd.uid
@@ -0,0 +1 @@
+uid://c1gbk27g8wh46
diff --git a/client/map/tiles/house_roof.gd b/client/map/tiles/house_roof.gd
new file mode 100644
index 00000000..c796348f
--- /dev/null
+++ b/client/map/tiles/house_roof.gd
@@ -0,0 +1,21 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseRoof
+extends Street
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ base.add_child(load("res://map/tiles/house/roof.tscn").instantiate())
diff --git a/client/map/tiles/house_roof.gd.uid b/client/map/tiles/house_roof.gd.uid
new file mode 100644
index 00000000..b0c7483c
--- /dev/null
+++ b/client/map/tiles/house_roof.gd.uid
@@ -0,0 +1 @@
+uid://dtss0058550iy
diff --git a/client/map/tiles/house_roof_chimney.gd b/client/map/tiles/house_roof_chimney.gd
new file mode 100644
index 00000000..6e8e9c7a
--- /dev/null
+++ b/client/map/tiles/house_roof_chimney.gd
@@ -0,0 +1,21 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseRoofChimney
+extends Street
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ base.add_child(load("res://map/tiles/house/chimney.tscn").instantiate())
diff --git a/client/map/tiles/house_roof_chimney.gd.uid b/client/map/tiles/house_roof_chimney.gd.uid
new file mode 100644
index 00000000..c1184111
--- /dev/null
+++ b/client/map/tiles/house_roof_chimney.gd.uid
@@ -0,0 +1 @@
+uid://bh15ovsdlvjqn
diff --git a/client/map/tiles/house_side.gd b/client/map/tiles/house_side.gd
new file mode 100644
index 00000000..35d553e0
--- /dev/null
+++ b/client/map/tiles/house_side.gd
@@ -0,0 +1,35 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseSide
+extends WallTile
+
+func _init(ctx: TileFactory.TileCC):
+ walls = [
+ "house-wall",
+ "house-balcony",
+ "house-oriel",
+ "house-door",
+ "house-side"
+ ]
+
+ env = [
+ "house-roof",
+ "house-roof-chimney",
+ "house-side"
+ ]
+ super(ctx)
+ if kind != WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/side.tscn").instantiate())
diff --git a/client/map/tiles/house_side.gd.uid b/client/map/tiles/house_side.gd.uid
new file mode 100644
index 00000000..c6f8c6c7
--- /dev/null
+++ b/client/map/tiles/house_side.gd.uid
@@ -0,0 +1 @@
+uid://iauevxue7rel
diff --git a/client/map/tiles/house_tile.gd b/client/map/tiles/house_tile.gd
new file mode 100644
index 00000000..54a49f35
--- /dev/null
+++ b/client/map/tiles/house_tile.gd
@@ -0,0 +1,37 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseTile
+extends WallTile
+
+func _init(ctx: TileFactory.TileCC):
+ walls = [
+ "house-wall",
+ "house-balcony",
+ "house-oriel",
+ "house-door",
+ ]
+
+ env = [
+ "house-roof",
+ "house-roof-chimney",
+ "house-side"
+ ]
+ super(ctx)
+ if kind == WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/corner.tscn").instantiate())
+
+func get_base_mesh():
+ return preload("res://map/tiles/street.tscn").instantiate()
diff --git a/client/map/tiles/house_tile.gd.uid b/client/map/tiles/house_tile.gd.uid
new file mode 100644
index 00000000..752691e2
--- /dev/null
+++ b/client/map/tiles/house_tile.gd.uid
@@ -0,0 +1 @@
+uid://cphivqtq1mhbs
diff --git a/client/map/tiles/house_wall.gd b/client/map/tiles/house_wall.gd
new file mode 100644
index 00000000..9c3639f3
--- /dev/null
+++ b/client/map/tiles/house_wall.gd
@@ -0,0 +1,22 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2025 nokoe
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, version 3 of the License only.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+class_name HouseWall
+extends HouseTile
+
+func _init(ctx: TileFactory.TileCC):
+ super(ctx)
+ if kind != WallKind.OUTER_CORNER:
+ base.add_child(load("res://map/tiles/house/wall.tscn").instantiate())
diff --git a/client/map/tiles/house_wall.gd.uid b/client/map/tiles/house_wall.gd.uid
new file mode 100644
index 00000000..56948c21
--- /dev/null
+++ b/client/map/tiles/house_wall.gd.uid
@@ -0,0 +1 @@
+uid://yiktabmw16t7
diff --git a/client/map/tiles/wall_tile.gd b/client/map/tiles/wall_tile.gd
index 0276baea..f934e308 100644
--- a/client/map/tiles/wall_tile.gd
+++ b/client/map/tiles/wall_tile.gd
@@ -24,6 +24,9 @@ const WALLS: Array = [
"fence"
]
+var walls: Array = WALLS
+var env: Array = []
+
enum WallKind {
STRAIGHT,
OUTER_CORNER,
@@ -43,7 +46,7 @@ func _init(ctx: TileFactory.TileCC):
var series = 0
for i in range(4):
var i_name = ctx.neighbors[(start + i) % 4]
- if WallTile.is_wall(i_name):
+ if is_wall(i_name):
series += 1
else:
break
@@ -54,6 +57,8 @@ func _init(ctx: TileFactory.TileCC):
if max_series == 1:
facing = max_idx
kind = WallKind.STRAIGHT
+ if !env.is_empty() and env.has(ctx.neighbors[(facing + 1) % 4]):
+ facing = (facing + 2) % 4
elif max_series == 2:
facing = max_idx
kind = WallKind.OUTER_CORNER
@@ -65,5 +70,5 @@ func _init(ctx: TileFactory.TileCC):
kind = WallKind.CROSS
turn_facing(facing)
-static func is_wall(tile_name_t) -> bool:
- return WALLS.has(tile_name_t)
+func is_wall(tile_name_t) -> bool:
+ return walls.has(tile_name_t)
diff --git a/data/maps/debug2.yaml b/data/maps/debug2.yaml
index 1ff423de..154296e6 100644
--- a/data/maps/debug2.yaml
+++ b/data/maps/debug2.yaml
@@ -16,7 +16,10 @@
#
score_baseline: 100000
map:
- - "........................"
+ - "RRRTTRRRT|.............."
+ - "RRRHH+@@+D.............."
+ - "TTT+...................."
+ - "|||H...................."
- "...~...................."
- "........................"
- "........................"
@@ -74,7 +77,13 @@ tiles:
"d": door
"▒": wall-window
"█": wall
-
+ "H": house-wall
+ "+": house-balcony
+ "R": house-roof
+ "T": house-roof-chimney
+ "|": house-side
+ "@": house-oriel
+ "D": house-door
items:
"S": pot
"w": plate