diff --git a/packages/web/public/tokens-svg/destroy-wall.svg b/packages/web/public/tokens-svg/destroy-wall.svg deleted file mode 100644 index 3166b48..0000000 --- a/packages/web/public/tokens-svg/destroy-wall.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Destroy Wall - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/door.svg b/packages/web/public/tokens-svg/door.svg deleted file mode 100644 index f7a086e..0000000 --- a/packages/web/public/tokens-svg/door.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Door - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/fire-wall.svg b/packages/web/public/tokens-svg/fire-wall.svg deleted file mode 100644 index 92a9d30..0000000 --- a/packages/web/public/tokens-svg/fire-wall.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Fire Wall - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/illusion-wall.svg b/packages/web/public/tokens-svg/illusion-wall.svg deleted file mode 100644 index 9f13e87..0000000 --- a/packages/web/public/tokens-svg/illusion-wall.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Illusion Wall - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/jam-lock.svg b/packages/web/public/tokens-svg/jam-lock.svg deleted file mode 100644 index f78c2a0..0000000 --- a/packages/web/public/tokens-svg/jam-lock.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Jam Lock - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/lock-gone.svg b/packages/web/public/tokens-svg/lock-gone.svg deleted file mode 100644 index 1174220..0000000 --- a/packages/web/public/tokens-svg/lock-gone.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Lock Gone - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/redirection-a.svg b/packages/web/public/tokens-svg/redirection-a.svg deleted file mode 100644 index 78abd84..0000000 --- a/packages/web/public/tokens-svg/redirection-a.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Redirection A - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/redirection-b.svg b/packages/web/public/tokens-svg/redirection-b.svg deleted file mode 100644 index ebcda92..0000000 --- a/packages/web/public/tokens-svg/redirection-b.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Redirection B - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/wall-2.svg b/packages/web/public/tokens-svg/wall-2.svg deleted file mode 100644 index 1520ea2..0000000 --- a/packages/web/public/tokens-svg/wall-2.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Wall - - \ No newline at end of file diff --git a/packages/web/public/tokens-svg/wall.svg b/packages/web/public/tokens-svg/wall.svg deleted file mode 100644 index 21002cc..0000000 --- a/packages/web/public/tokens-svg/wall.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - -Wall - - \ No newline at end of file diff --git a/packages/web/public/tokens/destroy-wall.png b/packages/web/public/tokens/destroy-wall.png deleted file mode 100644 index 76d9ccd..0000000 Binary files a/packages/web/public/tokens/destroy-wall.png and /dev/null differ diff --git a/packages/web/public/tokens/door.png b/packages/web/public/tokens/door.png deleted file mode 100644 index d3fc61a..0000000 Binary files a/packages/web/public/tokens/door.png and /dev/null differ diff --git a/packages/web/public/tokens/fire-wall.png b/packages/web/public/tokens/fire-wall.png deleted file mode 100644 index 67da199..0000000 Binary files a/packages/web/public/tokens/fire-wall.png and /dev/null differ diff --git a/packages/web/public/tokens/illusion-wall.png b/packages/web/public/tokens/illusion-wall.png deleted file mode 100644 index 1645284..0000000 Binary files a/packages/web/public/tokens/illusion-wall.png and /dev/null differ diff --git a/packages/web/public/tokens/jam-lock.png b/packages/web/public/tokens/jam-lock.png deleted file mode 100644 index f947172..0000000 Binary files a/packages/web/public/tokens/jam-lock.png and /dev/null differ diff --git a/packages/web/public/tokens/lock-gone.png b/packages/web/public/tokens/lock-gone.png deleted file mode 100644 index 3289cf8..0000000 Binary files a/packages/web/public/tokens/lock-gone.png and /dev/null differ diff --git a/packages/web/public/tokens/redirection-a.png b/packages/web/public/tokens/redirection-a.png deleted file mode 100644 index 3fdabd7..0000000 Binary files a/packages/web/public/tokens/redirection-a.png and /dev/null differ diff --git a/packages/web/public/tokens/redirection-b.png b/packages/web/public/tokens/redirection-b.png deleted file mode 100644 index 05a2b54..0000000 Binary files a/packages/web/public/tokens/redirection-b.png and /dev/null differ diff --git a/packages/web/public/tokens/wall-2.png b/packages/web/public/tokens/wall-2.png deleted file mode 100644 index 4cbd004..0000000 Binary files a/packages/web/public/tokens/wall-2.png and /dev/null differ diff --git a/packages/web/public/tokens/wall.png b/packages/web/public/tokens/wall.png deleted file mode 100644 index 2401a78..0000000 Binary files a/packages/web/public/tokens/wall.png and /dev/null differ diff --git a/packages/web/src/Board.svelte b/packages/web/src/Board.svelte index 36bc742..05dd4b3 100644 --- a/packages/web/src/Board.svelte +++ b/packages/web/src/Board.svelte @@ -5,6 +5,7 @@ import type { BoardFx } from "./fx"; import { colorIndexOf as sharedColorIndex, wizardColor } from "./colors"; import { CREATURE_ART, objectArt, TERRAIN_ART, tokenArt } from "./art"; + import EdgeGlyph from "./EdgeGlyph.svelte"; import FirewallEdge from "./FirewallEdge.svelte"; import IllusionShimmer from "./IllusionShimmer.svelte"; import SightTraceOverlay from "./SightTraceOverlay.svelte"; @@ -388,24 +389,14 @@ {#if e.state === "firewall"} {:else} - {@const cls = e.state === "door" ? `door${e.lock ? ` ${e.lock}` : ""}` : "wall"} {@const lockTitle = e.lock === "removed" ? "lock removed — swings free" : e.lock === "jammed" ? "lock jammed — sealed for good" : e.lock === "held" ? "held open by a standing wizard" : e.lock === "ajar" ? "unlocked until end of turn" : null} - {#if e.kind === "V"} - {#if lockTitle}{lockTitle}{/if} - {:else} - {#if lockTitle}{lockTitle}{/if} - {/if} + {/if} {/each} @@ -675,25 +666,6 @@ cursor: pointer; } .floor:hover { fill: #efe8d2; } - .wall { - fill: #f2ecd8; - stroke: #2b2218; - stroke-width: 1.6; - } - .door { - fill: #8b5a2b; - stroke: #2b2218; - stroke-width: 1.4; - rx: 2; - } - /* Lock removed: pale, an open doorway forever. */ - .door.removed { fill: #d4bd8e; } - /* Lock jammed: near-black, sealed. */ - .door.jammed { fill: #3a2a18; stroke: #14100b; } - /* Picked or keyed open until end of turn. */ - .door.ajar { fill: #d4bd8e; stroke-dasharray: 5 3; } - /* Held open: a wizard stands propping it. */ - .door.held { fill: #d4bd8e; stroke: #2e7d32; } .stone { fill: #6a6458; stroke: #3a362e; stroke-width: 2; } .bush { fill: #2e7d32; stroke: #1b4d1e; stroke-width: 2; } .rose { fill: #2e7d32; stroke: #b0245a; stroke-width: 3; } diff --git a/packages/web/src/EdgeGlyph.svelte b/packages/web/src/EdgeGlyph.svelte new file mode 100644 index 0000000..d018eba --- /dev/null +++ b/packages/web/src/EdgeGlyph.svelte @@ -0,0 +1,50 @@ + + +{#if kind === "V"} + {#if title}{title}{/if} +{:else} + {#if title}{title}{/if} +{/if} + + diff --git a/packages/web/src/TokenGallery.svelte b/packages/web/src/TokenGallery.svelte index c857fd5..d20ca01 100644 --- a/packages/web/src/TokenGallery.svelte +++ b/packages/web/src/TokenGallery.svelte @@ -16,18 +16,39 @@ title: "Terrain", files: [ "solid-stone", "thorn-bush", "rosebush", "killer-ooze", "slime", "dustcloud", - "tacks", "pit", "safe", "fire-wall", "illusion-wall", "wall", "wall-2", "door", + "tacks", "pit", "safe", ], }, { title: "Objects & markers", files: [ "dagger", "rock", "magic-stone", "magic-wand", "master-key", "boobytrap", - "dimensional-warp", "redirection-a", "redirection-b", "destroy-wall", - "jam-lock", "lock-gone", + "dimensional-warp", ], }, ]; + + // Wall-segment effects have never been tokens: the maze draws them as edge + // treatments. Shown here exactly as the board mounts them. + import EdgeGlyph from "./EdgeGlyph.svelte"; + import FirewallEdge from "./FirewallEdge.svelte"; + import IllusionShimmer from "./IllusionShimmer.svelte"; + const EDGE_PIECES: { + caption: string; + state?: "wall" | "door"; + lock?: "removed" | "jammed" | "held" | "ajar" | null; + special?: "firewall" | "shimmer" | "known-illusion"; + }[] = [ + { caption: "wall", state: "wall" }, + { caption: "door (locked)", state: "door" }, + { caption: "door, picked open (ajar)", state: "door", lock: "ajar" }, + { caption: "door, held open", state: "door", lock: "held" }, + { caption: "door, lock removed", state: "door", lock: "removed" }, + { caption: "door, lock jammed", state: "door", lock: "jammed" }, + { caption: "wall of fire", special: "firewall" }, + { caption: "illusion wall (untested)", special: "shimmer" }, + { caption: "illusion wall (you know it's fake)", special: "known-illusion" }, + ]; {/each} + +

Walls & doors — as the maze draws them

+

+ Wall-segment effects have never been tokens: locks picked, jammed, and + removed, held doors, standing fires, and illusions are edge treatments, + shown here with the very components the board mounts. +

+
+ {#each EDGE_PIECES as piece (piece.caption)} +
+ + {#each [0, 1, 2] as cy (cy)}{#each [0, 1, 2] as cx (cx)} + + {/each}{/each} + {#if piece.special === "firewall"} + + {:else if piece.special === "shimmer"} + + + {:else if piece.special === "known-illusion"} + + {:else} + + {/if} + +
{piece.caption}
+
+ {/each} +