Ver Fonte

Fixing bug with calcHighestSpellLevel, simplifying the code

Sam Jaffe há 8 anos atrás
pai
commit
e6ef460e22

+ 13 - 0
resources/Potato.json

@@ -18,6 +18,10 @@
             "spellsPrepared":[
               "Create Water"
             ]
+          },
+          "2":{
+            "spellsPerDay":1,
+            "spellsPrepared":[]
           }
         }
       }
@@ -32,8 +36,17 @@
             "spellsPerDay":3,
             "spellsPerDayRemaining":3,
             "spellsKnown":[
+              "Know Direction",
+              "Know Direction",
+              "Know Direction",
+              "Know Direction",
               "Know Direction"
             ]
+          },
+          "1":{
+            "spellsPerDay":0,
+            "spellsPerDayRemaining":0,
+            "spellsKnown":[]
           }
         }
       }

+ 5 - 13
src/org/leumasjaffe/charsheet/view/magic/SpellPanel.java

@@ -65,25 +65,17 @@ public class SpellPanel extends JPanel {
 	}
 
 	private static int calcHighestSpellLevel(final DDCharacterClass cclass) {
-		int level = 0;
-		final DDSpellList spellList = DDClass.getFromResource(cclass.getName()).getSpells().get();
-		final int cLvl = cclass.getLevel();
-		if (spellList.getKnown().isEmpty()) {
-			List<Integer> list = spellList.getPerDay().get(cLvl-1);
-			level = list.size() - 1;
-			if (list.get(list.size()-1) == 0) {
-				--level;
-			}
-		} else {
-			level = spellList.getKnown().get(cLvl-1).size()-1;
-		}
-		return level;
+		// TODO: Bonus levels to spellsKnown/spellsPerDay?
+		final List<Integer> list = cclass.getProto().getSpells().get().getPerDay().get(cclass.getLevel()-1);
+		final int level = list.size() - 1;
+		return list.get(level) == 0 ? level : level + 1;
 	}
 
 	private void generateSpellTree(final Function<Integer, JPanel> getPanel, final JScrollPane preparedPane) {
 		JPanel root = new JPanel();
 		root.setLayout(new VerticalLayout());
 		
+		// TODO some classes don't get 0-th level spells
 		for (int i = 0; i < highestSpellLevel; ++i) {
 			root.add(getPanel.apply(i));
 		}