mirror of
https://github.com/smogon/sprites.git
synced 2026-03-21 17:35:13 -05:00
smogdex spritesheet: use toAlias instead of toPSID
Just Ship It
This commit is contained in:
parent
608a112faa
commit
ef26eabfe8
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user