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

View File

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