diff options
Diffstat (limited to 'client/map/map.gd')
| -rw-r--r-- | client/map/map.gd | 29 | 
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() | 
