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()  |