chiark / gitweb /
currency: support label text recolouring
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 May 2022 01:11:04 +0000 (02:11 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Tue, 17 May 2022 01:12:46 +0000 (02:12 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
docs/gamespec.rst
src/currency.rs

index b9e89f088943d2ec4380647533e3a4d5313927ee..5fef0cfb6e8503fa3798d08484be4ebf962d4f1a 100644 (file)
@@ -438,6 +438,9 @@ Parameters:
  * ``currency``: The currency, which defines which other
    banknotes this one can interchange with.
 
+ * ``label.colour``: Text colour to use for the value.
+   [string, default "black"]
+
 Exammple::
 
   [[pieces]]
index c32600795c8c879b2560e3b3299b5180f4b5d94c..0b55ab9f01e284251a36aff84294f4d3b783c74b 100644 (file)
@@ -25,6 +25,12 @@ pub struct Spec {
   image: Box<dyn PieceSpec>,
   qty: Qty,
   currency: String,
+  #[serde(default)] label: LabelSpec,
+}
+
+#[derive(Debug,Default,Clone,Serialize,Deserialize)]
+pub struct LabelSpec {
+  pub colour: Option<ColourSpec>,
 }
 
 #[derive(Debug,Clone,Serialize,Deserialize)]
@@ -32,6 +38,7 @@ pub struct Banknote {
   itemname: String,
   image: Arc<dyn InertPieceTrait>,
   currency: String,
+  label_colour: Colour,
 }
 
 #[derive(Debug,Serialize,Deserialize)]
@@ -48,7 +55,10 @@ impl PieceSpec for Spec {
   fn load(&self, PLA { gpc,ig,depth,.. }: PLA) -> SpecLoaded {
     gpc.rotateable = false;
 
-    let Spec { ref image, ref currency, qty } = *self;
+    let Spec { ref image, ref currency, qty,
+               label: LabelSpec { colour: ref label_colour } } = *self;
+
+    let label_colour = label_colour.resolve()?;
 
     let SpecLoadedInert { p: image, occultable:_ } =
       image.load_inert(ig, depth)?;
@@ -67,7 +77,7 @@ impl PieceSpec for Spec {
     let bnote = Banknote {
       image: image.into(),
       currency: currency.clone(),
-      itemname,
+      itemname, label_colour,
     };
 
     gpc.fastsplit = FastSplitId::new_placeholder();
@@ -111,9 +121,9 @@ impl PieceTrait for Banknote {
     let label_y_adj = label_font_size * SVG_FONT_Y_ADJUST_OF_FONT_SIZE;
 
     hwrite!(f,
-            r##"<{} text-align="center" text-anchor="middle" x="0" y="{}" font-size="{}">{}{}</text>"##,
+            r##"<{} text-align="center" text-anchor="middle" x="0" y="{}" fill="{}" font-size="{}">{}{}</text>"##,
             HTML_TEXT_LABEL_ELEM_START,
-            label_y_adj, label_font_size,
+            label_y_adj, &self.label_colour, label_font_size,
             value.qty, &self.currency)?;
   }