|
|
@@ -1,6 +1,7 @@
|
|
|
package org.leumasjaffe.charsheet.model.magic.impl;
|
|
|
|
|
|
import java.util.Collection;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -26,23 +27,23 @@ public class Spontaneous implements DDSpellbook {
|
|
|
@NonNull Map<Integer, Spontaneous.Level> spellInfo;
|
|
|
|
|
|
@Override
|
|
|
- public int numSpellsPerDayAtLevel( int level ) {
|
|
|
- return spellInfo.get( level ).spellsPerDay;
|
|
|
+ public int numSpellsPerDayAtLevel(int level) {
|
|
|
+ return get(level).spellsPerDay;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int numSpellsPerDayRemainingAtLevel( int level ) {
|
|
|
- return spellInfo.get( level ).spellsPerDayRemaining;
|
|
|
+ public int numSpellsPerDayRemainingAtLevel(int level) {
|
|
|
+ return get(level).spellsPerDayRemaining;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public Collection<DDSpell> spellsKnownAtLevel(int level) {
|
|
|
- return spellsPreparedAtLevel( level );
|
|
|
+ return spellsPreparedAtLevel(level);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<DDSpell> spellsPreparedAtLevel(int level) {
|
|
|
- return spellInfo.get( level ).spellsKnown;
|
|
|
+ return Collections.unmodifiableList(get(level).spellsKnown);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -50,6 +51,10 @@ public class Spontaneous implements DDSpellbook {
|
|
|
if (numSpellsPerDayRemainingAtLevel(level) == 0) {
|
|
|
throw new IllegalStateException("Attempting to cast a spell while out of slots");
|
|
|
}
|
|
|
- --spellInfo.get( level ).spellsPerDayRemaining;
|
|
|
+ --get(level).spellsPerDayRemaining;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Level get(int level) {
|
|
|
+ return spellInfo.getOrDefault(level, new Level(Collections.emptyList(), 0, 0));
|
|
|
}
|
|
|
}
|