67 lines
1.2 KiB
TypeScript
67 lines
1.2 KiB
TypeScript
type Spritesheet = {
|
|
frames: Record<
|
|
string,
|
|
{
|
|
frame: { x: number; y: number; w: number; h: number };
|
|
sourceSize: { w: number; h: number };
|
|
spriteSourceSize: { x: number; y: number; w: number; h: number };
|
|
}
|
|
>;
|
|
meta: {
|
|
image: string;
|
|
format: string;
|
|
size: { w: number; h: number };
|
|
scale: 1;
|
|
};
|
|
animations?: Record<string, string[]>;
|
|
};
|
|
|
|
(function () {
|
|
console.log(JSON.stringify(getCardSpritesheet(), null, "\t"));
|
|
})();
|
|
|
|
function getCardSpritesheet() {
|
|
const spriteSheet: Spritesheet = {
|
|
frames: {},
|
|
meta: {
|
|
image: "/public/assets/cards.png",
|
|
format: "RGBA8888",
|
|
size: { w: 1872, h: 896 },
|
|
scale: 1,
|
|
},
|
|
};
|
|
|
|
const suits = ["Spades", "Hearts", "Clubs", "Diamonds"];
|
|
const values = [
|
|
"two",
|
|
"three",
|
|
"four",
|
|
"five",
|
|
"six",
|
|
"seven",
|
|
"eight",
|
|
"nine",
|
|
"ten",
|
|
"jack",
|
|
"queen",
|
|
"king",
|
|
"ace",
|
|
];
|
|
|
|
for (let i = 0; i < 4; i++) {
|
|
for (let j = 0; j < 13; j++) {
|
|
const cardName = `${values[j]}Of${suits[i]}`;
|
|
const size = { w: 144, h: 224 };
|
|
const position = { x: j * size.w, y: i * size.h };
|
|
|
|
spriteSheet.frames[cardName] = {
|
|
frame: { ...size, ...position },
|
|
sourceSize: size,
|
|
spriteSourceSize: { ...size, x: 0, y: 0 },
|
|
};
|
|
}
|
|
}
|
|
|
|
return spriteSheet;
|
|
}
|