|
@@ -4,9 +4,6 @@ import javax.swing.JPanel;
|
|
|
import java.awt.GridBagLayout;
|
|
import java.awt.GridBagLayout;
|
|
|
import java.awt.GridBagConstraints;
|
|
import java.awt.GridBagConstraints;
|
|
|
import java.awt.Insets;
|
|
import java.awt.Insets;
|
|
|
-import java.util.Collections;
|
|
|
|
|
-import java.util.HashMap;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
import java.util.Optional;
|
|
import java.util.Optional;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
import java.util.function.Function;
|
|
import java.util.function.Function;
|
|
@@ -15,10 +12,12 @@ import javax.swing.JTextArea;
|
|
|
|
|
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
import org.leumasjaffe.charsheet.model.DDCharacter;
|
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
import org.leumasjaffe.charsheet.model.DDCharacterClass;
|
|
|
|
|
+import org.leumasjaffe.charsheet.model.features.GroupedBonus;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell;
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell;
|
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell.Component;
|
|
import org.leumasjaffe.charsheet.model.magic.DDSpell.Component;
|
|
|
import org.leumasjaffe.charsheet.model.magic.Source;
|
|
import org.leumasjaffe.charsheet.model.magic.Source;
|
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
|
|
|
+import org.leumasjaffe.collections.Tree;
|
|
|
|
|
|
|
|
import javax.swing.JScrollPane;
|
|
import javax.swing.JScrollPane;
|
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JLabel;
|
|
@@ -38,7 +37,7 @@ class SpellInfoPanel extends JPanel {
|
|
|
|
|
|
|
|
public SpellInfoPanel(DDCharacter chara, DDCharacterClass dclass, final DDSpell spell) {
|
|
public SpellInfoPanel(DDCharacter chara, DDCharacterClass dclass, final DDSpell spell) {
|
|
|
final IntValue classLevel = dclass.getLevel();
|
|
final IntValue classLevel = dclass.getLevel();
|
|
|
- Map<String, Object> props = new HashMap<>();
|
|
|
|
|
|
|
+ Tree<String, GroupedBonus> props = new Tree<>();
|
|
|
chara.getFeatureBonuses(spell).forEach(p -> p.accumulate(props, dclass, spell));
|
|
chara.getFeatureBonuses(spell).forEach(p -> p.accumulate(props, dclass, spell));
|
|
|
|
|
|
|
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
|
@@ -344,9 +343,8 @@ class SpellInfoPanel extends JPanel {
|
|
|
description.setLineWrap(true);
|
|
description.setLineWrap(true);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
|
|
- private Map<String, Integer> getSpellBonus(String key, Map<String, Object> props) {
|
|
|
|
|
- return (Map<String, Integer>) props.getOrDefault(key, Collections.emptyMap());
|
|
|
|
|
|
|
+ private Number getSpellBonus(String key, Tree<String, GroupedBonus> props) {
|
|
|
|
|
+ return props.get(key).getOrDefault(new GroupedBonus());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private <T> String asString(Optional<T> obj, Function<? super T, String> ts) {
|
|
private <T> String asString(Optional<T> obj, Function<? super T, String> ts) {
|