use of pcgen.core.SpellSupportForPCClass in project pcgen by PCGen.
the class SpellSupportFacadeImpl method getClassInfo.
/**
* @see pcgen.core.facade.SpellSupportFacade#getClassInfo(pcgen.core.facade.ClassFacade)
*/
@Override
public String getClassInfo(ClassFacade spellcaster) {
if (!(spellcaster instanceof PCClass)) {
return "";
}
PCClass aClass = (PCClass) spellcaster;
SpellSupportForPCClass spellSupport = pc.getSpellSupport(aClass);
int highestSpellLevel = spellSupport.getHighestLevelSpell(pc);
final HtmlInfoBuilder b = new HtmlInfoBuilder();
//$NON-NLS-1$
b.append("<table border=1><tr><td><font size=-2><b>");
//$NON-NLS-1$
b.append(OutputNameFormatting.piString(aClass, false)).append(" [");
b.append(String.valueOf(charDisplay.getLevel(aClass) + //$NON-NLS-1$
(int) pc.getTotalBonusTo("PCLEVEL", aClass.getKeyName())));
//$NON-NLS-1$
b.append("]</b></font></td>");
for (int i = 0; i <= highestSpellLevel; ++i) {
//$NON-NLS-1$
b.append("<td><font size=-2><b><center> ");
b.append(String.valueOf(i));
//$NON-NLS-1$
b.append(" </b></center></font></td>");
}
//$NON-NLS-1$
b.append("</tr>");
//$NON-NLS-1$
b.append("<tr><td><font size=-1><b>Cast</b></font></td>");
for (int i = 0; i <= highestSpellLevel; ++i) {
//$NON-NLS-1$
b.append("<td><font size=-1><center>");
b.append(getNumCast(aClass, i, pc));
//$NON-NLS-1$
b.append("</center></font></td>");
}
//$NON-NLS-1$
b.append("</tr>");
// Making sure KnownList can be handled safely and produces the correct behaviour
if (spellSupport.hasKnownList() || spellSupport.hasKnownSpells(pc)) {
//$NON-NLS-1$
b.append("<tr><td><font size=-1><b>Known</b></font></td>");
for (int i = 0; i <= highestSpellLevel; ++i) {
final int a = spellSupport.getKnownForLevel(i, pc);
final int bonus = spellSupport.getSpecialtyKnownForLevel(i, pc);
//$NON-NLS-1$
b.append("<td><font size=-1><center>");
b.append(String.valueOf(a));
if (bonus > 0) {
b.append('+').append(Integer.toString(bonus));
}
//$NON-NLS-1$
b.append("</center></font></td>");
}
//$NON-NLS-1$
b.append("</tr>");
}
//$NON-NLS-1$
b.append("<tr><td><font size=-1><b>DC</b></font></td>");
for (int i = 0; i <= highestSpellLevel; ++i) {
//$NON-NLS-1$
b.append("<td><font size=-1><center>");
b.append(String.valueOf(getDC(aClass, i, pc)));
//$NON-NLS-1$
b.append("</center></font></td>");
}
//$NON-NLS-1$
b.append("</tr></table>");
//$NON-NLS-1$
b.appendI18nElement("InfoSpells.caster.type", aClass.getSpellType());
b.appendLineBreak();
//$NON-NLS-1$
b.appendI18nElement("InfoSpells.stat.bonus", aClass.getSpellBaseStat());
if (pc.hasAssocs(aClass, AssociationKey.SPECIALTY) || charDisplay.hasDomains()) {
boolean needComma = false;
StringBuilder schoolInfo = new StringBuilder();
String spec = pc.getAssoc(aClass, AssociationKey.SPECIALTY);
if (spec != null) {
schoolInfo.append(spec);
needComma = true;
}
for (Domain d : charDisplay.getSortedDomainSet()) {
if (needComma) {
schoolInfo.append(',');
}
needComma = true;
schoolInfo.append(d.getKeyName());
}
b.appendLineBreak();
//$NON-NLS-1$
b.appendI18nElement("InfoSpells.school", schoolInfo.toString());
}
Set<String> set = new TreeSet<>();
for (SpellProhibitor sp : aClass.getSafeListFor(ListKey.PROHIBITED_SPELLS)) {
set.addAll(sp.getValueList());
}
Collection<? extends SpellProhibitor> prohibList = charDisplay.getProhibitedSchools(aClass);
if (prohibList != null) {
for (SpellProhibitor sp : prohibList) {
set.addAll(sp.getValueList());
}
}
if (!set.isEmpty()) {
b.appendLineBreak();
//$NON-NLS-1$
b.appendI18nElement(//$NON-NLS-1$
"InfoSpells.prohibited.school", //$NON-NLS-1$
StringUtil.join(set, ","));
}
String bString = SourceFormat.getFormattedString(aClass, Globals.getSourceDisplay(), true);
if (bString.length() > 0) {
b.appendLineBreak();
//$NON-NLS-1$
b.appendI18nElement("in_source", bString);
}
return b.toString();
}
use of pcgen.core.SpellSupportForPCClass in project pcgen by PCGen.
the class SpellSupportFacadeImpl method getCharactersSpellcastingClasses.
private List<PCClass> getCharactersSpellcastingClasses() {
List<PCClass> castingClasses = new ArrayList<>();
Collection<PCClass> classes = charDisplay.getClassSet();
for (PCClass pcClass : classes) {
if (pcClass.get(FactKey.valueOf("SpellType")) != null) {
SpellSupportForPCClass spellSupport = pc.getSpellSupport(pcClass);
if (spellSupport.canCastSpells(pc) || spellSupport.hasKnownList()) {
castingClasses.add(pcClass);
}
}
}
return castingClasses;
}
Aggregations