import fs from "node:fs"; import { PATHS, DATA, CHAPTERS, UNIQUES_NAMES, UNIQUES_FRAMES } from "./shared"; import { spawn } from "child_process"; const SPECIALS = ["sp", "spm"]; function add_singles(chapter: string, sprite_name: string) { const img_name = `${sprite_name}.png`; if (!fs.existsSync(`${PATHS.TRANSLATION}/${img_name}`)) return; fs.copyFileSync( `${PATHS.TRANSLATION}/${img_name}`, `${PATHS.SORTED}/${chapter}/${img_name}` ); for (const special of SPECIALS) { if (fs.existsSync(`${PATHS.TRANSLATION}/${special}_${img_name}`)) { fs.copyFileSync( `${PATHS.TRANSLATION}/${special}_${img_name}`, `${PATHS.SORTED}/${chapter}/${special}_${img_name}` ); } } } function add_animations(chapter: string, sprite_name: string) { if ( fs.existsSync(`${PATHS.TRANSLATION}/${sprite_name}`) && !fs.existsSync(`${PATHS.SORTED}/${chapter}/${sprite_name}`) ) { if (UNIQUES_FRAMES.includes(sprite_name)) fs.cpSync( `${PATHS.TRANSLATION}/${sprite_name}`, `${PATHS.SORTED}/${chapter}/${sprite_name}`, { recursive: true, force: true } ); else fs.cpSync( `../_sprites/original/${chapter}/${sprite_name}`, `${PATHS.SORTED}/${chapter}/${sprite_name}`, { recursive: true, force: true } ); } else return; for (const special of SPECIALS) { if (fs.existsSync(`${PATHS.TRANSLATION}/${special}_${sprite_name}`)) { fs.cpSync( `../_sprites/original/${chapter}/${sprite_name}`, `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}`, { recursive: true, force: true } ); for (const file of fs.readdirSync( `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}` )) { const oldPath = `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${file}`; const newPath = `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${special}_${file}`; fs.renameSync(oldPath, newPath); } } } if (UNIQUES_FRAMES.includes(sprite_name)) return; const sprite_frames = DATA[chapter][sprite_name]; for (let frame of sprite_frames) { const img_name = `${sprite_name}_${frame}.png`; if (!fs.existsSync(`${PATHS.TRANSLATION}/${sprite_name}/${img_name}`)) continue; for (const special of SPECIALS) { if ( fs.existsSync( `${PATHS.TRANSLATION}/${special}_${sprite_name}/${special}_${img_name}` ) ) { fs.copyFileSync( `${PATHS.TRANSLATION}/${special}_${sprite_name}/${special}_${img_name}`, `${PATHS.SORTED}/${chapter}/${special}_${sprite_name}/${special}_${img_name}` ); } } fs.copyFileSync( `${PATHS.TRANSLATION}/${sprite_name}/${img_name}`, `${PATHS.SORTED}/${chapter}/${sprite_name}/${img_name}` ); } } for (const chapter of CHAPTERS) { if (!chapter.endsWith(".DS_Store")) { if (!fs.existsSync(`${PATHS.SORTED}`)) fs.mkdirSync(`${PATHS.SORTED}`); if (!fs.existsSync(`${PATHS.SORTED}/${chapter}`)) fs.mkdirSync(`${PATHS.SORTED}/${chapter}`); for (const sprite of Object.keys(DATA[chapter])) { const frames: any[] = DATA[chapter][sprite]; if (frames.length == 1) add_singles(chapter, sprite); else add_animations(chapter, sprite); } } } if (UNIQUES_NAMES != undefined) { for (const unique of UNIQUES_NAMES) { const uniqueChapter = unique.split("/")[0]; const uniqueName = unique.split("/")[1]; if (fs.existsSync(`${PATHS.TRANSLATION}/${uniqueName}.png`)) fs.copyFileSync( `${PATHS.TRANSLATION}/${uniqueName}.png`, `${PATHS.SORTED}/${uniqueChapter}/${uniqueName}.png` ); if (fs.existsSync(`${PATHS.TRANSLATION}/${uniqueName}`)) fs.cpSync( `${PATHS.TRANSLATION}/${uniqueName}`, `${PATHS.SORTED}/${uniqueChapter}/${uniqueName}`, { recursive: true, force: true } ); } } for (const chapter of CHAPTERS) { spawn("python3", [ "merge.py", `${PATHS.SORTED}/${chapter}`, `${PATHS.SORTED}-merged/${chapter}`, ]); } // TEST