|
|
@@ -13,6 +13,7 @@ import java.util.function.Consumer;
|
|
|
import javax.swing.JPanel;
|
|
|
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
|
+import org.leumasjaffe.charsheet.model.DDCharacterClass.DDSpellbookWrapper;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
|
|
|
import org.leumasjaffe.charsheet.model.observable.BoolGate;
|
|
|
@@ -85,13 +86,14 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
};
|
|
|
tabbedPane.addTab("Skills", null, skills, null);
|
|
|
|
|
|
- info.ddClass.getSpellBook().ifPresent(sb -> {
|
|
|
+ // FIXME: Provide Work for secondary
|
|
|
+ info.ddClass.getSpellBook().map(DDSpellbookWrapper::getMain).ifPresent(sb -> {
|
|
|
readyCount.set(LEARN_SPELL_INDEX, !sb.learnsSpells());
|
|
|
readyCount.set(PREPARE_SPELL_INDEX, !sb.preparesSpells());
|
|
|
if (sb.learnsSpells()) {
|
|
|
createPanelsForLearnSpell(sb);
|
|
|
} else if (sb.preparesSpells()) {
|
|
|
- createPanelForPrepareSpells();
|
|
|
+ createPanelForPrepareSpells(sb);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
@@ -125,22 +127,22 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
listener = readyCount.makeListener(setReady);
|
|
|
}
|
|
|
|
|
|
- private void createPanelForPrepareSpells() {
|
|
|
+ private void createPanelForPrepareSpells(DDSpellbook sb) {
|
|
|
prepSpells = Optional.of(new LevelUpSpellPanel(PREPARE,
|
|
|
- new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass),
|
|
|
+ new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass, sb),
|
|
|
readyCount.handle(PREPARE_SPELL_INDEX)));
|
|
|
tabbedPane.addTab("Prepare Spells", null, prepSpells.get(), null);
|
|
|
}
|
|
|
|
|
|
private void createPanelsForLearnSpell(DDSpellbook sb) {
|
|
|
learnSpells = Optional.of(new LevelUpSpellPanel(LEARN,
|
|
|
- new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass),
|
|
|
+ new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass, sb),
|
|
|
readyCount.handle(LEARN_SPELL_INDEX)));
|
|
|
tabbedPane.addTab("Learn Spells", null, learnSpells.get(), null);
|
|
|
if (sb.preparesSpells()) {
|
|
|
learnAndPrepareListener = new ObservableListener<>(this, (c, v) -> {
|
|
|
if (v.get(LEARN_SPELL_INDEX)) {
|
|
|
- if (!prepSpells.isPresent()) c.createPrepareLearnedSpellPanel(learnSpells.get());
|
|
|
+ if (!prepSpells.isPresent()) c.createPrepareLearnedSpellPanel(learnSpells.get(), sb);
|
|
|
} else {
|
|
|
prepSpells.ifPresent(c.tabbedPane::remove);
|
|
|
c.prepSpells = Optional.empty();
|
|
|
@@ -150,7 +152,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void createPrepareLearnedSpellPanel(LevelUpSpellPanel spells) {
|
|
|
+ private void createPrepareLearnedSpellPanel(LevelUpSpellPanel spells, DDSpellbook sb) {
|
|
|
LevelUpSpellPanel.SpellPicker pick = new LevelUpSpellPanel.SpellPicker() {
|
|
|
@Override
|
|
|
public List<List<Integer>> getSpellCounts(Info info) {
|
|
|
@@ -168,7 +170,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
};
|
|
|
|
|
|
prepSpells = Optional.of(new LevelUpSpellPanel(pick,
|
|
|
- new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass),
|
|
|
+ new SelectSpellsPanel.Info(levelUpInfo.ddCharacter, levelUpInfo.ddClass, sb),
|
|
|
readyCount.handle(PREPARE_SPELL_INDEX)));
|
|
|
tabbedPane.addTab("Prepare Spells", null, prepSpells.get(), null);
|
|
|
}
|
|
|
@@ -205,7 +207,8 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
public void commitAllChanges() {
|
|
|
final String className = levelUpInfo.ddClass.getName();
|
|
|
skills.commitAllChanges();
|
|
|
- final Optional<DDSpellbook> maybeBook = levelUpInfo.ddClass.getSpellBook();
|
|
|
+ // FIXME: Secondary spellbook here too?
|
|
|
+ final Optional<DDSpellbook> maybeBook = levelUpInfo.ddClass.getSpellBook().map(DDSpellbookWrapper::getMain);
|
|
|
maybeBook.ifPresent(this::commitSpellbook);
|
|
|
final SortedSet<DDCharacterClass> classes = new TreeSet<>(levelUpInfo.ddCharacter.getClasses());
|
|
|
classes.removeIf(cc -> cc.getName().equals(className));
|