public static Species getRandomSpecies() { PkmType t = PkmType.values()[rand.nextInt(PkmType.values().length)]; Predicate<Species> filter = species -> species.getType().equals(t); List<Species> options = new ArrayList<Species>(mngr.getSpeciesByFilters(Arrays.asList(filter))); if (options.isEmpty()) { options = Arrays.asList(Species.AIR); } return options.get(rand.nextInt(options.size())); }
public List<Stage> getDefaultStages() { if (typeStages == null) { PkmType[] types = PkmType.values(); typeStages = new ArrayList<Stage>(types.length); for (PkmType type : types) { if (!type.isSpecial()) { typeStages.add(new Stage(type)); } } } return typeStages; }
/** * Gets a filtered view of all stages. * * @param t If not null, filters to only allow stages with this type. * @param contains If not null, filters to only allow stages whose name (ignoring case) contains * this String. * @return The filtered view as an unmodifiable list. Note: this list has no duplicates. */ public List<Stage> getAllStagesFilteredBy(PkmType t, String contains) { LinkedHashSet<Stage> retStages = new LinkedHashSet<Stage>(); String containsUpper = contains == null ? null : contains.toUpperCase(); for (Stage s : getAllStages()) { PkmType thisType = s.getType(); String thisNameUpper = s.getName().toUpperCase(); if ((t == null || thisType.equals(t)) && (containsUpper == null || thisNameUpper.contains(containsUpper))) { retStages.add(s); } } return Collections.unmodifiableList(new ArrayList<Stage>(retStages)); }