smogdex spritesheet: use toAlias instead of toPSID

Just Ship It
This commit is contained in:
Christopher Monsanto 2023-04-07 03:09:15 -04:00
parent 608a112faa
commit ef26eabfe8

View File

@ -17,32 +17,45 @@ let result = await run({
src: program.args
});
function toPSID(s:string) {
return s.toLowerCase().replace(/[^a-z0-9]+/g, '');
const spaceRe = /[ _]+/g
const removeRe = /[^a-z0-9-]/g
export function toAlias(s: string) {
s = s.toLowerCase()
s = s.replace(spaceRe, "-")
s = s.replace(removeRe, "")
return s
}
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);
sprites.set(toAlias(parsed.name),sprite);
continue;
}
let data = spritedata.get(parsed.id);
if (data.type === 'specie') {
sprites.set(toPSID(data.base + data.forme), sprite);
// TODO would like to use toPSID here, mess with it later.
sprites.set(toAlias(data.base + (data.forme ? "-" + data.forme : "")), sprite);
} else {
for (let name of data.names) {
sprites.set(toPSID(name), sprite);
sprites.set(toAlias(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}`;
// webp reference depends on optimization in Tupfile, fix it later, just need to ship
stylesheet += `.sprite-${id} {
background-image: url("./spritesheet.webp");
background-repeat: no-repeat;
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);