Skip to content

Instantly share code, notes, and snippets.

@jvyden
Created March 13, 2020 23:32
Show Gist options
  • Save jvyden/d63c9758f2f88efdd5e891353263e0b6 to your computer and use it in GitHub Desktop.
Save jvyden/d63c9758f2f88efdd5e891353263e0b6 to your computer and use it in GitHub Desktop.
// @author jvyden420
// thing to make the hit pngs (50s, 100s) go by frame count and do it way easier
const blank = "iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGtmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOC0xMi0yOFQyMDo0NTowMS0wODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTktMDUtMDZUMjM6Mzg6NDQtMDQ6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDUtMDZUMjM6Mzg6NDQtMDQ6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ5YTczZjctZWEyOS0wMjRkLTk3MmMtMTdhNjg0NWFlNzNjIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTg2YzQ1NGUtOTI5My04NTRkLTg5Y2YtM2MzYmEyNGUzMDdkIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ODMzMTZiZDUtMTgxOC1jMzRlLWEwZWItYmE2NTYzZjVhMjExIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MzMxNmJkNS0xODE4LWMzNGUtYTBlYi1iYTY1NjNmNWEyMTEiIHN0RXZ0OndoZW49IjIwMTgtMTItMjhUMjA6NDU6MDEtMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjMzZDE4ODczLTBlMjQtNGM0MS1hNGM2LTQ1NDQ1YWU0YjY4MyIgc3RFdnQ6d2hlbj0iMjAxOS0wNS0wNlQyMzozODo0NC0wNDowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NTQ5YTczZjctZWEyOS0wMjRkLTk3MmMtMTdhNjg0NWFlNzNjIiBzdEV2dDp3aGVuPSIyMDE5LTA1LTA2VDIzOjM4OjQ0LTA0OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pr+87mwAAAFNSURBVHic7dIxAQAgDMAwwL/nIWNHEwU9emfm0PW2A9hlgDgDxBkgzgBxBogzQJwB4gwQZ4A4A8QZIM4AcQaIM0CcAeIMEGeAOAPEGSDOAHEGiDNAnAHiDBBngDgDxBkgzgBxBogzQJwB4gwQZ4A4A8QZIM4AcQaIM0CcAeIMEGeAOAPEGSDOAHEGiDNAnAHiDBBngDgDxBkgzgBxBogzQJwB4gwQZ4A4A8QZIM4AcQaIM0CcAeIMEGeAOAPEGSDOAHEGiDNAnAHiDBBngDgDxBkgzgBxBogzQJwB4gwQZ4A4A8QZIM4AcQaIM0CcAeIMEGeAOAPEGSDOAHEGiDNAnAHiDBBngDgDxBkgzgBxBogzQJwB4gwQZ4A4A8QZIM4AcQaIM0CcAeIMEGeAOAPEGSDOAHEGiDNAnAHiDBBngDgDxBkgzgBxBogzQNwH7XcD/bVOVXkAAAAASUVORK5CYII="
// blank 128x128 png
// hope you dont have word wrap on
const fs = require("fs"); // import fs as fs
if(!fs.existsSync("in")) { // if the in directory doesn't exist...
fs.mkdirSync("in"); // ... then make a directory called "in"
console.error(`Put everything you need duped in the \"in\" dir. The filename needs to be something like "hit100k.png". Not "hit100k-0.png". Of course, you can use other images like "hit50.png".`);
process.exit(1); // and then finally exit since theres nothing to do
}
if(!fs.existsSync("out")) { // if the out directory doesn't exist...
fs.mkdirSync("out"); // ... then make a directory called "out"
}
const files = fs.readdirSync("in"); // read the list of files in the input directory
let writtenFilesCounter = 0; // statistics are cool
const arguments = process.argv.slice(2);
if(typeof arguments[0] != "string") {
console.error("You didn't give a number. Give me a number of frames you want for each file.")
process.exit(1);
}
if(isNaN(arguments[0])) {
console.error("Invalid Number. Give me a number of frames you want for each file.")
process.exit(1);
}
const frames = parseInt(arguments[0])
files.forEach(function(file, i) { // loop for every file in the in directory
// file = the file in the current loop
file = file.replace(".png", ""); // remove the png from the filename
console.log(`Writing files for ${file}`);
const input = fs.readFileSync(`in/${file}.png`); // read the file as input
for(i=0; i<frames+1; i++) { // loop 41 times
fs.writeFileSync(`out/${file}-${i}.png`, input); // write the file with the prefix, the loop number, and the extension in the out directory
writtenFilesCounter++; // increment the written files counter
}
console.log(`Writing blank file for ${file}`);
fs.writeFileSync(`out/${file}-${frames+1}.png`, blank, {encoding: 'base64'}); // write the blank file
writtenFilesCounter++; // increment the written files counter
})
console.log(`Done. Wrote ${writtenFilesCounter} files.`);
console.log(`You can now import the files in "out" into your skin.`);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment