chiark / gitweb /
Make a dasharray generator that takes a PlayerId
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 19:04:44 +0000 (19:04 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Feb 2021 19:14:45 +0000 (19:14 +0000)
NFC

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/otterlib.rs
src/ui.rs
src/updates.rs

index 0f4336e51361f7c4d9240e60ecc97862b69feb31..2d3d33615da806dc1cb31f7c76e3842cc129273b 100644 (file)
@@ -169,7 +169,7 @@ fn preview(items: Vec<ItemForOutput>) {
                        viewBox="{}" width={} height={}>"#,
                &viewport, wh[0], wh[1]);
         if inseveral == 1 {
-          let dasharray = player_dasharray(1.try_into().unwrap());
+          let dasharray = player_num_dasharray(1.try_into().unwrap());
           print!(r#"<path d="{}" stroke-dasharray="{}"
                           fill="none" stroke="{}" />"#,
                  &surround.0, &dasharray, HELD_SURROUND_COLOUR);
index c5e3bce80f9c2d80d1e25c6def55a4666196b8c9..8d9ed358d5cc7bf91970850056afbf90cb1844ab 100644 (file)
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -16,7 +16,7 @@ pub enum PresentationLayout {
 
 type PL = PresentationLayout;
 
-pub fn player_dasharray(player_num: NonZeroUsize) -> String {
+pub fn player_num_dasharray(player_num: NonZeroUsize) -> String {
   let n: usize = player_num.into();
   let mut dasharray = String::with_capacity(n*3 + 4);
   for dash in iter::once("3").chain(
@@ -29,6 +29,14 @@ pub fn player_dasharray(player_num: NonZeroUsize) -> String {
   dasharray
 }
 
+pub fn player_dasharray(gplayers: &GPlayers, player: PlayerId) -> String {
+  let kd: slotmap::KeyData = player.into();
+  let n: usize = kd.get_idx_version().0.try_into().unwrap();
+  let n: NonZeroUsize = n.try_into()
+    .unwrap_or_else(|_| gplayers.capacity().try_into().unwrap());
+  player_num_dasharray(n)
+}
+
 impl PresentationLayout {
   pub fn template(self) -> &'static str {
     match self {
index bcb9c6ea04e21ec77707593ab0e5c6dc98126571..43235bfe31056a4aa080955db7d8ce7bbfba3e2f 100644 (file)
@@ -300,11 +300,7 @@ impl PreparedUpdateEntry {
 
 impl DataLoadPlayer {
   pub fn from_player(ig: &Instance, player: PlayerId) -> Self {
-    let kd: slotmap::KeyData = player.into();
-    let n = kd.get_idx_version().0;
-    let n = if n != 0 { n.try_into().unwrap() }
-    else { ig.gs.players.capacity() };
-    let dasharray = player_dasharray(n.try_into().unwrap());
+    let dasharray = player_dasharray(&ig.gs.players, player);
     DataLoadPlayer {
       dasharray,
     }