コード例 #1
0
        private PlayerPosition GetWiningCallPosition(Round round)
        {
            Call call = null;

            var orderedCalls = round.Calls.OrderByDescending(c => c.Type);
            var firstCall    = orderedCalls.FirstOrDefault();

            if (firstCall.Type == CallType.EightInARow || firstCall.Type == CallType.FourJacks || firstCall.Type == CallType.FourNines)
            {
                call = firstCall;
            }

            if (firstCall.Type == CallType.FourOfAKind)
            {
                call = orderedCalls
                       .ThenBy(c => Array.IndexOf(CustomSorting.FourOfAKindSortOrder, CardsManager.GetCardFromString(c.HighestCard).Value))
                       .FirstOrDefault();
            }

            if (firstCall.Type == CallType.SevenInARow || firstCall.Type == CallType.SixInARow || firstCall.Type == CallType.FiveInARow || firstCall.Type == CallType.FourInARow || firstCall.Type == CallType.ThreeInARow)
            {
                var maxValue = round.Calls.Select(c => c.Value).Max();
                call = orderedCalls
                       .Where(c => c.Value == maxValue)
                       .OrderByDescending(c => CardsManager.GetCardFromString(c.HighestCard).Value)
                       .ThenBy(c => Array.IndexOf(CustomSorting.GetPositionSortingOrderForCalls(round.FirstPlayerToPlay), c.PlayerPosition))
                       .FirstOrDefault();
            }

            return(call.PlayerPosition);
        }
コード例 #2
0
ファイル: CustomSorting.cs プロジェクト: Airwarfare/MetroNet
 public void AssertOrderDescending()
 {
     CollectionAssert.AreEqual(this.sortedDsc, CustomSorting.SortCards(this.unsorted, false));
 }