diff options
Diffstat (limited to 'client/map/map.gd')
-rw-r--r-- | client/map/map.gd | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/client/map/map.gd b/client/map/map.gd new file mode 100644 index 00000000..b5e519a6 --- /dev/null +++ b/client/map/map.gd @@ -0,0 +1,77 @@ +# Undercooked - a game about cooking +# Copyright 2024 nokoe +# Copyright 2024 tpart +# 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/>. +# +@tool +class_name Map +extends Node3D + +var tile_by_pos: Dictionary = {} + +func _ready(): + Multiplayer.connect("update_map", update) + +func update(pos, tile_name, neighbors): + var instance: Floor + var node_name = str(pos) + + if has_node(node_name): + queue_free_rename(get_node(node_name)) + + match tile_name: + "trash": + instance = Trash.new(node_name, neighbors) + "tomato-crate": + instance = TomatoCrate.new(node_name, neighbors) + "cuttingboard": + instance = CuttingBoard.new(node_name, neighbors) + "counter": + instance = CounterBase.new(node_name, neighbors) + "flour-crate": + instance = FlourCounter.new(node_name, neighbors) + "oven": + instance = Oven.new(node_name, neighbors) + "raw-steak-crate": + instance = RawSteakCrate.new(node_name, neighbors) + "stove": + instance = Stove.new(node_name, neighbors) + "sink": + instance = Sink.new(node_name, neighbors) + "dirty-plate-crate": + instance = CounterBase.new(node_name, neighbors) + "wall": + instance = Wall.new(node_name, neighbors) + "chair": + instance = Chair.new(node_name, neighbors) + "table": + instance = Table.new(node_name, neighbors) + "floor": + instance = Floor.new(node_name, neighbors) + "window": + instance = WallWindow.new(node_name, neighbors) + "door": + instance = Door.new(node_name, neighbors) + var t: + push_warning("tile tile %s unknown" % t) + instance = GenericTile.new(node_name, neighbors, t) + + instance.position = Vector3(pos[0], 0, pos[1]) + tile_by_pos[str(Vector2i(pos[0],pos[1]))] = instance + add_child(instance) + +func queue_free_rename(node: Node) -> void: + node.name += "_queued_free" + node.queue_free() |