aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
Diffstat (limited to 'client/map')
-rw-r--r--client/map/map.gd29
-rw-r--r--client/map/map.tscn44
-rw-r--r--client/map/progress.gd1
3 files changed, 33 insertions, 41 deletions
diff --git a/client/map/map.gd b/client/map/map.gd
new file mode 100644
index 00000000..1cd0bd30
--- /dev/null
+++ b/client/map/map.gd
@@ -0,0 +1,29 @@
+class_name Map
+extends Node3D
+
+var tile_by_pos: Dictionary = {}
+
+
+func get_tile_name(position: Vector2i):
+ var e = tile_by_pos[str(position)]
+ if e != null: return e[0]
+ else: return null
+func get_tile_instance(position: Vector2i) -> Tile:
+ var e = tile_by_pos[str(position)]
+ if e != null: return e[1]
+ else: return null
+
+func set_tile(position: Vector2i, name: String, neighbors: Array = [null,null,null,null]) -> Tile:
+ var tile = TileFactory.produce(name, str(position), neighbors)
+ add_child(tile)
+ tile.position = Vector3(position.x, 0, position.y)
+ tile_by_pos[str(position)] = [name, tile]
+ return tile
+
+func remove_tile_if_exists(pos: Vector2i):
+ var tile = get_tile_instance(pos)
+ if tile == null: return
+ if tile.item != null: tile.item.queue_free()
+ tile_by_pos.erase(str(pos))
+ tile.name += "_queued_free"
+ tile.queue_free()
diff --git a/client/map/map.tscn b/client/map/map.tscn
index 612729f4..df359214 100644
--- a/client/map/map.tscn
+++ b/client/map/map.tscn
@@ -1,44 +1,6 @@
-[gd_scene load_steps=2 format=3 uid="uid://duqkg22yre6ry"]
+[gd_scene load_steps=2 format=3 uid="uid://b4gone8fu53r7"]
-[sub_resource type="GDScript" id="GDScript_qftmc"]
-script/source = "# 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/>.
-#
-class_name Map
-extends Node3D
-
-var tile_by_pos: Dictionary = {}
-
-func update(pos, tile_name, neighbors):
- var node_name = str(pos)
-
- if has_node(node_name):
- queue_free_rename(get_node(node_name))
-
- var instance: Tile = TileFactory.produce(tile_name, node_name, neighbors)
-
- 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()
-"
+[ext_resource type="Script" path="res://map/map.gd" id="1_3en0a"]
[node name="Map" type="Node3D"]
-script = SubResource("GDScript_qftmc")
+script = ExtResource("1_3en0a")
diff --git a/client/map/progress.gd b/client/map/progress.gd
index 4d6494f6..dd855a36 100644
--- a/client/map/progress.gd
+++ b/client/map/progress.gd
@@ -20,3 +20,4 @@ func set_progress(progress: float, bad: bool):
var mat: ShaderMaterial = self.get_active_material(0)
mat.set_shader_parameter("progress", progress)
mat.set_shader_parameter("bad", bad)
+