mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Merge pull request #264 from kevlahnota/master
refactor aideck selection
This commit is contained in:
@@ -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 (count > 10)
|
if (size > 10)
|
||||||
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(AIDecks.size())));
|
lstDecks.setSelectedItem(AIDecks.get(MyRandom.getRandom().nextInt(size)));
|
||||||
else
|
else
|
||||||
DeckgenUtil.randomSelect(lstDecks);
|
DeckgenUtil.randomSelect(lstDecks);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
});
|
||||||
return Aggregates.random(AIDecks).getDeck();
|
if (isAi && Iterables.size(AIDecks) > 10)
|
||||||
}
|
return Aggregates.random(AIDecks).getDeck();
|
||||||
return Aggregates.random(decks).getDeck();
|
return Aggregates.random(decks).getDeck();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user