diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-10-10 15:41:44 +0200 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-10-10 15:41:44 +0200 |
| commit | f78856e4cd4928c790748b883b7916585980b3dd (patch) | |
| tree | 064441b94356bf4e60da544128f15d1a544b917f /client/map | |
| parent | d13b63d21a35318d6a756b70f6423750268a3831 (diff) | |
| download | hurrycurry-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.gd | 17 |
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() |