// Which art set a token draws from: the player's preference, with the // workshop's per-category query params (?svgPlayers=true, ...) as a // deliberate override for editing sessions under `npm run dev`. import { prefs } from "./prefs.svelte"; export type ArtCategory = "players" | "creatures" | "terrain" | "objects"; const q = new URLSearchParams(typeof location === "undefined" ? "" : location.search); const PARAM: Record = { players: "svgPlayers", creatures: "svgCreatures", terrain: "svgTerrain", objects: "svgObjects", }; export function tokenArt(file: string, cat: ArtCategory): string { const override = q.get(PARAM[cat]); const drawn = override !== null ? override === "true" : prefs.art === "drawn"; return drawn ? `/tokens-svg/${file}.svg` : `/tokens/${file}.png`; } // Which token file depicts each board thing (shared by the board renderer // and the card-peek modal). Anything without an entry has no token art. export const TERRAIN_ART: Record = { stone: "solid-stone", thornbush: "thorn-bush", rosebush: "rosebush", ooze: "killer-ooze", dust: "dustcloud", slime: "slime", tacks: "tacks", pit: "pit", safe: "safe", }; export const CREATURE_ART: Record = { skeleton: "skeleton", troll: "troll", wraith: "wraith", "fire-imp": "fire-imp", "democratic-monster": "democratic-monster", shadow: "shadow", "alter-ego": "alter-ego", }; export function objectArt(cardId: string): string | null { if (cardId === "dagger") return "dagger"; if (cardId === "large-rock") return "rock"; if (cardId === "master-key") return "master-key"; if (cardId.endsWith("stone")) return "magic-stone"; if (cardId.endsWith("-wand")) return "magic-wand"; return null; }