Example #1
0
        private static Dictionary <IPlayer, int> AssignNonLeasterPoints(IHand hand, out int defensePoints, out bool challengersWonOneTrick, out bool defenseWonOneTrick)
        {
            var handPoints = new Dictionary <IPlayer, int>
            {
                { hand.Picker, hand.Buried.Sum(c => CardUtil.GetPoints(c)) }
            };

            defensePoints          = 0;
            challengersWonOneTrick = false;
            defenseWonOneTrick     = false;
            foreach (var trick in hand.ITricks)
            {
                var winnerData = trick.Winner();
                if (winnerData?.Player == hand.Picker || winnerData?.Player == hand.Partner)
                {
                    challengersWonOneTrick = true;
                }
                else
                {
                    defensePoints     += winnerData.Points;
                    defenseWonOneTrick = true;
                }
                if (winnerData?.Player != null)
                {
                    if (handPoints.ContainsKey(winnerData.Player))
                    {
                        handPoints[winnerData.Player] += winnerData.Points;
                    }
                    else
                    {
                        handPoints.Add(winnerData.Player, winnerData.Points);
                    }
                }
            }
            return(handPoints);
        }