"""Reproduce selected facial masks and Ganoes's native hair colour correction."""
from pathlib import Path
import json,subprocess
ROOT=Path(__file__).resolve().parents[1]
def run(script,**params):
 args=[str(Path.home()/'.local/bin/aseprite'),'-b']
 for key,value in params.items():args+=['--script-param',f'{key}={value}']
 args+=['--script',str(ROOT/'tools'/script)]
 result=subprocess.run(args,cwd=ROOT,capture_output=True,text=True)
 if result.returncode:raise RuntimeError(result.stdout+result.stderr)
for entry in json.loads((ROOT/'content/portrait_expression_masks.json').read_text())['portraits']:
 run('align_fishergirl_expression.lua',**{k:entry[k] for k in ('neutral','variant','output','regions')})
for emotion in ['neutral','proud','scowl','surprised']:
 source=f'art/portraits/ganoes/{emotion}_'+('v1' if emotion=='neutral' else 'locked_v1')+'.png'
 run('recolor_ganoes_hair.lua',source=source,output=f'art/portraits/ganoes/{emotion}_black_v2.png',limit=122)
for stem in ['ganoes_walk_v6','ganoes_idle_v4','ganoes_tiptoe_v3']:
 run('recolor_ganoes_hair.lua',source=f'art/sprites/{stem}.png',output=f'art/sprites/{stem}_black.png',mode='sprite',limit=34)
