From aa8e8eeb11b734760880dc0997841b571e173dac Mon Sep 17 00:00:00 2001 From: Christopher Monsanto Date: Sat, 25 Mar 2023 23:12:59 -0400 Subject: [PATCH] first attempt at smogdex spritesheet --- Tupfile.lua | 14 ++ pnpm-lock.yaml | 178 ++++++++++++------------- tools/smogdexspritesheet/index.ts | 48 +++++++ tools/smogdexspritesheet/package.json | 9 ++ tools/smogdexspritesheet/tsconfig.json | 6 + tools/sprites/package.json | 1 - tools/sprites/ps.js | 46 ------- tsconfig-workspace.json | 1 + 8 files changed, 165 insertions(+), 138 deletions(-) create mode 100755 tools/smogdexspritesheet/index.ts create mode 100644 tools/smogdexspritesheet/package.json create mode 100644 tools/smogdexspritesheet/tsconfig.json delete mode 100644 tools/sprites/package.json delete mode 100755 tools/sprites/ps.js diff --git a/Tupfile.lua b/Tupfile.lua index 62bc9868..a3fbaad5 100644 --- a/Tupfile.lua +++ b/Tupfile.lua @@ -106,6 +106,20 @@ rule( "build/ps/pokemonicons-pokeball-sheet.png" ) + +-- Smogdex spritesheet + + +rule( + spriteglob({"src/minisprites/pokemon/gen6/*", "src/minisprites/items/*"}, {a = false}), + { + display="smogdex sheet", + "node tools/smogdexspritesheet --image build/smogon/spritesheet.png --stylesheet build/smogon/spritesheet.css -- %f", + compresspng{config="SPRITESHEET", output="build/smogon/spritesheet.png"} + }, + {"build/smogon/spritesheet.png", "build/smogon/spritesheet.css"} +) + -- Smogdex social images local input = spriteglob({"src/models/*", "src/gen9species/*"}, {b = false, s = false}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dbf40b8a..eca09100 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,15 +46,15 @@ importers: dependencies: make-promises-safe: 5.1.0 - tools/sprites: + tools/smogdexspritesheet: specifiers: + '@types/spritesmith': ^3.4.1 commander: ^5.0.0 - make-promises-safe: ^5.1.0 - spritesmith: ^3.4.0 + spritesmith: ^3.4.1 dependencies: - commander: 5.0.0 - make-promises-safe: 5.1.0 - spritesmith: 3.4.0 + '@types/spritesmith': 3.4.1 + commander: 5.1.0 + spritesmith: 3.4.1 tools/trim: specifiers: @@ -119,6 +119,10 @@ packages: resolution: {integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==} dev: false + /@types/expect/1.20.4: + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} + dev: false + /@types/integer/1.0.1: resolution: {integrity: sha512-DmZDpSVnsuBrOhtHwE1oKmUJ3qVjHhhNQ7WnZy9/RhH3A24Ar+9o4SoaCWcTzQhalpRDIAMsfdoZLWNJtdBR7A==} dev: false @@ -155,10 +159,23 @@ packages: resolution: {integrity: sha512-kzGNJZ57XEH7RdckxZ7wfRjB9hgZABF+NLgR1B2zogUvV0gmK0/60VYA4yb4oKZckPiiJlmmfpdqTfCN0VRX+Q==} dev: false + /@types/spritesmith/3.4.1: + resolution: {integrity: sha512-lVha705aqeOCztcZiRx7/v15uLH9cB4SXJ+HNHme0wh8uq0BYH8BjPvWiJmsh0BdOFFGKv3Zwsam/yfq9sQxAA==} + dependencies: + '@types/vinyl': 2.0.7 + dev: false + /@types/stack-utils/1.0.1: resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} dev: true + /@types/vinyl/2.0.7: + resolution: {integrity: sha512-4UqPv+2567NhMQuMLdKAyK4yzrfCqwaTt6bLhHEs8PFcxbHILsrxaY63n4wgE/BRLDWDQeI+WcTmkXKExh9hQg==} + dependencies: + '@types/expect': 1.20.4 + '@types/node': 18.15.8 + dev: false + /@types/yargs-parser/15.0.0: resolution: {integrity: sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==} dev: true @@ -259,20 +276,20 @@ packages: dev: false /assert-plus/1.0.0: - resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=} + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} dev: false /async/0.9.2: - resolution: {integrity: sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=} + resolution: {integrity: sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==} dev: false /asynckit/0.4.0: - resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=} + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false /aws-sign2/0.7.0: - resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=} + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: false /aws4/1.10.0: @@ -288,7 +305,7 @@ packages: dev: false /bcrypt-pbkdf/1.0.2: - resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=} + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: false @@ -303,7 +320,7 @@ packages: dev: false /bin-pack/1.0.2: - resolution: {integrity: sha1-wqAU7b8L7XCjKSBi7UZXe5YSBnk=} + resolution: {integrity: sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==} dev: false /binary-extensions/2.1.0: @@ -356,7 +373,7 @@ packages: dev: true /caseless/0.12.0: - resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=} + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: false /chalk/2.4.2: @@ -404,11 +421,11 @@ packages: dev: true /clone-stats/0.0.1: - resolution: {integrity: sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=} + resolution: {integrity: sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==} dev: false /clone/1.0.4: - resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=} + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: false @@ -445,11 +462,6 @@ packages: delayed-stream: 1.0.0 dev: false - /commander/5.0.0: - resolution: {integrity: sha512-JrDGPAKjMGSP1G0DUoaceEJ3DZgAfr/q6X7FVk4+U5KxUSKviYGM2k6zWkfyyBHy5rAtzgYJFa1ro2O9PtoxwQ==} - engines: {node: '>= 6'} - dev: false - /commander/5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -460,7 +472,7 @@ packages: dev: true /concat-stream/1.5.2: - resolution: {integrity: sha1-cIl4Yk2FavQaWnQd790mHadSwmY=} + resolution: {integrity: sha512-H6xsIBfQ94aESBG8jGHXQ7i5AEpy5ZeVaLDOisDICiTCKpqEfr34/KmTrspKQNoLKNu9gTkovlpQcUi630AKiQ==} engines: {'0': node >= 0.8} dependencies: inherits: 2.0.4 @@ -473,7 +485,7 @@ packages: dev: false /contentstream/1.0.0: - resolution: {integrity: sha1-C9z6RtowRkqGzo+n7OVlQQ3G+aU=} + resolution: {integrity: sha512-jqWbfFZFG9tZbdej7+TzXI4kanABh3BLtTWY6NxqTK5zo6iTIeo5aq4iRVfYsLQ0y8ccQqmJR/J4NeMmEdnR2w==} engines: {node: '>= 0.8.0'} dependencies: readable-stream: 1.0.34 @@ -484,20 +496,20 @@ packages: dev: false /cwise-compiler/1.1.3: - resolution: {integrity: sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=} + resolution: {integrity: sha512-WXlK/m+Di8DMMcCjcWr4i+XzcQra9eCdXIJrgh4TUgh0pIS/yJduLxS9JgefsHJ/YVLdgPtXm9r62W92MvanEQ==} dependencies: uniq: 1.0.1 dev: false /dashdash/1.14.1: - resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=} + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} dependencies: assert-plus: 1.0.0 dev: false /data-uri-to-buffer/0.0.3: - resolution: {integrity: sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo=} + resolution: {integrity: sha512-Cp+jOa8QJef5nXS5hU7M1DWzXPEIoVR3kbV0dQuVGwROZg8bGf1DcCnkmajBTnvghTtSNMUdRrPjgaT6ZQucbw==} dev: false /debug/3.2.6_supports-color@7.1.0: @@ -548,7 +560,7 @@ packages: dev: true /delayed-stream/1.0.0: - resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=} + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: false @@ -573,7 +585,7 @@ packages: dev: true /ecc-jsbn/0.1.2: - resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=} + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 @@ -669,7 +681,7 @@ packages: dev: false /extsprintf/1.3.0: - resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=} + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} dev: false @@ -708,7 +720,7 @@ packages: dev: true /first-chunk-stream/1.0.0: - resolution: {integrity: sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=} + resolution: {integrity: sha512-ArRi5axuv66gEsyl3UuK80CzW7t56hem73YGNYxNWTGNKFJUadSb9Gu9SHijYEUi8ulQMf1bJomYNwSCPHhtTQ==} engines: {node: '>=0.10.0'} dev: false @@ -721,7 +733,7 @@ packages: dev: true /forever-agent/0.6.1: - resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=} + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: false /form-data/2.3.3: @@ -783,7 +795,7 @@ packages: dependencies: data-uri-to-buffer: 0.0.3 jpeg-js: 0.3.7 - mime-types: 2.1.26 + mime-types: 2.1.27 ndarray: 1.0.19 ndarray-pack: 1.2.1 node-bitmap: 0.0.1 @@ -795,13 +807,13 @@ packages: dev: false /getpass/0.1.7: - resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=} + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: assert-plus: 1.0.0 dev: false /gif-encoder/0.4.3: - resolution: {integrity: sha1-iitP6MqJWkjjoLbLs0CgpqNXGJk=} + resolution: {integrity: sha512-HMfSa+EIng62NbDhM63QGYoc49/m8DcZ9hhBtw+CXX9mKboSpeFVxjZ2WEWaMFZ14MUjfACK7jsrxrJffIVrCg==} engines: {node: '>= 0.8.0'} dependencies: readable-stream: 1.1.14 @@ -829,13 +841,8 @@ packages: path-is-absolute: 1.0.1 dev: true - /graceful-fs/4.2.3: - resolution: {integrity: sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==} - dev: false - /graceful-fs/4.2.4: resolution: {integrity: sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==} - dev: true /growl/1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} @@ -843,7 +850,7 @@ packages: dev: true /har-schema/2.0.0: - resolution: {integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=} + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} dev: false @@ -888,7 +895,7 @@ packages: dev: true /http-signature/1.2.0: - resolution: {integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=} + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} dependencies: assert-plus: 1.0.0 @@ -915,7 +922,7 @@ packages: dev: false /iota-array/1.0.0: - resolution: {integrity: sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=} + resolution: {integrity: sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA==} dev: false /is-arguments/1.0.4: @@ -1010,15 +1017,15 @@ packages: dev: true /is-typedarray/1.0.0: - resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=} + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: false /is-utf8/0.2.1: - resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=} + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: false /isarray/0.0.1: - resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=} + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} dev: false /isarray/1.0.0: @@ -1034,7 +1041,7 @@ packages: dev: true /isstream/0.1.2: - resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=} + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: false /iterate-iterator/1.0.1: @@ -1093,7 +1100,7 @@ packages: dev: true /jpeg-js/0.0.4: - resolution: {integrity: sha1-Bqr0fv7HrwsZJKWc1pWm0rXthw4=} + resolution: {integrity: sha512-j0eTIGc27+JNn+ovc2SSRxVn+WPslGytsJYzjZqQWKv5ikzetzUQc2FCvbW8MtjjuOUq9eNt+G7Y1lkZbS2XXQ==} dev: false /jpeg-js/0.3.7: @@ -1113,7 +1120,7 @@ packages: dev: true /jsbn/0.1.1: - resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=} + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: false /json-schema-traverse/0.4.1: @@ -1121,15 +1128,15 @@ packages: dev: false /json-schema/0.2.3: - resolution: {integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=} + resolution: {integrity: sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==} dev: false /json-stringify-safe/5.0.1: - resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=} + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: false /jsprim/1.4.1: - resolution: {integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=} + resolution: {integrity: sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog==} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -1139,7 +1146,7 @@ packages: dev: false /layout/2.2.0: - resolution: {integrity: sha1-MeRL/BjdEBmz/7II5AKku/4uavQ=} + resolution: {integrity: sha512-+kdgg25XW11BA4cl9vF+SH01HaBipld2Nf/PlU2kSYncAbdUbDoahzrlh6yhR93N/wR2TGgcFoxebzR1LKmZUg==} engines: {node: '>= 0.8.0'} dependencies: bin-pack: 1.0.2 @@ -1179,23 +1186,11 @@ packages: picomatch: 2.2.2 dev: true - /mime-db/1.43.0: - resolution: {integrity: sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==} - engines: {node: '>= 0.6'} - dev: false - /mime-db/1.44.0: resolution: {integrity: sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==} engines: {node: '>= 0.6'} dev: false - /mime-types/2.1.26: - resolution: {integrity: sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.43.0 - dev: false - /mime-types/2.1.27: resolution: {integrity: sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==} engines: {node: '>= 0.6'} @@ -1282,13 +1277,13 @@ packages: dev: false /ndarray-ops/1.2.2: - resolution: {integrity: sha1-WeiNLDKn7ryxvGkPrhQVeVV6YU4=} + resolution: {integrity: sha512-BppWAFRjMYF7N/r6Ie51q6D4fs0iiGmeXIACKY66fLpnwIui3Wc3CXiD/30mgLbDjPpSLrsqcp3Z62+IcHZsDw==} dependencies: cwise-compiler: 1.1.3 dev: false /ndarray-pack/1.2.1: - resolution: {integrity: sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=} + resolution: {integrity: sha512-51cECUJMT0rUZNQa09EoKsnFeDL4x2dHRT0VR5U2H5ZgEcm95ZDWcMA5JShroXjHOejmAD/fg8+H+OvUnVXz2g==} dependencies: cwise-compiler: 1.1.3 ndarray: 1.0.19 @@ -1308,7 +1303,7 @@ packages: dev: false /node-bitmap/0.0.1: - resolution: {integrity: sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=} + resolution: {integrity: sha512-Jx5lPaaLdIaOsj2mVLWMWulXF6GQVdyLvNSxmiYCvZ8Ma2hfKX0POoR2kgKOqz+oFsRreq0yYZjQ2wjE9VNzCA==} engines: {node: '>=v0.6.5'} dev: false @@ -1340,7 +1335,7 @@ packages: dev: false /obj-extend/0.1.0: - resolution: {integrity: sha1-u0SKR3X7les0p4H5CLusLfI9u1s=} + resolution: {integrity: sha512-or9c7Ue2wWCun41DuLP3+LKEUjSZcDSxfCM4HZQSX9tcjLL/yuzTW7MmtVNs+MmN16uDRpDrFmFK/WVSm4vklg==} dev: false /object-assign/4.1.1: @@ -1403,7 +1398,7 @@ packages: dev: true /parse-data-uri/0.2.0: - resolution: {integrity: sha1-vwTYUd1ch7CrI45dAazklLYEtMk=} + resolution: {integrity: sha512-uOtts8NqDcaCt1rIsO3VFDRsAfgE4c6osG4d9z3l4dCBlxYFzni6Di/oNU270SDrjkfZuUvLZx1rxMyqh46Y9w==} dependencies: data-uri-to-buffer: 0.0.3 dev: false @@ -1424,7 +1419,7 @@ packages: dev: true /performance-now/2.1.0: - resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=} + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false /picomatch/2.2.2: @@ -1439,7 +1434,7 @@ packages: async: 0.9.2 concat-stream: 1.5.2 get-pixels: 3.3.2 - mime-types: 2.1.26 + mime-types: 2.1.27 ndarray: 1.0.19 obj-extend: 0.1.0 save-pixels: 2.3.4 @@ -1447,7 +1442,7 @@ packages: dev: false /pngjs-nozlib/1.0.0: - resolution: {integrity: sha1-nmTWAs/pzOTZ1Zl9BodCmnPwt9c=} + resolution: {integrity: sha512-N1PggqLp9xDqwAoKvGohmZ3m4/N9xpY0nDZivFqQLcpLHmliHnCp9BuNCsOeqHWMuEEgFjpEaq9dZq6RZyy0fA==} engines: {iojs: '>= 1.0.0', node: '>=0.10.0'} dev: false @@ -1489,7 +1484,7 @@ packages: dev: true /process-nextick-args/1.0.7: - resolution: {integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=} + resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} dev: false /process-nextick-args/2.0.1: @@ -1549,7 +1544,7 @@ packages: dev: true /readable-stream/1.0.34: - resolution: {integrity: sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=} + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} dependencies: core-util-is: 1.0.2 inherits: 2.0.4 @@ -1558,7 +1553,7 @@ packages: dev: false /readable-stream/1.1.14: - resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=} + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} dependencies: core-util-is: 1.0.2 inherits: 2.0.4 @@ -1567,7 +1562,7 @@ packages: dev: false /readable-stream/2.0.6: - resolution: {integrity: sha1-j5A0HmilPMySh4jaz80Rs265t44=} + resolution: {integrity: sha512-TXcFfb63BQe1+ySzsHZI/5v1aJPCShfqvWJ64ayNImXMsN1Cd0YGk/wm8KB7/OeessgPc9QvS9Zou8QTkFzsLw==} dependencies: core-util-is: 1.0.2 inherits: 2.0.4 @@ -1606,7 +1601,7 @@ packages: dev: true /replace-ext/0.0.1: - resolution: {integrity: sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=} + resolution: {integrity: sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==} engines: {node: '>= 0.4'} dev: false @@ -1662,7 +1657,7 @@ packages: dev: false /save-pixels/2.3.4: - resolution: {integrity: sha1-SdNJwGuNfAEn2/DaJLRKylr7Wf4=} + resolution: {integrity: sha512-43ag1pqqpHWYHvg9AW2OpF7wy2aR1tOci1mJ9y4AHFMb1NfzC8IipqHmuQRhmdHQEIhsuLSnWZYF6bqtXWttew==} dependencies: contentstream: 1.0.0 gif-encoder: 0.4.3 @@ -1674,7 +1669,7 @@ packages: dev: false /semver/5.0.3: - resolution: {integrity: sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=} + resolution: {integrity: sha512-5OkOBiw69xqmxOFIXwXsiY1HlE+om8nNptg1ZIf95fzcnfgOv2fLm7pmmGbRJsjJIqPpW5Kwy4wpDBTz5wQlUw==} hasBin: true dev: false @@ -1717,8 +1712,8 @@ packages: resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=} dev: true - /spritesmith/3.4.0: - resolution: {integrity: sha512-epa/Ib2GzkrzOA6ZMKH+YOX4ooBlRz8JwIV5NQDt9FvqXVHTh4dVn/0oA+n5eeu6wem1CCrtZWODlOqvwXXpyA==} + /spritesmith/3.4.1: + resolution: {integrity: sha512-NQZ8c7bZKbtqc0n0V+vVpurV72BwziOXw8AAU/nOdrjcjgCVoy+XUoopbrAYaNfJJgK730U98SB579+YtzfUJw==} engines: {node: '>= 4.0.0'} dependencies: concat-stream: 1.5.2 @@ -1791,7 +1786,7 @@ packages: dev: true /string_decoder/0.10.31: - resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=} + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: false /string_decoder/1.1.1: @@ -1827,7 +1822,7 @@ packages: dev: true /strip-bom-stream/1.0.0: - resolution: {integrity: sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=} + resolution: {integrity: sha512-7jfJB9YpI2Z0aH3wu10ZqitvYJaE0s5IzFuWE+0pbb4Q/armTloEUShymkDO47YSLnjAW52mlXT//hs9wXNNJQ==} engines: {node: '>=0.10.0'} dependencies: first-chunk-stream: 1.0.0 @@ -1835,7 +1830,7 @@ packages: dev: false /strip-bom/2.0.0: - resolution: {integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=} + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} engines: {node: '>=0.10.0'} dependencies: is-utf8: 0.2.1 @@ -1898,7 +1893,7 @@ packages: dev: false /through/2.3.8: - resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=} + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: false /through2/2.0.5: @@ -1930,11 +1925,11 @@ packages: dev: false /tweetnacl/0.14.5: - resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=} + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: false /typedarray/0.0.6: - resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=} + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: false /typescript/5.0.2: @@ -1944,7 +1939,7 @@ packages: dev: true /uniq/1.0.1: - resolution: {integrity: sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=} + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} dev: false /uri-js/4.2.2: @@ -1959,11 +1954,12 @@ packages: /uuid/3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true dev: false /verror/1.10.0: - resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=} + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} dependencies: assert-plus: 1.0.0 @@ -1972,17 +1968,17 @@ packages: dev: false /vinyl-file/1.3.0: - resolution: {integrity: sha1-qgVjTTqGe6kUR77bs0r8sm9E9uc=} + resolution: {integrity: sha512-i1CGRaiDs3qJ+Yc8cgtOnrZOwlhY02oDBrWSBKD9uYSsxqQG1RhNXLmR/orke0ye0sbKpVtAUHwhF2rs9A46cQ==} engines: {node: '>=0.10.0'} dependencies: - graceful-fs: 4.2.3 + graceful-fs: 4.2.4 strip-bom: 2.0.0 strip-bom-stream: 1.0.0 vinyl: 1.2.0 dev: false /vinyl/1.2.0: - resolution: {integrity: sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=} + resolution: {integrity: sha512-Ci3wnR2uuSAWFMSglZuB8Z2apBdtOyz8CV7dC6/U1XbltXBC+IuutUkXQISz01P+US2ouBuesSbV6zILZ6BuzQ==} engines: {node: '>= 0.9'} dependencies: clone: 1.0.4 diff --git a/tools/smogdexspritesheet/index.ts b/tools/smogdexspritesheet/index.ts new file mode 100755 index 00000000..468782f0 --- /dev/null +++ b/tools/smogdexspritesheet/index.ts @@ -0,0 +1,48 @@ + +import program from 'commander' +import spritesmith from 'spritesmith' +import path from 'path' +import fs from 'fs' +import util from 'util'; +import * as spritedata from '@smogon/sprite-data'; + +program + .option('--image ', 'where to put image') + .option('--stylesheet ', 'where to put stylesheet') + .parse(process.argv) + +const run = util.promisify(spritesmith.run); + +let result = await run({ + src: program.args +}); + +function toPSID(s:string) { + return s.toLowerCase().replace(/[^a-z0-9]+/g, ''); +} + +let sprites = new Map; +for (let [filename, sprite] of Object.entries(result.coordinates)) { + let parsed = spritedata.parseFilename(path.parse(filename).name); + if (parsed.extension) { + sprites.set(toPSID(parsed.name),sprite); + continue; + } + let data = spritedata.get(parsed.id); + if (data.type === 'specie') { + sprites.set(toPSID(data.base + data.forme), sprite); + } else { + for (let name of data.names) { + sprites.set(toPSID(name), sprite); + } + } +} + +let stylesheet = ""; +for (let [id, sprite] of sprites) { + stylesheet += `.sprite-${id}{background-position:${sprite.x}px ${sprite.y}px;width:${sprite.width}px;height:${sprite.height}px}`; +} + +fs.writeFileSync(program.image, result.image, 'binary'); +fs.writeFileSync(program.stylesheet, stylesheet); + diff --git a/tools/smogdexspritesheet/package.json b/tools/smogdexspritesheet/package.json new file mode 100644 index 00000000..f0b24e21 --- /dev/null +++ b/tools/smogdexspritesheet/package.json @@ -0,0 +1,9 @@ +{ + "main": "./dist/index.js", + "type": "module", + "dependencies": { + "@types/spritesmith": "^3.4.1", + "commander": "^5.0.0", + "spritesmith": "^3.4.1" + } +} diff --git a/tools/smogdexspritesheet/tsconfig.json b/tools/smogdexspritesheet/tsconfig.json new file mode 100644 index 00000000..e37f4e41 --- /dev/null +++ b/tools/smogdexspritesheet/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig-base", + "compilerOptions": { + "outDir": "dist", + } +} diff --git a/tools/sprites/package.json b/tools/sprites/package.json deleted file mode 100644 index b67a2664..00000000 --- a/tools/sprites/package.json +++ /dev/null @@ -1 +0,0 @@ -{"dependencies":{"commander":"^5.0.0","make-promises-safe":"^5.1.0","spritesmith":"^3.4.0"}} diff --git a/tools/sprites/ps.js b/tools/sprites/ps.js deleted file mode 100755 index e2cfd0cb..00000000 --- a/tools/sprites/ps.js +++ /dev/null @@ -1,46 +0,0 @@ - -require('make-promises-safe'); - -const program = require('commander'); -const spritesmith = require('spritesmith'); -const path = require('path'); -const fs = require('fs'); -const util = require('util'); - -const run = util.promisify(spritesmith.run); - -program - .option('--output-image ', 'where to put image') - .option('--output-metadata ', 'where to put JSON metadata') - .parse(process.argv); - -const files = []; - -for (const directory of program.args) { - for (const file of fs.readdirSync(directory)) { - files.push(path.join(directory, file)); - } -} - -function decode(s) { - return s.replace(/__(....)/g, (_, m) => String.fromCharCode(parseInt(m, 16))).replace("_", " "); -} - -function toPSID(s) { - return s.toLowerCase().replace(/[^a-z0-9]+/g, ''); -} - -(async () => { - const result = await run({ - src: files, - }); - - const sprites = Object.create(null); - for (const [filename, {x, y, width, height}] of Object.entries(result.coordinates)) { - const id = toPSID(decode(path.parse(filename).name)); - sprites[id] = {left: x, top: y}; - } - - fs.writeFileSync(program.outputImage, result.image, 'binary'); - fs.writeFileSync(program.outputMetadata, JSON.stringify(sprites, null, 4)); -})(); diff --git a/tsconfig-workspace.json b/tsconfig-workspace.json index e4d2de53..6be29924 100644 --- a/tsconfig-workspace.json +++ b/tsconfig-workspace.json @@ -4,6 +4,7 @@ {"path": "tools/tupctime"}, {"path": "tools/deploy"}, {"path": "tools/sheet"}, + {"path": "tools/smogdexspritesheet"}, {"path": "tools/trim"}, {"path": "lib/root"}, {"path": "data/lib"},