|
@@ -6,17 +6,16 @@ import java.util.ArrayList;
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.function.Consumer;
|
|
import java.util.function.Consumer;
|
|
|
-import java.util.stream.IntStream;
|
|
|
|
|
|
|
|
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JPanel;
|
|
|
|
|
|
|
|
import org.jdesktop.swingx.VerticalLayout;
|
|
import org.jdesktop.swingx.VerticalLayout;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell;
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell;
|
|
|
|
|
+import org.leumasjaffe.charsheet.model.observable.BoolGate;
|
|
|
import org.leumasjaffe.charsheet.view.magic.SelectSpellsPanel;
|
|
import org.leumasjaffe.charsheet.view.magic.SelectSpellsPanel;
|
|
|
import org.leumasjaffe.charsheet.view.magic.SelectSpellsPanel.Info;
|
|
import org.leumasjaffe.charsheet.view.magic.SelectSpellsPanel.Info;
|
|
|
import org.leumasjaffe.charsheet.view.skills.SkillLevelUpPanel;
|
|
import org.leumasjaffe.charsheet.view.skills.SkillLevelUpPanel;
|
|
|
import org.leumasjaffe.function.VoidVoidFunction;
|
|
import org.leumasjaffe.function.VoidVoidFunction;
|
|
|
-import org.leumasjaffe.observer.Observable;
|
|
|
|
|
import org.leumasjaffe.observer.ObservableListener;
|
|
import org.leumasjaffe.observer.ObservableListener;
|
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
import org.leumasjaffe.observer.ObserverDispatch;
|
|
|
|
|
|
|
@@ -37,17 +36,15 @@ import javax.swing.JLabel;
|
|
|
@SuppressWarnings("serial")
|
|
@SuppressWarnings("serial")
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
class UpdateClassWithLevelPanel extends JPanel {
|
|
class UpdateClassWithLevelPanel extends JPanel {
|
|
|
|
|
+ static int CHOOSE_SKILL_INDEX = 0;
|
|
|
static int LEARN_SPELL_INDEX = 1;
|
|
static int LEARN_SPELL_INDEX = 1;
|
|
|
|
|
+ static int PREPARE_SPELL_INDEX = 2;
|
|
|
|
|
|
|
|
- @FieldDefaults(level=AccessLevel.PUBLIC, makeFinal=true)
|
|
|
|
|
- public class BoolArray extends Observable {
|
|
|
|
|
- boolean data[] = new boolean[] {false, false, false};
|
|
|
|
|
- }
|
|
|
|
|
- BoolArray readyCount = new BoolArray();
|
|
|
|
|
- ObservableListener<Consumer<Boolean>, BoolArray> listener;
|
|
|
|
|
|
|
+ BoolGate readyCount = new BoolGate(3);
|
|
|
|
|
+ ObservableListener<Consumer<Boolean>, BoolGate> listener;
|
|
|
JTabbedPane tabbedPane;
|
|
JTabbedPane tabbedPane;
|
|
|
@NonFinal LevelUpSpellPanel learnSpells = null;
|
|
@NonFinal LevelUpSpellPanel learnSpells = null;
|
|
|
- @NonFinal ObservableListener<UpdateClassWithLevelPanel, BoolArray> learnAndPrepareListener = null;
|
|
|
|
|
|
|
+ @NonFinal ObservableListener<UpdateClassWithLevelPanel, BoolGate> learnAndPrepareListener = null;
|
|
|
|
|
|
|
|
public UpdateClassWithLevelPanel(LevelUpClassInfo info, VoidVoidFunction back,
|
|
public UpdateClassWithLevelPanel(LevelUpClassInfo info, VoidVoidFunction back,
|
|
|
Consumer<Boolean> setReady) {
|
|
Consumer<Boolean> setReady) {
|
|
@@ -75,23 +72,23 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
|
|
|
|
|
JPanel skills = new SkillLevelUpPanel(info.ddCharacter, info.ddClass) {
|
|
JPanel skills = new SkillLevelUpPanel(info.ddCharacter, info.ddClass) {
|
|
|
@Override public void setIsReady(boolean b) {
|
|
@Override public void setIsReady(boolean b) {
|
|
|
- readyCount.data[0] = b;
|
|
|
|
|
|
|
+ readyCount.set(CHOOSE_SKILL_INDEX, b);
|
|
|
ObserverDispatch.notifySubscribers(readyCount, null);
|
|
ObserverDispatch.notifySubscribers(readyCount, null);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
tabbedPane.addTab("Skills", null, skills, null);
|
|
tabbedPane.addTab("Skills", null, skills, null);
|
|
|
|
|
|
|
|
info.ddClass.getSpellBook().ifPresent(sb -> {
|
|
info.ddClass.getSpellBook().ifPresent(sb -> {
|
|
|
- readyCount.data[1] = !sb.learnsSpells();
|
|
|
|
|
- readyCount.data[2] = !sb.preparesSpells();
|
|
|
|
|
|
|
+ readyCount.set(1, !sb.learnsSpells());
|
|
|
|
|
+ readyCount.set(2, !sb.preparesSpells());
|
|
|
if (sb.learnsSpells()) {
|
|
if (sb.learnsSpells()) {
|
|
|
LevelUpSpellPanel spells = new LevelUpSpellPanel(LEARN,
|
|
LevelUpSpellPanel spells = new LevelUpSpellPanel(LEARN,
|
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
|
- readyCount, LEARN_SPELL_INDEX);
|
|
|
|
|
|
|
+ readyCount.handle(LEARN_SPELL_INDEX));
|
|
|
tabbedPane.addTab("Learn Spells", null, spells, null);
|
|
tabbedPane.addTab("Learn Spells", null, spells, null);
|
|
|
if (sb.preparesSpells()) {
|
|
if (sb.preparesSpells()) {
|
|
|
learnAndPrepareListener = new ObservableListener<>(this, (c, v) -> {
|
|
learnAndPrepareListener = new ObservableListener<>(this, (c, v) -> {
|
|
|
- if (v.data[LEARN_SPELL_INDEX]) {
|
|
|
|
|
|
|
+ if (v.get(LEARN_SPELL_INDEX)) {
|
|
|
c.createPrepareLearnedSpellPanel(info, spells);
|
|
c.createPrepareLearnedSpellPanel(info, spells);
|
|
|
} else {
|
|
} else {
|
|
|
c.tabbedPane.remove(learnSpells);
|
|
c.tabbedPane.remove(learnSpells);
|
|
@@ -104,7 +101,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
else if (sb.preparesSpells()) {
|
|
else if (sb.preparesSpells()) {
|
|
|
LevelUpSpellPanel spells = new LevelUpSpellPanel(PREPARE,
|
|
LevelUpSpellPanel spells = new LevelUpSpellPanel(PREPARE,
|
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
|
- readyCount, 2);
|
|
|
|
|
|
|
+ readyCount.handle(PREPARE_SPELL_INDEX));
|
|
|
tabbedPane.addTab("Prepare Spells", null, spells, null);
|
|
tabbedPane.addTab("Prepare Spells", null, spells, null);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -137,8 +134,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
panel.add(horizontalGlue, gbc_horizontalGlue);
|
|
panel.add(horizontalGlue, gbc_horizontalGlue);
|
|
|
|
|
|
|
|
listener = new ObservableListener<>(setReady, (c, v) -> {
|
|
listener = new ObservableListener<>(setReady, (c, v) -> {
|
|
|
- c.accept(IntStream.range(0, v.data.length)
|
|
|
|
|
- .mapToObj(i -> v.data[i]).allMatch(b -> b));
|
|
|
|
|
|
|
+ c.accept(v.all());
|
|
|
});
|
|
});
|
|
|
listener.setObserved(readyCount);
|
|
listener.setObserved(readyCount);
|
|
|
}
|
|
}
|
|
@@ -162,7 +158,7 @@ class UpdateClassWithLevelPanel extends JPanel {
|
|
|
|
|
|
|
|
learnSpells = new LevelUpSpellPanel(pick,
|
|
learnSpells = new LevelUpSpellPanel(pick,
|
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
new SelectSpellsPanel.Info(info.ddCharacter, info.ddClass),
|
|
|
- readyCount, 2);
|
|
|
|
|
|
|
+ readyCount.handle(PREPARE_SPELL_INDEX));
|
|
|
tabbedPane.addTab("Prepare Spells", null, learnSpells, null);
|
|
tabbedPane.addTab("Prepare Spells", null, learnSpells, null);
|
|
|
}
|
|
}
|
|
|
|
|
|