aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
Diffstat (limited to 'client')
-rw-r--r--client/game.gd4
-rw-r--r--client/map/item_factory.gd24
-rw-r--r--client/map/items/generic_item.gd34
-rw-r--r--client/map/items/item.gd (renamed from client/map/item.gd)18
-rw-r--r--client/map/items/plate.gd21
-rw-r--r--client/map/items/plate.resbin0 -> 6217 bytes
-rw-r--r--client/map/items/plate.tscn10
-rw-r--r--client/map/tiles/table.gd3
-rw-r--r--client/multiplayer.gd1
9 files changed, 95 insertions, 20 deletions
diff --git a/client/game.gd b/client/game.gd
index 52856898..f1f4e065 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -58,7 +58,7 @@ func _ready():
Multiplayer.connect("set_tile_item", func(tile: Vector2i, item: int):
var t: Floor = map.tile_by_pos[str(tile)]
- var i = Item.new(item, t.item_base)
+ var i = ItemFactory.produce(item, t.item_base)
add_child(i)
i.name = Multiplayer.item_names[item]
t.set_item(i)
@@ -71,7 +71,7 @@ func _ready():
Multiplayer.connect("set_player_item", func(player: int, item: int):
var p: Player = players[player]
- var i = Item.new(item, p.hand_base)
+ var i = ItemFactory.produce(item, p.hand_base)
add_child(i)
i.name = Multiplayer.item_names[item]
p.set_item(i)
diff --git a/client/map/item_factory.gd b/client/map/item_factory.gd
new file mode 100644
index 00000000..3dbb7018
--- /dev/null
+++ b/client/map/item_factory.gd
@@ -0,0 +1,24 @@
+# Undercooked - a game about cooking
+# Copyright 2024 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 ItemFactory
+extends Object
+
+static func produce(idx: int, owned_by: Node3D) -> Item:
+ match Multiplayer.item_names[idx]:
+ "plate":
+ return Plate.new(owned_by)
+ var t:
+ return GenericItem.new(owned_by, t)
diff --git a/client/map/items/generic_item.gd b/client/map/items/generic_item.gd
new file mode 100644
index 00000000..70e9b354
--- /dev/null
+++ b/client/map/items/generic_item.gd
@@ -0,0 +1,34 @@
+# Undercooked - a game about cooking
+# Copyright 2024 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 GenericItem
+extends Item
+
+func _init(owned_by_: Node3D, t: String):
+ super(owned_by_)
+ #add_child(load("res://models/prefabs/map/bag.tscn").instantiate())
+ var mesh = MeshInstance3D.new()
+ var text = TextMesh.new()
+ var mat = StandardMaterial3D.new()
+ text.text = t
+ text.font = SystemFont.new()
+ text.depth = 0
+ mesh.mesh = text
+ mesh.position.y = 0.5
+ mesh.scale = Vector3(3, 3, 3)
+ mat.billboard_mode = mat.BILLBOARD_ENABLED
+ mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
+ text.material = mat
+ add_child(mesh)
diff --git a/client/map/item.gd b/client/map/items/item.gd
index fd00f9fa..f817e72d 100644
--- a/client/map/item.gd
+++ b/client/map/items/item.gd
@@ -20,26 +20,10 @@ var owned_by: Node3D
var progress_instance: ProgressBar3D = preload("res://map/progress.tscn").instantiate()
-func _init(idx: int, owned_by_: Node3D):
+func _init(owned_by_: Node3D):
progress_instance.position.y = 2.
add_child(progress_instance)
progress_instance.visible = false
- match Multiplayer.item_names[idx]:
- var t:
- #add_child(load("res://models/prefabs/map/bag.tscn").instantiate())
- var mesh = MeshInstance3D.new()
- var text = TextMesh.new()
- var mat = StandardMaterial3D.new()
- text.text = t
- text.font = SystemFont.new()
- text.depth = 0
- mesh.mesh = text
- mesh.position.y = 0.5
- mesh.scale = Vector3(3, 3, 3)
- mat.billboard_mode = mat.BILLBOARD_ENABLED
- mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
- text.material = mat
- add_child(mesh)
owned_by = owned_by_
func _ready():
diff --git a/client/map/items/plate.gd b/client/map/items/plate.gd
new file mode 100644
index 00000000..8ebea099
--- /dev/null
+++ b/client/map/items/plate.gd
@@ -0,0 +1,21 @@
+# Undercooked - a game about cooking
+# Copyright 2024 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 Plate
+extends Item
+
+func _init(owned_by_: Node3D):
+ super(owned_by_)
+ add_child(load("res://map/items/plate.tscn").instantiate())
diff --git a/client/map/items/plate.res b/client/map/items/plate.res
new file mode 100644
index 00000000..25e6e832
--- /dev/null
+++ b/client/map/items/plate.res
Binary files differ
diff --git a/client/map/items/plate.tscn b/client/map/items/plate.tscn
new file mode 100644
index 00000000..8503fe81
--- /dev/null
+++ b/client/map/items/plate.tscn
@@ -0,0 +1,10 @@
+[gd_scene load_steps=2 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="Mesh" type="MeshInstance3D" parent="."]
+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/tiles/table.gd b/client/map/tiles/table.gd
index e62e88fc..bf766f0b 100644
--- a/client/map/tiles/table.gd
+++ b/client/map/tiles/table.gd
@@ -19,3 +19,6 @@ extends FullTile
func _init(rename: String, neighbors: Array):
super(rename, neighbors)
base.add_child(load("res://map/tiles/table.tscn").instantiate())
+
+static func interact_target() -> Vector3:
+ return Vector3(0., .5, 0.)
diff --git a/client/multiplayer.gd b/client/multiplayer.gd
index 99f8046c..7ccfd377 100644
--- a/client/multiplayer.gd
+++ b/client/multiplayer.gd
@@ -48,7 +48,6 @@ var tileid_by_pos: Dictionary = {}
var url = ""
func connect_client():
- print("uwu")
socket.connect_to_url(url)
connected = true