aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-24 17:44:50 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-25 11:26:26 +0200
commit13e6c04d5524a136658a97e0b58dd6284e0481d9 (patch)
treedee8f7c6866c18a96175d3e10c60070cc15effea /client/map
parent9c82978ac09a89e13973913b424822140ad3b4c3 (diff)
downloadhurrycurry-13e6c04d5524a136658a97e0b58dd6284e0481d9.tar
hurrycurry-13e6c04d5524a136658a97e0b58dd6284e0481d9.tar.bz2
hurrycurry-13e6c04d5524a136658a97e0b58dd6284e0481d9.tar.zst
add black holes
Diffstat (limited to 'client/map')
-rw-r--r--client/map/tile_factory.gd8
-rw-r--r--client/map/tiles/item_portal.gd23
-rw-r--r--client/map/tiles/player_portal.gd23
-rw-r--r--client/map/tiles/portal.gd22
-rw-r--r--client/map/tiles/portal.tscn22
5 files changed, 98 insertions, 0 deletions
diff --git a/client/map/tile_factory.gd b/client/map/tile_factory.gd
index 8b9e2157..b43a568a 100644
--- a/client/map/tile_factory.gd
+++ b/client/map/tile_factory.gd
@@ -66,6 +66,14 @@ static func produce(tile_name: String, node_name: String, neighbors: Array) -> T
return Book.new(node_name, neighbors)
"conveyor":
return Conveyor.new(node_name, neighbors)
+ "item-portal-in":
+ return ItemPortal.new(node_name, neighbors, false)
+ "item-portal-out":
+ return ItemPortal.new(node_name, neighbors, true)
+ "player-portal-in":
+ return PlayerPortal.new(node_name, neighbors, false)
+ "player-portal-out":
+ return PlayerPortal.new(node_name, neighbors, true)
var t:
push_warning("tile %s unknown" % t)
return GenericTile.new(node_name, neighbors, t)
diff --git a/client/map/tiles/item_portal.gd b/client/map/tiles/item_portal.gd
new file mode 100644
index 00000000..c4762ae2
--- /dev/null
+++ b/client/map/tiles/item_portal.gd
@@ -0,0 +1,23 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2024 metamuffin
+#
+# 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 ItemPortal
+extends CounterBase
+
+var model: PortalModel = load("res://map/tiles/portal.tscn").instantiate()
+func _init(rename: String, neighbors: Array, type: bool):
+ super(rename, neighbors)
+ model.configure(0.2, type)
+ base.add_child(model)
diff --git a/client/map/tiles/player_portal.gd b/client/map/tiles/player_portal.gd
new file mode 100644
index 00000000..637f2c78
--- /dev/null
+++ b/client/map/tiles/player_portal.gd
@@ -0,0 +1,23 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2024 metamuffin
+#
+# 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 PlayerPortal
+extends Floor
+
+var model: PortalModel = load("res://map/tiles/portal.tscn").instantiate()
+func _init(rename: String, neighbors: Array, type: bool):
+ super(rename, neighbors)
+ model.configure(0.4, type)
+ base.add_child(model)
diff --git a/client/map/tiles/portal.gd b/client/map/tiles/portal.gd
new file mode 100644
index 00000000..9dc94c2d
--- /dev/null
+++ b/client/map/tiles/portal.gd
@@ -0,0 +1,22 @@
+# Hurry Curry! - a game about cooking
+# Copyright 2024 metamuffin
+#
+# 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 PortalModel
+extends Node3D
+
+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.)
diff --git a/client/map/tiles/portal.tscn b/client/map/tiles/portal.tscn
new file mode 100644
index 00000000..2144b45f
--- /dev/null
+++ b/client/map/tiles/portal.tscn
@@ -0,0 +1,22 @@
+[gd_scene load_steps=5 format=3 uid="uid://cc5ubao3ln3r6"]
+
+[ext_resource type="Shader" path="res://map/tiles/portal.gdshader" id="1_aiexk"]
+[ext_resource type="Script" path="res://map/tiles/portal.gd" id="1_h7xlp"]
+
+[sub_resource type="QuadMesh" id="QuadMesh_us4em"]
+size = Vector2(3, 3)
+
+[sub_resource type="ShaderMaterial" id="ShaderMaterial_hvgsb"]
+resource_local_to_scene = true
+render_priority = 0
+shader = ExtResource("1_aiexk")
+shader_parameter/type = 4.75e-08
+shader_parameter/size = 0.2
+
+[node name="Portal" type="Node3D"]
+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)
+mesh = SubResource("QuadMesh_us4em")
+surface_material_override/0 = SubResource("ShaderMaterial_hvgsb")