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