aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-10-10 15:41:44 +0200
committermetamuffin <metamuffin@disroot.org>2025-10-10 15:41:44 +0200
commitf78856e4cd4928c790748b883b7916585980b3dd (patch)
tree064441b94356bf4e60da544128f15d1a544b917f /client/map
parentd13b63d21a35318d6a756b70f6423750268a3831 (diff)
downloadhurrycurry-f78856e4cd4928c790748b883b7916585980b3dd.tar
hurrycurry-f78856e4cd4928c790748b883b7916585980b3dd.tar.bz2
hurrycurry-f78856e4cd4928c790748b883b7916585980b3dd.tar.zst
Refactor map set_tile; fix autobake not working
Diffstat (limited to 'client/map')
-rw-r--r--client/map/map.gd17
1 files changed, 11 insertions, 6 deletions
diff --git a/client/map/map.gd b/client/map/map.gd
index 150520d7..800cb57d 100644
--- a/client/map/map.gd
+++ b/client/map/map.gd
@@ -25,7 +25,7 @@ class TileInfo:
var neighbours: Array
var tile_by_pos: Dictionary[Vector2i, TileInfo] = {}
-var autobake = false
+var autoflush = false
var currently_baked = false
var floor_node := MeshInstance3D.new()
var tile_factory = TileFactory.new()
@@ -39,15 +39,20 @@ func get_tile_instance(pos: Vector2i) -> Tile:
if e != null: return e.tile
else: return null
-func set_tile(pos: Vector2i, name_: String, neighbors: Array = [null,null,null,null]) -> Tile:
- clear_tile(pos)
- var tile := tile_factory.produce(name_, pos, neighbors)
+func set_tile(pos: Vector2i, tilename = null, neighbors: Array = [null,null,null,null]):
+ _remove_tile(pos)
+ if tilename != null:
+ _add_tile(pos, tilename, neighbors)
+ if autoflush: flush()
+
+func _add_tile(pos: Vector2i, tilename: String, neighbors: Array) -> Tile:
+ var tile := tile_factory.produce(tilename, pos, neighbors)
add_child(tile)
tile.position = Vector3(pos.x, 0, pos.y)
- tile_by_pos[pos] = TileInfo.new(pos, name_, tile, neighbors)
+ tile_by_pos[pos] = TileInfo.new(pos, tilename, tile, neighbors)
return tile
-func clear_tile(pos: Vector2i):
+func _remove_tile(pos: Vector2i):
var tile = get_tile_instance(pos)
if tile == null: return
if tile.item != null: tile.item.queue_free()