# Generate a real glass query, highlight membership, export and repeat after reload.
import argparse
import json
from pathlib import Path
from hearth.programs import dwelling, building_scene
from hearth.persistence import export_scene, load_scene
from hearth.blocks import name_of


def demonstrate(seed, output):
    scene = building_scene(dwelling(seed), seed)
    point = next(p for p, c in sorted(scene.blocks.items()) if name_of(c.state) == 'glass' and 'room-' in c.owner)
    query = scene.inspect(point)
    print(json.dumps(query, default=lambda v: sorted(v), indent=2))
    print('Exact current component cells:', sorted(scene.cells(query['instance'])))
    export_scene(scene, output)
    restored = load_scene(output)
    assert restored.inspect(point) == query
    print('Reloaded query identical; world coordinate:', point)
    return query


if __name__ == '__main__':
    p = argparse.ArgumentParser()
    p.add_argument('--seed', type=int, default=0)
    p.add_argument('--output', type=Path, default=Path('samples/inspection.litematic'))
    a = p.parse_args()
    demonstrate(a.seed, a.output)
