small tweaks
This commit is contained in:
parent
28f214fb51
commit
9cef34b976
@ -1,8 +1,12 @@
|
|||||||
import { useState } from "react";
|
import { useState } from "react";
|
||||||
import { sampleCard } from "../sampleData.ts";
|
import { sampleCard1, sampleCard2 } from "../sampleData.ts";
|
||||||
import { Card } from "./Card.tsx";
|
import { Card } from "./Card.tsx";
|
||||||
|
|
||||||
export const App = () => {
|
export const App = () => {
|
||||||
const [count, setCount] = useState(0);
|
const [count, setCount] = useState(0);
|
||||||
return <div><Card key={count} card={sampleCard}/><button onClick={() => {setCount(c => c+1)}}>Rerender (for fonts)</button></div>;
|
return <div>
|
||||||
|
<Card key={`1-${count}`} card={sampleCard1}/>
|
||||||
|
<Card key={`2-${count}`} card={sampleCard2}/>
|
||||||
|
<button onClick={() => {setCount(c => c+1)}}>Rerender (for fonts)</button>
|
||||||
|
</div>;
|
||||||
};
|
};
|
||||||
|
@ -233,6 +233,9 @@ export const measureDominionText = async (
|
|||||||
) {
|
) {
|
||||||
line.pieces = line.pieces.slice(0, -1);
|
line.pieces = line.pieces.slice(0, -1);
|
||||||
}
|
}
|
||||||
|
line.width = line.pieces
|
||||||
|
.map((piece) => piece.measure.width)
|
||||||
|
.reduce((a, b) => a + b);
|
||||||
return line;
|
return line;
|
||||||
}),
|
}),
|
||||||
width: Math.max(...lines.map((line) => line.width)),
|
width: Math.max(...lines.map((line) => line.width)),
|
||||||
@ -308,7 +311,7 @@ export const parse = (text: string): Piece[] => {
|
|||||||
pieces.push({ type: "coin", text: text.slice(i + 1, i + end) });
|
pieces.push({ type: "coin", text: text.slice(i + 1, i + end) });
|
||||||
i += end - 1;
|
i += end - 1;
|
||||||
} else {
|
} else {
|
||||||
const end = text.slice(i).match(/\S+/)![0].length;
|
const end = text.slice(i).match(/[^$ \n]+/)![0].length;
|
||||||
pieces.push({ type: "text", text: text.slice(i, i + end) });
|
pieces.push({ type: "text", text: text.slice(i, i + end) });
|
||||||
i += end - 1;
|
i += end - 1;
|
||||||
}
|
}
|
||||||
|
15
src/draw.ts
15
src/draw.ts
@ -93,7 +93,7 @@ export const drawCard = (
|
|||||||
|
|
||||||
const drawStandardCard = async (
|
const drawStandardCard = async (
|
||||||
context: CanvasRenderingContext2D,
|
context: CanvasRenderingContext2D,
|
||||||
card: DominionCard
|
card: DominionCard & { orientation: "card" }
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
const w = context.canvas.width;
|
const w = context.canvas.width;
|
||||||
const h = context.canvas.height;
|
const h = context.canvas.height;
|
||||||
@ -122,6 +122,17 @@ const drawStandardCard = async (
|
|||||||
context.font = "90pt DominionText";
|
context.font = "90pt DominionText";
|
||||||
await renderDominionText(context, parse(card.cost), 210, 1940, 200);
|
await renderDominionText(context, parse(card.cost), 210, 1940, 200);
|
||||||
// Draw the preview
|
// Draw the preview
|
||||||
|
if (card.preview) {
|
||||||
|
context.font = "90pt DominionText";
|
||||||
|
await renderDominionText(context, parse(card.preview), 200, 210, 200);
|
||||||
|
await renderDominionText(
|
||||||
|
context,
|
||||||
|
parse(card.preview),
|
||||||
|
w - 200,
|
||||||
|
210,
|
||||||
|
200
|
||||||
|
);
|
||||||
|
}
|
||||||
// Draw the icon
|
// Draw the icon
|
||||||
// Draw the credit
|
// Draw the credit
|
||||||
context.restore();
|
context.restore();
|
||||||
@ -129,7 +140,7 @@ const drawStandardCard = async (
|
|||||||
|
|
||||||
const drawLandscapeCard = async (
|
const drawLandscapeCard = async (
|
||||||
context: CanvasRenderingContext2D,
|
context: CanvasRenderingContext2D,
|
||||||
card: DominionCard
|
card: DominionCard & { orientation: "landscape" }
|
||||||
): Promise<void> => {
|
): Promise<void> => {
|
||||||
// TODO: everything
|
// TODO: everything
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { DominionCard, TYPE_ACTION } from "./types.ts";
|
import { DominionCard, TYPE_ACTION } from "./types.ts";
|
||||||
|
|
||||||
export const sampleCard: DominionCard = {
|
export const sampleCard1: DominionCard = {
|
||||||
orientation: "card",
|
orientation: "card",
|
||||||
title: "Title",
|
title: "Title",
|
||||||
description: "Hello, world.",
|
description: "Hello, world.",
|
||||||
@ -12,3 +12,16 @@ export const sampleCard: DominionCard = {
|
|||||||
cost: "$",
|
cost: "$",
|
||||||
preview: "",
|
preview: "",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const sampleCard2: DominionCard = {
|
||||||
|
orientation: "card",
|
||||||
|
title: "Market",
|
||||||
|
description: "+1 Card\n+1 Action\n+1 Buy\n+$1",
|
||||||
|
types: [TYPE_ACTION],
|
||||||
|
image: "",
|
||||||
|
artist: "",
|
||||||
|
author: "",
|
||||||
|
version: "",
|
||||||
|
cost: "$4",
|
||||||
|
preview: "",
|
||||||
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user