pokemon-showdown-client/build-tools/build-minidex
Guangcong Luo 502f340438 Update for no-globals refactor
Ironically we already weren't using globals, so this is just the
`Dex.getId` -> `Dex.toID` rename.
2020-08-08 13:00:09 -05:00

101 lines
2.6 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
const fs = require("fs");
const path = require("path");
process.chdir(path.resolve(__dirname, '..'));
const imageSize = require('image-size');
const Dex = require('./../data/pokemon-showdown/.sim-dist/dex').Dex;
const toID = Dex.toID;
process.stdout.write("Updating animated sprite dimensions... ");
let buf = `/*
DO NOT EDIT
THIS FILE IS AUTOGENERATED BY ./build-tools/build-minidex
*/
exports.BattlePokemonSprites = {
substitute:{exists:false, front:{w:34, h:39}, back:{w:37, h:38}},
`;
let g5buf = `/*
DO NOT EDIT
THIS FILE IS AUTOGENERATED BY ./build-tools/build-minidex
*/
exports.BattlePokemonSpritesBW = {
`;
function sizeObj(path) {
try {
let size = imageSize(path);
return {
w: size.width,
h: size.height,
};
} catch (e) {}
}
function updateSizes() {
for (let baseid in Dex.data.Pokedex) {
let species = Dex.getSpecies(baseid);
for (let formeName of [''].concat(species.cosmeticFormes || [])) {
let spriteid = species.spriteid;
if (formeName) spriteid += '-' + toID(formeName).slice(species.id.length);
let id = toID(spriteid);
{
let row = {num: species.num};
const frontSize = sizeObj('sprites/ani/' + spriteid + '.gif');
if (frontSize) row.front = frontSize;
const frontSizeF = sizeObj('sprites/ani/' + spriteid + '-f.gif');
if (frontSizeF) row.frontf = frontSizeF;
const backSize = sizeObj('sprites/ani-back/' + spriteid + '.gif');
if (backSize) row.back = backSize;
const backSizeF = sizeObj('sprites/ani-back/' + spriteid + '-f.gif');
if (backSizeF) row.backf = backSizeF;
if (row.front || row.back || !row.forme) {
buf += `\t${id}:` + JSON.stringify(row).replace(/"/g, '') + `,\n`;
}
}
{
let g5row = {num: species.num};
const frontSize = sizeObj('sprites/gen5ani/' + spriteid + '.gif');
if (frontSize) g5row.front = frontSize;
const frontSizeF = sizeObj('sprites/gen5ani/' + spriteid + '-f.gif');
if (frontSizeF) g5row.frontf = frontSizeF;
const backSize = sizeObj('sprites/gen5ani-back/' + spriteid + '.gif');
if (backSize) g5row.back = backSize;
const backSizeF = sizeObj('sprites/gen5ani-back/' + spriteid + '-f.gif');
if (backSizeF) g5row.backf = backSizeF;
if (g5row.front || g5row.back || !g5row.forme) {
g5buf += `\t${id}:` + JSON.stringify(g5row).replace(/"/g, '') + `,\n`;
}
}
}
}
buf = buf.slice(0, -2) + `
};
`;
g5buf = g5buf.slice(0, -2) + `
};
`;
fs.writeFileSync('data/pokedex-mini.js', buf);
fs.writeFileSync('data/pokedex-mini-bw.js', g5buf);
}
if (fs.existsSync('sprites/')) {
updateSizes();
console.log('DONE');
} else {
console.log('SKIPPED');
}