public void PlayerUpdated(ScrumPokerPlayer player) { if (player == null) { return; } this.BeginInvoke(() => { if (Me.OriginalObject.ID == player.ID) { Me.UpdateFrom(player); } foreach (ScrumPokerPlayerModel p in Players) { if (p.OriginalObject.ID == player.ID) { p.UpdateFrom(player); return; } } // not found Players.Add(new ScrumPokerPlayerModel(player)); }); }
public void UpdatePlayer(ScrumPokerPlayer player) { if (_player != null && HaveAllPlayersVoted() && _player.SelectedCard.DisplayName != player.SelectedCard.DisplayName) { throw new InvalidOperationException("Cannot update vote after cards have been flipped!"); } _player = player; // some checks if (_player.SelectedCard == null || _player.SelectedCard.DisplayName == "🚫") { _player.HasVoted = false; _player.SelectedCard = null; } if (_player.CardColor == null || _player.CardColor.Item1 == 0 && _player.CardColor.Item2 == 0 && _player.CardColor.Item3 == 0) { SetColor(_player); } ScrumPokerPlayer pubplayer = player.Clone(); pubplayer.SelectedCard = null; Player = pubplayer; BroadcastOther((IScrumPokerCallback c) => c.PlayerUpdated(Player)); Post((IScrumPokerCallback c) => c.PlayerUpdated(_player)); if (HaveAllPlayersVoted()) { Flip(); } }
private void SetColor(ScrumPokerPlayer player) { lock (_instances) { var inUse = GetInstances <ScrumPokerHost>().Where(h => h._player != null).Select(h => h._player.CardColor); var tuple = AvailableColors.FirstOrDefault(c => !inUse.Contains(c)); if (tuple != null && !(tuple.Item1 == 0 && tuple.Item2 == 0 && tuple.Item3 == 0)) { player.CardColor = tuple; } else { player.CardColor = new Tuple <byte, byte, byte>((byte)(_randy.Next(255)), (byte)(_randy.Next(255)), (byte)(_randy.Next(255))); } } }
public void PlayerRemoved(ScrumPokerPlayer player) { if (player == null) { return; } this.BeginInvoke(() => { foreach (ScrumPokerPlayerModel p in Players.ToArray()) { if (p.OriginalObject.ID == player.ID) { Players.Remove(p); } } }); }