aboutsummaryrefslogtreecommitdiff
path: root/client/map/map.gd
diff options
context:
space:
mode:
Diffstat (limited to 'client/map/map.gd')
-rw-r--r--client/map/map.gd29
1 files changed, 29 insertions, 0 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()