Переглянути джерело

Move experience computation to ExperienceDialog

Sam Jaffe 8 роки тому
батько
коміт
abc15cae63

+ 23 - 1
src/main/lombok/org/leumasjaffe/charsheet/view/level/ExperienceDialog.java

@@ -1,5 +1,7 @@
 package org.leumasjaffe.charsheet.view.level;
 
+import java.util.Arrays;
+
 import javax.swing.JOptionPane;
 
 import org.leumasjaffe.charsheet.model.DDCharacter;
@@ -10,7 +12,16 @@ import lombok.experimental.UtilityClass;
 
 @UtilityClass
 public class ExperienceDialog {
-	public void GainExperience(DDCharacter model) {
+	private int[] EXPERIENCE_CACHE;
+	static {
+		final int levelsToCalc = 20;
+		EXPERIENCE_CACHE = new int[levelsToCalc];
+		for (int i = 0; i < levelsToCalc; ++i) {
+			EXPERIENCE_CACHE[i] = experienceForLevel(i+1);
+		}
+	}
+
+	public void gainExperience(DDCharacter model) {
 		final String input = JOptionPane.showInputDialog("How much experience");
 		if (input == null || input.isEmpty()) return;
 		final int exp = Integer.parseInt(input);
@@ -19,4 +30,15 @@ public class ExperienceDialog {
 		mdlExp.value(mdlExp.value()+exp);
 		ObserverDispatch.notifySubscribers(mdlExp, null);
 	}
+	
+	public static int computeLevelsNeeded(DDCharacter chara, int bonusLevels) {
+		final int exp = chara.getExperience().value();
+		final int currentLevel = chara.getLevel();
+		final int expectedLevel = Math.abs(Arrays.binarySearch(EXPERIENCE_CACHE, exp) + 1);
+		return bonusLevels + expectedLevel - currentLevel;
+	}
+
+	public int experienceForLevel(int level) {
+		return 500 * level * (level - 1);
+	}
 }

+ 3 - 25
src/main/lombok/org/leumasjaffe/charsheet/view/level/LevelUpDialog.java

@@ -1,7 +1,5 @@
 package org.leumasjaffe.charsheet.view.level;
 
-import java.util.Arrays;
-
 import javax.swing.JPanel;
 
 import org.leumasjaffe.charsheet.model.DDCharacter;
@@ -18,28 +16,12 @@ import javax.swing.JDialog;
 
 @SuppressWarnings("serial")
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
-public class LevelUpDialog extends JPanel {
-	static int[] EXPERIENCE_CACHE;
-	static {
-		final int levelsToCalc = 20;
-		EXPERIENCE_CACHE = new int[levelsToCalc];
-		for (int i = 0; i < levelsToCalc; ++i) {
-			EXPERIENCE_CACHE[i] = experienceForLevel(i);
-		}
-	}
-	
+public class LevelUpDialog extends JPanel {	
 	ChooseClassLevelUpDialog chooseClass;
 	JButton btnCommit;
 	@NonFinal UpdateClassWithLevelPanel updateClass;
 	private GridBagConstraints gbc_main;
-	
-	public static int computeLevelsNeeded(DDCharacter chara, int bonusLevels) {
-		final int exp = chara.getExperience().value();
-		final int currentLevel = chara.getLevel();
-		final int expectedLevel = Math.abs(Arrays.binarySearch(EXPERIENCE_CACHE, exp) + 1);
-		return bonusLevels + expectedLevel - currentLevel;
-	}
-	
+		
 	public LevelUpDialog(DDCharacter chara) {
 		GridBagLayout gridBagLayout = new GridBagLayout();
 		gridBagLayout.columnWidths = new int[]{0, 0};
@@ -113,9 +95,5 @@ public class LevelUpDialog extends JPanel {
 		revalidate();
 		repaint();
 		((JDialog) this.getParent().getParent().getParent()).pack();
-	}
-	
-	private static int experienceForLevel(int level) {
-		return 500 * level * (level + 1);
-	}
+	}	
 }