//private readonly BasicData _thisData; public void CreateSet(IDeckDict <Phase10CardInformation> thisCol, EnumWhatSets whatType) { _whatSet = whatType; thisCol.ForEach(items => { items.Drew = false; items.IsSelected = false; }); if (_whatSet != EnumWhatSets.Runs) { HandList.ReplaceRange(thisCol); return; } DeckRegularDict <Phase10CardInformation> tempList = thisCol.ToRegularDeckDict(); DeckRegularDict <Phase10CardInformation> wildCol = thisCol.Where(items => items.CardCategory == EnumCardCategory.Wild).ToRegularDeckDict(); thisCol.KeepConditionalItems(items => items.CardCategory == EnumCardCategory.None); int firstNum = thisCol.First().Number; int whatFirst = firstNum; int lastNum = thisCol.Last().Number; int x; var loopTo = thisCol.Count; Phase10CardInformation thisCard; for (x = 2; x <= loopTo; x++) { firstNum += 1; thisCard = thisCol[x - 1]; if (thisCard.Number != firstNum) { thisCard = wildCol.First(); thisCard.Number = firstNum; // will put back when new round (?) wildCol.RemoveSpecificItem(thisCard); x -= 1; } } if (wildCol.Count > 0) { lastNum += 1; for (x = lastNum; x <= 11; x++) { if (wildCol.Count == 0) { break; } thisCard = wildCol.First(); thisCard.Number = x; wildCol.RemoveSpecificItem(thisCard); } whatFirst -= 1; for (x = whatFirst; x >= 2; x += -1) { if (wildCol.Count == 0) { break; } thisCard = wildCol.First(); thisCard.Number = x; wildCol.RemoveSpecificItem(thisCard); } } var Fins = tempList.OrderBy(Items => Items.Number); HandList.ReplaceRange(Fins); }