diff --git a/ps.deploy.js b/ps.deploy.js index 1aa6cc34..1ff45db4 100644 --- a/ps.deploy.js +++ b/ps.deploy.js @@ -1,19 +1,61 @@ -function toID(name) { +// function toID(name) { +// return name.toLowerCase().replace(/[^a-z0-9]+/g, ''); +// } + +// function spritecopy(f, {dir, ext}) { +// const sn = spritedata.parseFilename(f.name); +// let name; +// if (sn.extension) { +// name = toID(sn.name); +// } else { +// const sd = spritedata.get(sn.id); +// debug(sd); +// name = toID(sd.base); +// if (sd.forme) { +// name += `-${toID(sd.forme)}`; +// } +// } +// if (sn.extra.has("f")) { +// name += "-f"; +// } +// if (sn.extra.has("g")) { +// name += "-gmax"; +// } +// if (sn.extra.has("b")) { +// dir += "-back"; +// } +// if (sn.extra.has("s")) { +// dir += "-shiny"; +// } +// copy(f, {dir, ext, name}); +// } + +function toPSID(name) { return name.toLowerCase().replace(/[^a-z0-9]+/g, ''); } -function spritecopy(f, {dir, ext}) { +function spritecopy(f, {dir, ext}, allowUnknown=false) { const sn = spritedata.parseFilename(f.name); let name; + + // Skip asymmetrical for now + if (sn.extra.has("a") || sn.extra.has("b") || sn.extra.has("s")) { + return; + } + if (sn.extension) { - name = toID(sn.name); + if (allowUnknown && sn.extension && sn.name === "Unknown") { + name = "unknown" + } else { + // Skip this, we don't use Unknown/Substitute + return; + } } else { const sd = spritedata.get(sn.id); - debug(sd); - name = toID(sd.base); + name = toPSID(sd.base); if (sd.forme) { - name += `-${toID(sd.forme)}`; + name += `-${toPSID(sd.forme)}`; } } if (sn.extra.has("f")) { @@ -22,53 +64,57 @@ function spritecopy(f, {dir, ext}) { if (sn.extra.has("g")) { name += "-gmax"; } - if (sn.extra.has("b")) { - dir += "-back"; - } - if (sn.extra.has("s")) { - dir += "-shiny"; - } + copy(f, {dir, ext, name}); } +let seenModels = new Set; + for (const f of list("src/models")) { + seenModels.add(f.name); spritecopy(f, {dir: "ani"}); } -for (const f of list("src/sprites/gen5")) { - spritecopy(f, {dir: "gen5ani"}); +for (const f of list("build/gen10-modelslike")) { + if (seenModels.has(f.name)) continue; + seenModels.add(f.name); + spritecopy(f, {dir: "ani"}); } -for (const f of list("src/afd")) { - spritecopy(f, {dir: "afd"}); -} +// for (const f of list("src/sprites/gen5")) { +// spritecopy(f, {dir: "gen5ani"}); +// } -for (const f of list("build/padded-dex")) { - spritecopy(f, {dir: "dex"}); -} +// for (const f of list("src/afd")) { +// spritecopy(f, {dir: "afd"}); +// } -function fixType(name) { - return name.replace("Unknown", "???"); -} +// for (const f of list("build/padded-dex")) { +// spritecopy(f, {dir: "dex"}); +// } -for (const f of list("src/canonical/ui/types/gen4").concat(list("src/noncanonical/ui/types/gen4"))) { - copy(f, {dir: "types", name: fixType(f.name)}); -} +// function fixType(name) { +// return name.replace("Unknown", "???"); +// } -for (const f of list("src/canonical/ui/categories/gen4")) { - copy(f, {dir: "categories"}); -} -copy("src/noncanonical/ui/categories/undefined.png", {dir: "categories"}); +// for (const f of list("src/canonical/ui/types/gen4").concat(list("src/noncanonical/ui/types/gen4"))) { +// copy(f, {dir: "types", name: fixType(f.name)}); +// } -copy("src/canonical/ui/battle/Alpha.png", {dir: "misc"}); -copy("src/canonical/ui/battle/Mega.png", {dir: "misc"}); -copy("src/canonical/ui/battle/Omega.png", {dir: "misc"}); - -// TODO: reenable when trainers are moved -// dest("trainers"); -// sel("build/padded-trainers/canonical"); +// for (const f of list("src/canonical/ui/categories/gen4")) { +// copy(f, {dir: "categories"}); +// } +// copy("src/noncanonical/ui/categories/undefined.png", {dir: "categories"}); -copy("build/ps/pokemonicons-pokeball-sheet.png", {dir: "."}); -copy("build/ps/pokemonicons-sheet.png", {dir: "."}); -//copy("build/ps/trainers-sheet.png", {dir: "."}); -copy("build/ps/itemicons-sheet.png", {dir: "."}); +// copy("src/canonical/ui/battle/Alpha.png", {dir: "misc"}); +// copy("src/canonical/ui/battle/Mega.png", {dir: "misc"}); +// copy("src/canonical/ui/battle/Omega.png", {dir: "misc"}); + +// // TODO: reenable when trainers are moved +// // dest("trainers"); +// // sel("build/padded-trainers/canonical"); + +// copy("build/ps/pokemonicons-pokeball-sheet.png", {dir: "."}); +// copy("build/ps/pokemonicons-sheet.png", {dir: "."}); +// //copy("build/ps/trainers-sheet.png", {dir: "."}); +// copy("build/ps/itemicons-sheet.png", {dir: "."}); diff --git a/updateminisprites.sh b/updateminisprites.sh new file mode 100755 index 00000000..3c8a3f64 --- /dev/null +++ b/updateminisprites.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +set -ex + +cd ~/smogon/sprites +./build.sh + +# Update dex +cd ~/smogon/smogon.com/run +rm -rf ~/smogon/sprites/build/smogon/spritesheetoutput +pnpm exec esbuild ~/smogon/sprites/build/smogon/spritesheet.css --asset-names='[name]-[hash]' --entry-names='[name]-[hash]' --loader:.webp=copy --minify --allow-overwrite --bundle --outdir=/home/monsanto/smogon/sprites/build/smogon/spritesheetoutput +zopfli ~/smogon/sprites/build/smogon/spritesheetoutput/spritesheet-*.css +brotli -9 ~/smogon/sprites/build/smogon/spritesheetoutput/spritesheet-*.css +rsync ~/smogon/sprites/build/smogon/spritesheetoutput/* smogon:/smog2/sprites/assets +python -c 'import re; import pathlib; print(re.match(r"spritesheet(.*)\.css", str(list(pathlib.Path("/home/monsanto/smogon/sprites/build/smogon/spritesheetoutput/.").glob("spritesheet-*.css"))[0].name)).group(1))' | ssh smogon 'cat > /smog2/dex/spritesheet_css_suffix.txt' +ssh smogon 'systemctl reload dex' + +# Update forum minisprites +cd /home/monsanto/smogon/sprites +rm -rf deploy/smogon +node tools/deploy run smogon.deploy.js -o deploy/smogon +rsync -a deploy/smogon/forumsprites/ smogon:/smog2/forumsprites/minisprites +rsync -a deploy/smogon/xyicons/ smogon:/smog2/sprites/xyicons diff --git a/updatepmdsprites.sh b/updatepmdsprites.sh new file mode 100755 index 00000000..d0493b9b --- /dev/null +++ b/updatepmdsprites.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -ex + +cd /home/monsanto/smogon/sprites +./build.sh +rm -rf deploy/smogon +node tools/deploy run smogon.deploy.js -o deploy/smogon + +# Note: the /forums/media/pmd directory should probably stay the same; we can redirect those I guess +rsync -a deploy/smogon/pmd/ smogon:/smog2/forumsprites/pmd