"""Export the saved motion repair/pilot drawings using Aseprite only."""
from pathlib import Path
import subprocess,json
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)]
 p=subprocess.run(args,cwd=ROOT,capture_output=True,text=True)
 if p.returncode:raise RuntimeError(p.stdout+p.stderr)
for direction in ['south','west','east','north']:
 stem=f'walk_surly_{direction}_keys_v8'
 run('export_direction_keys.lua',source=f'art/source/{stem}.png',boxes=f'art/source/{stem}.boxes.lua',height=54,output=f'art/sprites/surly_{direction}_pilot_v8.png')
run('compose_motion_revision.lua',mode='surly_pilot',output='art/sprites/surly_walk_pilot_v8.png')
run('export_atlas_previews.lua',source='art/sprites/surly_walk_pilot_v8.png',prefix='art/previews/surly_walk_pilot_v8',cycle=0.64)
for direction in ['south','north']:
 stem=f'fiddler_run_{direction}_keys_v3'
 run('export_direction_keys.lua',source=f'art/source/{stem}.png',boxes=f'art/source/{stem}.boxes.lua',height=50,gait='run',output=f'art/sprites/{stem}.png')
run('compose_motion_revision.lua',mode='fiddler_run',output='art/sprites/fiddler_run_v3.png')
run('repair_walk_contacts.lua',source='art/sprites/fiddler_run_v3.png',output='art/sprites/fiddler_run_contacts_v3.png',character='fiddler')
run('export_atlas_previews.lua',source='art/sprites/fiddler_run_contacts_v3.png',prefix='art/previews/fiddler_run_contacts_v3',cycle=0.4)
for direction in ['west','east']:
 stem=f'fiddler_walk_{direction}_keys_v9'
 run('export_direction_keys.lua',source=f'art/source/{stem}.png',boxes=f'art/source/{stem}.boxes.lua',height=50,output=f'art/sprites/{stem}.png')
# Contact-only fixes can be reproduced independently of these generated trials.
for entry in json.loads((ROOT/'content/walk_contact_repairs.json').read_text())['jobs']:
 run('repair_walk_contacts.lua',**entry)
 run('export_atlas_previews.lua',source=entry['output'],prefix=f"art/previews/{entry['character']}_walk_contacts_v1",cycle=0.64)

stem='fiddler_walk_west_keys_v10'
run('export_direction_keys.lua',source=f'art/source/{stem}.png',boxes=f'art/source/{stem}.boxes.lua',height=50,output=f'art/sprites/{stem}.png')
run('compose_fiddler_walk.lua',west='art/sprites/fiddler_walk_west_keys_v10.png',east='art/sprites/fiddler_walk_east_keys_v9.png',output='art/sprites/fiddler_walk_side_v10.png')
run('export_atlas_previews.lua',source='art/sprites/fiddler_walk_side_v10.png',prefix='art/previews/fiddler_walk_side_v10',cycle=0.64)
