DDCharacterClass.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package org.leumasjaffe.charsheet.model;
  2. import java.util.Optional;
  3. import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
  4. import lombok.AccessLevel;
  5. import lombok.Data;
  6. import lombok.Getter;
  7. import lombok.experimental.Delegate;
  8. import lombok.experimental.FieldDefaults;
  9. import lombok.experimental.NonFinal;
  10. @Data
  11. @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
  12. public class DDCharacterClass {
  13. private static final class Reference {
  14. DDClass base;
  15. public boolean equals(Object o) {
  16. return this == o || base.equals(o);
  17. }
  18. public String getName() {
  19. return base.getName();
  20. }
  21. public int hashCode() {
  22. return base.hashCode();
  23. }
  24. public String toString() {
  25. return base.toString();
  26. }
  27. @SuppressWarnings("unused")
  28. public Reference(final String name) {
  29. this.base = DDClass.getFromResource(name);
  30. }
  31. }
  32. @NonFinal int level;
  33. // @NonNull List<Integer> healthRolls;
  34. @Delegate @Getter(AccessLevel.NONE) Reference name;
  35. Optional<DDSpellbook> spellBook;
  36. public String toString() {
  37. return getName() + " " + getLevel();
  38. }
  39. public int getSkillPoints() {
  40. return name.base.getSkillPoints();
  41. }
  42. public int getBab() {
  43. return name.base.getBab().getBonus(level);
  44. }
  45. public int getFort() {
  46. return name.base.getFort().getBonus(level);
  47. }
  48. public int getRef() {
  49. return name.base.getRef().getBonus(level);
  50. }
  51. public int getWill() {
  52. return name.base.getWill().getBonus(level);
  53. }
  54. public boolean isClassSkill(final String skill) {
  55. return name.base.isClassSkill(skill);
  56. }
  57. }