Tell me if there is a way to sort the list by the rules.
I have several playing decks and each has its own rules:
- Count - how many cards to take from the deck
- From / Before - in which interval the cards should be (If 0, then in any)
- Row - how many cards can fall out in a row
My current code:
private void ShuffleDecks()
{
List<TestCard> testCards = new();
TestDesk desk1 = new TestDesk
{
From = 0,
Before = 0,
Row = 2,
Count = 3
};
desk1.Cards = new List<TestCard>
{
new("a1", desk1),
new("a2", desk1),
new("a3", desk1),
};
TestDesk desk2 = new TestDesk
{
From = 1,
Before = 4,
Row = 1,
Count = 2
};
desk2.Cards = new List<TestCard>
{
new("b1", desk2),
new("b2", desk2),
new("b3", desk2),
};
TestDesk desk3 = new TestDesk
{
From = 3,
Before = 5,
Row = 0,
Count = 2
};
desk3.Cards = new List<TestCard>
{
new("c1", desk3),
new("c2", desk3),
new("c3", desk3),
};
List<TestDesk> desks = new List<TestDesk> { desk1, desk2, desk3 };
foreach (TestDesk desk in desks)
{
desk.Cards.Shuffle();
testCards.AddRange(desk.Cards.Take(desk.Count).ToList());
}
testCards.Sort();
Debug.LogWarning($"{string.Join(", ", testCards.Select(x => x.Name))}");
}
TestDesk and TestCard:
public class TestDesk
{
public List<TestCard> Cards;
public int From;
public int Before;
public int Row;
public int Count;
}
public class TestCard
{
public string Name;
public TestDesk Desk;
public TestCard(string name, TestDesk desk)
{
Name = name;
Desk = desk;
}
}