From: Ian Jackson Date: Sat, 13 Feb 2021 19:04:44 +0000 (+0000) Subject: Make a dasharray generator that takes a PlayerId X-Git-Tag: otter-0.4.0~511 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=8a018498eef21547056c4438c5585ddfa415d849;p=otter.git Make a dasharray generator that takes a PlayerId NFC Signed-off-by: Ian Jackson --- diff --git a/src/bin/otterlib.rs b/src/bin/otterlib.rs index 0f4336e5..2d3d3361 100644 --- a/src/bin/otterlib.rs +++ b/src/bin/otterlib.rs @@ -169,7 +169,7 @@ fn preview(items: Vec) { 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#""#, &surround.0, &dasharray, HELD_SURROUND_COLOUR); diff --git a/src/ui.rs b/src/ui.rs index c5e3bce8..8d9ed358 100644 --- 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 { diff --git a/src/updates.rs b/src/updates.rs index bcb9c6ea..43235bfe 100644 --- a/src/updates.rs +++ b/src/updates.rs @@ -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, }