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);
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(
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 {
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,
}