"""Produce Moonburrow.html. Uses the local illustrated assets and stereo music files."""
from pathlib import Path
import base64,json,re,hashlib
ROOT=Path(__file__).resolve().parents[1]
paths={p.stem:'assets/'+p.name for p in sorted((ROOT/'assets').glob('*.webp'))}
paths.update({k+'Music':'audio/'+k+'.mp3' for k in ['surface','hollow','crystal','vault']})
(ROOT/'src/assets.js').write_text('window.MB_ASSETS='+json.dumps(paths)+';',encoding='utf-8')
embedded={k:'data:'+('audio/mpeg' if v.endswith('.mp3') else 'image/webp')+';base64,'+base64.b64encode((ROOT/v).read_bytes()).decode() for k,v in paths.items()}
html=(ROOT/'index.html').read_text();css=(ROOT/'src/style.css').read_text();assert css.count('{')==css.count('}')
html=html.replace('<link rel="stylesheet" href="src/style.css">','<style>'+css+'</style>')
icon='data:image/svg+xml;base64,'+base64.b64encode((ROOT/'assets/icon.svg').read_bytes()).decode();html=html.replace('assets/icon.svg',icon)
for k in ['assets','engine','audio','game']:
 code='window.MB_ASSETS='+json.dumps(embedded)+';' if k=='assets' else (ROOT/'src'/f'{k}.js').read_text()
 html=html.replace(f'<script src="src/{k}.js"></script>','<script>\n'+code+'\n</script>')
out=ROOT.parent/'Moonburrow.html';out.write_text(html,encoding='utf-8')
(ROOT/'build-info.json').write_text(json.dumps({'version':'1.0.0','size':out.stat().st_size,'sha256':hashlib.sha256(out.read_bytes()).hexdigest()},indent=2))
print(out,out.stat().st_size,'bytes')
