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); }