private void Iterate(int selector, List <Card> list) { CardPlayShell shell = playDictionary[list[selector]]; foreach (KeyValuePair <int, Play> play in shell.play) { foreach (Card card in list) { groupPlayManager.AddGroup(playDictionary); } shell.increaseIterator(); if (selector > 0) { Iterate(selector - 1, list); } } shell.iterator = 0; }
public void attackRow(FunctionalRow row, BoardFunctionality boardFunc) { playDictionary = new Dictionary <Card, CardPlayShell>(); foreach (Card friendlyCard in boardFunc.friendlySide.Rows[Side.FieldUnit].cardsInContainer) { if (!friendlyCard.cardProps.exhausted) { CardPlayShell cardPlayShell = new CardPlayShell(); foreach (Card enemyCard in row.cardsInContainer) { cardPlayShell.AddEnemy(enemyCard); } cardPlayShell.SetCardToMakePlay(friendlyCard); cardPlayShell.SetPlays(boardFunc); playDictionary.Add(friendlyCard, cardPlayShell); } } List <Card> list = boardFunc.friendlySide.Rows[Side.FieldUnit].cardsInContainer; int lastMember = boardFunc.friendlySide.Rows[Side.FieldUnit].unexhaustedCount() - 1; Iterate(lastMember, list); //biggish load of work for comp, maybe make this async? groupPlayManager.executeBestPlay(boardFunc); //assign those sweet actions }