Merge pull request #264 from kevlahnota/master

refactor aideck selection
This commit is contained in:
Anthony Calosa
2022-05-07 06:07:00 +08:00
committed by GitHub
2 changed files with 19 additions and 20 deletions

View File

@@ -7,6 +7,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import forge.util.MyRandom;
import org.apache.commons.lang3.StringUtils;
@@ -73,6 +75,7 @@ public class FDeckChooser extends FScreen {
private boolean firstActivation = true;
private final DeckManager lstDecks;
private List<DeckProxy> AIDecks = new ArrayList<>();
private final FButton btnNewDeck = new FButton(Forge.getLocalizer().getInstance().getMessage("lblNewDeck"));
private final FButton btnEditDeck = new FButton(Forge.getLocalizer().getInstance().getMessage("btnEditDeck"));
private final FButton btnViewDeck = new FButton(Forge.getLocalizer().getInstance().getMessage("lblViewDeck"));
@@ -196,18 +199,18 @@ public class FDeckChooser extends FScreen {
DeckgenUtil.randomSelect(lstDecks);
}
else {
List<DeckProxy> AIDecks = new ArrayList<>();
int count = 0;
int size = 0;
if (isAi) {
for (DeckProxy deckProxy : lstDecks.getPool().toFlatList()) {
if (deckProxy.getAI().inMainDeck == 0) {
AIDecks.add(deckProxy);
count++;
AIDecks = lstDecks.getPool().toFlatList().parallelStream().filter(new Predicate<DeckProxy>() {
@Override
public boolean test(DeckProxy deckProxy) {
return deckProxy.getAI().inMainDeck == 0;
}
}
}).collect(Collectors.toList());
size = AIDecks.size();
}
if (count > 10)
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(AIDecks.size())));
if (size > 10)
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(size)));
else
DeckgenUtil.randomSelect(lstDecks);
}

View File

@@ -166,18 +166,14 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable<RandomD
if (Iterables.isEmpty(decks)) {
return getGeneratedDeck(); //fall back to generated deck if no decks in filtered list
}
List<DeckProxy> AIDecks = new ArrayList<>();
int count = 0;
if (isAi) {
for (DeckProxy deckProxy : decks) {
if (deckProxy.getAI().inMainDeck == 0) {
AIDecks.add(deckProxy);
count++;
}
Iterable<DeckProxy> AIDecks = Iterables.filter(decks, new Predicate<DeckProxy>() {
@Override
public boolean apply(DeckProxy deckProxy) {
return deckProxy.getAI().inMainDeck == 0;
}
if (count > 10)
return Aggregates.random(AIDecks).getDeck();
}
});
if (isAi && Iterables.size(AIDecks) > 10)
return Aggregates.random(AIDecks).getDeck();
return Aggregates.random(decks).getDeck();
}