chiark / gitweb /
simple pieces: support edges, fixes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 01:06:09 +0000 (01:06 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 01:47:43 +0000 (01:47 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
specs/demo.game.toml
src/pieces.rs

index cb5c3a36f3010fdc642d2e279407d0e483c9c9fe..c3c1d3fd68e796a83b98cb43a09784f6c75e8192 100644 (file)
@@ -30,3 +30,11 @@ type = "Lib"
 angle.Compass = 1
 lib = "wikimedia"
 item = "chess-b-N"
+
+[[pieces]]
+pos = [120, 30]
+type = "Square"
+size = [10]
+angle.Compass = 1
+faces = [ ]
+edges = ["yellow", "orange"]
index 9d7e531dee23119a2d2b7fbe02a3c9c335b7db48..51695760d87769bebafe25ea36b322dfc25e09da 100644 (file)
@@ -122,23 +122,24 @@ impl Outline for SimpleShape {
 impl Piece for SimpleShape {
   #[throws(IE)]
   fn svg_piece(&self, f: &mut Html, pri: &PieceRenderInstructions) {
-    let ef = |cmap: &ColourMap, attrname: &str| {
+    let ef = |cmap: &ColourMap, attrname: &str, otherwise: &str| {
       if let Some(colour) = cmap.get(pri.face) {
         format!(r##"{}="{}""##, attrname, colour.0)
       } else {
-        "".to_owned()
+        otherwise.to_owned()
       }
     };
     write!(&mut f.0, r##"<path {} {} d="{}"/>"##,
-           ef(&self.colours, "fill"),
-           ef(&self.edges, r##"stroke-width="0.2" stroke"##),
+           ef(&self.colours, "fill", r##"fill="none""##),
+           ef(&self.edges, r##"stroke-width="0.2" stroke"##, ""),
            &self.path.0)?;
   }
   fn describe_html(&self, face: Option<FaceId>) -> Html {
-    Html(if let Some(face) = face {
-      format!("a {} {}", self.colours[face].0, self.desc.0)
-    } else {
-      format!("a {}", self.desc.0)
+    Html(if_chain! {
+      if let Some(face) = face;
+      if let Some(colour) = self.colours.get(face);
+      then { format!("a {} {}", colour.0, self.desc.0) }
+      else { format!("a {}", self.desc.0) }
     })
   }
   fn nfaces(&self) -> RawFaceId { self.count_faces().try_into().unwrap() }