package plugin.exporttokens; import java.util.Collection; import java.util.StringTokenizer; import pcgen.base.util.HashMapToList; import pcgen.base.util.MapToList; import pcgen.cdom.content.CNAbility; import pcgen.cdom.enumeration.Nature; import pcgen.core.Ability; import pcgen.core.AbilityCategory; import pcgen.core.PlayerCharacter; import pcgen.core.SettingsHandler; import pcgen.io.ExportHandler; import pcgen.io.exporttoken.AbilityListToken; /** * {@code VFeatListToken} deals with VFEATLIST output token. * * * @author karianna */ public class VFeatListToken extends AbilityListToken { /** * @see pcgen.io.exporttoken.Token#getTokenName() */ @Override public String getTokenName() { return "VFEATLIST"; } /** * @see pcgen.io.exporttoken.Token#getToken(java.lang.String, pcgen.core.PlayerCharacter, pcgen.io.ExportHandler) */ @Override public String getToken(String tokenSource, PlayerCharacter pc, ExportHandler eh) { final StringTokenizer aTok = new StringTokenizer(tokenSource, "."); // Skip the token itself final String tokenString = aTok.nextToken(); return getTokenForCategory(pc, aTok, tokenString, AbilityCategory.FEAT); } /** * @see pcgen.io.exporttoken.AbilityListToken#getAbilityList(pcgen.core.PlayerCharacter, pcgen.core.AbilityCategory) */ @Override protected MapToList<Ability, CNAbility> getAbilityList(PlayerCharacter pc, final AbilityCategory aCategory) { final MapToList<Ability, CNAbility> listOfAbilities = new HashMapToList<>(); Collection<AbilityCategory> allCats = SettingsHandler.getGame().getAllAbilityCategories(); for (AbilityCategory aCat : allCats) { if (aCat.getParentCategory().equals(aCategory)) { for (CNAbility cna : pc.getPoolAbilities(aCat, Nature.VIRTUAL)) { listOfAbilities.addToListFor(cna.getAbility(), cna); } } } return listOfAbilities; } }