import { DominionCard } from "./types.ts"; const imageCache: Record = {}; export const loadImage = ( key: string, src: string ): Promise => { return new Promise((resolve) => { if (key in imageCache && imageCache[key]) { resolve(imageCache[key]); } const img = new Image(); img.onload = () => { imageCache[key] = img; resolve(img); }; img.src = src; }); }; const imageList = [ { key: "card", src: "/assets/CardColorOne.png", }, ]; for (const imageInfo of imageList) { const { key, src } = imageInfo; await loadImage(key, src); } export const getImage = (key: string) => { const image = imageCache[key]; if (!image) { throw Error(`Tried to get an invalid image ${key}`); } return image; }; export const drawCard = ( context: CanvasRenderingContext2D, card: DominionCard ): Promise => { if (card.orientation === "card") { return drawStandardCard(context, card); } else { return drawLandscapeCard(context, card); } }; const drawStandardCard = async ( context: CanvasRenderingContext2D, card: DominionCard ): Promise => { const w = context.canvas.width; const h = context.canvas.height; context.save(); context.fillStyle = "brown"; context.drawImage(getImage("card"), 0, 0); context.restore(); }; const drawLandscapeCard = async ( context: CanvasRenderingContext2D, card: DominionCard ): Promise => { // TODO: everything };