136 lines
4.0 KiB
TypeScript
136 lines
4.0 KiB
TypeScript
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
|