package org.leumasjaffe.charsheet.model; import java.util.Optional; import org.leumasjaffe.charsheet.model.magic.DDSpellbook; import lombok.AccessLevel; import lombok.Data; import lombok.Getter; import lombok.experimental.Delegate; import lombok.experimental.FieldDefaults; import lombok.experimental.NonFinal; @Data @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true) public class DDCharacterClass { private static final class Reference { DDClass base; public boolean equals(Object o) { return this == o || base.equals(o); } public String getName() { return base.getName(); } public int hashCode() { return base.hashCode(); } public String toString() { return base.toString(); } @SuppressWarnings("unused") public Reference(final String name) { this.base = DDClass.getFromResource(name); } } @NonFinal int level; // @NonNull List healthRolls; @Delegate @Getter(AccessLevel.NONE) Reference name; Optional spellBook; public String toString() { return getName() + " " + getLevel(); } public int getSkillPoints() { return name.base.getSkillPoints(); } public int getBab() { return name.base.getBab().getBonus(level); } public int getFort() { return name.base.getFort().getBonus(level); } public int getRef() { return name.base.getRef().getBonus(level); } public int getWill() { return name.base.getWill().getBonus(level); } public boolean isClassSkill(final String skill) { return name.base.isClassSkill(skill); } }