Browse Source

Making DDSpellbook use MINIMAL_CLASS.
Fixing bug where spells known panel used spells prepared.

Sam Jaffe 8 years ago
parent
commit
9b26588ef6

+ 2 - 2
resources/Potato.json

@@ -6,7 +6,7 @@
       "level": 3,
       "name": "Cleric",
       "spellBook": {
-        "@class": "org.leumasjaffe.charsheet.model.magic.impl.Inspired",
+        "@c": ".impl.Inspired",
         "classRef": "Cleric",
         "spellInfo": {
           "0": {
@@ -43,7 +43,7 @@
       "level": 2,
       "name": "Bard",
       "spellBook": {
-        "@class": "org.leumasjaffe.charsheet.model.magic.impl.Spontaneous",
+        "@c": ".impl.Spontaneous",
         "spellInfo": {
           "0": {
             "spellsPerDay": 3,

+ 2 - 1
src/main/lombok/org/leumasjaffe/charsheet/model/magic/DDSpellbook.java

@@ -6,10 +6,11 @@ import java.util.List;
 import org.leumasjaffe.observer.Observable;
 
 import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
 
 import lombok.NonNull;
 
-@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY)
+@JsonTypeInfo(use = Id.MINIMAL_CLASS)
 public abstract class DDSpellbook extends Observable {
 	@NonNull public abstract Collection<DDSpell> spellsKnownAtLevel( int level );
 	@NonNull public abstract List<DDSpell> spellsPreparedAtLevel( int level );

+ 7 - 4
src/main/lombok/org/leumasjaffe/charsheet/view/magic/SpellLevelPanel.java

@@ -6,12 +6,14 @@ import java.awt.Component;
 import javax.swing.Box;
 import java.awt.GridBagConstraints;
 import java.awt.Insets;
-import java.util.List;
+import java.util.Collection;
+import java.util.function.BiFunction;
 
 import org.jdesktop.swingx.VerticalLayout;
 import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacterClass;
 import org.leumasjaffe.charsheet.model.magic.DDSpell;
+import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
 import org.leumasjaffe.observer.IndirectObservableListener;
 import org.leumasjaffe.observer.ObserverDispatch;
 
@@ -27,8 +29,9 @@ class SpellLevelPanel extends JPanel {
 	
 	IndirectObservableListener<JPanel, DDCharacterClass> listener;
 
-	protected SpellLevelPanel(JPanel header, DDCharacterClass dclass, int level) {		
-		final List<DDSpell> spells = dclass.getSpellBook().get().spellsPreparedAtLevel(level);
+	protected SpellLevelPanel(JPanel header, DDCharacterClass dclass, int level, 
+			BiFunction<DDSpellbook, Integer, Collection<DDSpell>> getSpells) {		
+		final Collection<DDSpell> spells = getSpells.apply(dclass.getSpellBook().get(), level);
 
 		GridBagLayout gridBagLayout = new GridBagLayout();
 		gridBagLayout.columnWidths = new int[]{0, 0, 0};
@@ -69,7 +72,7 @@ class SpellLevelPanel extends JPanel {
 	}
 	
 	public SpellLevelPanel(DDCharacterClass dclass, int level, Ability.Scores ability) {
-		this(new SpellsKnownHeader(level, dclass.getSpellBook().get(), ability), dclass, level);
+		this(new SpellsKnownHeader(level, dclass.getSpellBook().get(), ability), dclass, level, DDSpellbook::spellsKnownAtLevel);
 	}
 	
 	public boolean isCastableFromHere() { return false; }

+ 2 - 1
src/main/lombok/org/leumasjaffe/charsheet/view/magic/SpellLevelPerDayPanel.java

@@ -2,6 +2,7 @@ package org.leumasjaffe.charsheet.view.magic;
 
 import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacterClass;
+import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
 
 import lombok.AccessLevel;
 import lombok.experimental.FieldDefaults;
@@ -15,7 +16,7 @@ class SpellLevelPerDayPanel extends SpellLevelPanel {
 	private static final long serialVersionUID = 1L;
 	
 	public SpellLevelPerDayPanel(DDCharacterClass dclass, int level, Ability.Scores ability) {
-		super(new SpellsPerDayHeader(level, dclass.getSpellBook().get(), ability), dclass, level);
+		super(new SpellsPerDayHeader(level, dclass.getSpellBook().get(), ability), dclass, level, DDSpellbook::spellsPreparedAtLevel);
 	}
 	
 	public boolean isCastableFromHere() { return true; }