Files
blackjack/client/src/spritesheets/spritesheet.ts
2025-10-17 12:28:08 -07:00

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;
}