From 262b36e22be80ba638872f837332f79aa8e8a8c6 Mon Sep 17 00:00:00 2001 From: Carl Worth <cworth@cworth.org> Date: Sat, 20 Jun 2020 10:28:34 -0700 Subject: [PATCH] Add a reference diagram of the 19 glyphs of Scribe Trying my hand at using the <svg> element within HTML for the first time. It's actually quite nice and I might start using it more frequently rather than trying to fight browser layout mechanisms when I'm trying to draw something very explicit, (like a board game). --- scribe/scribe.css | 20 +++++++ scribe/scribe.jsx | 149 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) diff --git a/scribe/scribe.css b/scribe/scribe.css index 6b1e5a6..c3852b1 100644 --- a/scribe/scribe.css +++ b/scribe/scribe.css @@ -75,3 +75,23 @@ .square.open:hover { background-color: var(--accent-color-bright); } + +.glyphs { + padding-top: 0.5em; + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr 1fr; + grid-column-gap: 0.5em; + grid-row-gap: 0.25em; +} + +.glyph-and-name { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} + +.glyph { + width: 8vw; + height: 8vw; +} diff --git a/scribe/scribe.jsx b/scribe/scribe.jsx index 7815594..7b68ff0 100644 --- a/scribe/scribe.jsx +++ b/scribe/scribe.jsx @@ -165,6 +165,39 @@ function PlayerInfo(props) { ); } +function Glyph(props) { + + const glyph_dots = []; + + for (let row = 0; row < 3; row++) { + for (let col = 0; col < 3; col++) { + if (props.squares[3 * row + col]) { + let cy = 10 + 20 * row; + let cx = 10 + 20 * col; + glyph_dots.push( + <circle + cx={cx} + cy={cy} + r="8" + /> + ); + } + } + } + + return (<div className="glyph-and-name"> + {props.name} + <div className="glyph"> + <svg viewBox="0 0 60 60"> + <g fill="#287789"> + {glyph_dots} + </g> + </svg> + </div> + </div> + ); +} + function Square(props) { let className = "square"; @@ -415,6 +448,122 @@ class Game extends React.Component { onClick={(i,j) => this.handle_click(i, j, first_move)} /> </div> + </div>, + <div key="glyphs" className="glyphs"> + <Glyph + name="Single" + squares={[1,0,0, + 0,0,0, + 0,0,0]} + /> + <Glyph + name="Double" + squares={[1,1,0, + 0,0,0, + 0,0,0]} + /> + <Glyph + name="Line" + squares={[1,1,1, + 0,0,0, + 0,0,0]} + /> + <Glyph + name="Pipe" + squares={[0,0,1, + 1,1,1, + 0,0,0]} + /> + <Glyph + name="Squat-T" + squares={[1,1,1, + 0,1,0, + 0,0,0]} + /> + <Glyph + name="4-block" + squares={[1,1,0, + 1,1,0, + 0,0,0]} + /> + <Glyph + name="T" + squares={[1,1,1, + 0,1,0, + 0,1,0]} + /> + <Glyph + name="Cross" + squares={[0,1,0, + 1,1,1, + 0,1,0]} + /> + <Glyph + name="6-block" + squares={[1,1,1, + 1,1,1, + 0,0,0]} + /> + <Glyph + name="Bomber" + squares={[1,1,1, + 0,1,1, + 0,0,1]} + /> + <Glyph + name="Chair" + squares={[0,0,1, + 1,1,1, + 1,0,1]} + /> + <Glyph + name="J" + squares={[0,0,1, + 1,0,1, + 1,1,1]} + /> + <Glyph + name="Earring" + squares={[0,1,1, + 1,0,1, + 1,1,1]} + /> + <Glyph + name="House" + squares={[0,1,0, + 1,1,1, + 1,1,1]} + /> + <Glyph + name="H" + squares={[1,0,1, + 1,1,1, + 1,0,1]} + /> + <Glyph + name="U" + squares={[1,0,1, + 1,0,1, + 1,1,1]} + /> + <Glyph + name="Ottoman" + squares={[1,1,1, + 1,1,1, + 1,0,1]} + /> + <Glyph + name="O" + squares={[1,1,1, + 1,0,1, + 1,1,1]} + /> + <Glyph + name="9-block" + squares={[1,1,1, + 1,1,1, + 1,1,1]} + /> </div> ]; } -- 2.45.2