from pathlib import Path
import json
from PIL import Image,ImageDraw,ImageFont
R=Path(__file__).parent;j=json.loads((R/'kit.json').read_text());w,h=420,420
out=Image.new('RGB',(w*5,h*4+95),'#e3e1d9');d=ImageDraw.Draw(out)
f='/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf';title=ImageFont.truetype(f,30);label=ImageFont.truetype(f,19);small=ImageFont.truetype(f,14)
d.text((24,16),'MEDIEVAL TOWN — WEALTH, TRADE & SQUARE',fill='#292f2b',font=title)
d.text((24,56),f"20 placement atoms · +Y up · metres · {j['total_triangles']:,} / 45,000 triangles · shelf PBR materials",fill='#4c544e',font=label)
for i,a in enumerate(j['atoms']):
 x=i%5*w;y=i//5*h+95;im=Image.open(R/'renders'/f"{a['node_name']}.png").convert('RGB');im.thumbnail((w-12,h-70));out.paste(im,(x+(w-im.width)//2,y))
 d.text((x+15,y+h-65),a['node_name'],font=label,fill='#292f2b');size=' × '.join(str(v) for v in a['nominal_size_whd_metres']);d.text((x+15,y+h-36),f"{size} m · {a['triangles']:,} tris",font=small,fill='#4c544e')
out.save(R/'kit_sheet.png')
