From f78856e4cd4928c790748b883b7916585980b3dd Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 10 Oct 2025 15:41:44 +0200 Subject: Refactor map set_tile; fix autobake not working --- client/map/map.gd | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'client/map/map.gd') 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() -- cgit v1.3