DDSpellbook.java 956 B

123456789101112131415161718192021222324252627282930313233
  1. package org.leumasjaffe.charsheet.model.magic;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import com.fasterxml.jackson.annotation.JsonTypeInfo;
  5. import lombok.NonNull;
  6. @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
  7. public interface DDSpellbook {
  8. @NonNull Collection<DDSpell> spellsKnownAtLevel( int level );
  9. @NonNull List<DDSpell> spellsPreparedAtLevel( int level );
  10. @NonNull default List<DDSpell> getSpellsPreparedPreviouslyForLevel(int level) { return spellsPreparedAtLevel(level); }
  11. default boolean preparesSpells() { return false; }
  12. default int numSpellsKnownAtLevel( int level ) {
  13. return spellsKnownAtLevel( level ).size();
  14. }
  15. int numSpellsPerDayAtLevel( int level );
  16. default int numSpellsPerDayRemainingAtLevel(int level) {
  17. return spellsPreparedAtLevel( level ).size();
  18. }
  19. void castSpell( int level, final DDSpell spell );
  20. void prepareSpells(int level, List<DDSpell> spells);
  21. }