# 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 . # @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()