diff options
Diffstat (limited to 'client/map')
41 files changed, 399 insertions, 4 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 Binary files differnew file mode 100644 index 00000000..6a8b9c8e --- /dev/null +++ b/client/map/tiles/house/balcony.res 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 Binary files differnew file mode 100644 index 00000000..3c7d43a3 --- /dev/null +++ b/client/map/tiles/house/chimney.res 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 Binary files differnew file mode 100644 index 00000000..33db9356 --- /dev/null +++ b/client/map/tiles/house/corner.res 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 Binary files differnew file mode 100644 index 00000000..4314a3ce --- /dev/null +++ b/client/map/tiles/house/door.res 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 Binary files differnew file mode 100644 index 00000000..c25d1c64 --- /dev/null +++ b/client/map/tiles/house/oriel.res 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 Binary files differnew file mode 100644 index 00000000..b5efd434 --- /dev/null +++ b/client/map/tiles/house/roof.res 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 Binary files differnew file mode 100644 index 00000000..ff974a33 --- /dev/null +++ b/client/map/tiles/house/side.res 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 Binary files differnew file mode 100644 index 00000000..daeaa55c --- /dev/null +++ b/client/map/tiles/house/wall.res 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) |