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); }
public void AssertOrderDescending() { CollectionAssert.AreEqual(this.sortedDsc, CustomSorting.SortCards(this.unsorted, false)); }