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

Remove wildCard skills that were added in choosing, but no points were allocated towards - to keep down clutter.
Fix rendering on add.

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

+ 8 - 0
src/main/lombok/org/leumasjaffe/charsheet/model/skill/DDSkills.java

@@ -37,4 +37,12 @@ public class DDSkills extends Observable.Instance {
 		skills.computeIfAbsent(name, DDSkill::new);
 		return skills.get(name);
 	}
+	
+	public void removeSkill(DDSkill skill) {
+		final DDSkill removed = skills.get(skill.getName());
+		if (removed != null && !skill.equals(removed)) {
+			throw new IllegalArgumentException("Attempting to remove a skill (" + skill.getName() + ") not in the object");
+		}
+		skills.remove(skill.getName());
+	}
 }

+ 6 - 0
src/main/lombok/org/leumasjaffe/charsheet/view/skills/SkillLevelUpPanel.java

@@ -6,6 +6,7 @@ import java.awt.GridBagLayout;
 import java.awt.Insets;
 import java.util.Map;
 import java.util.TreeMap;
+import java.util.stream.Collectors;
 
 import javax.swing.JLabel;
 import javax.swing.JPanel;
@@ -106,6 +107,8 @@ public abstract class SkillLevelUpPanel extends JPanel {
 			});
 			c.skillPanel.removeAll();
 			c.lines.values().forEach(c.skillPanel::add);
+			c.revalidate();
+			c.repaint();
 		});
 		listener.setObserved(skills);
 		
@@ -125,6 +128,9 @@ public abstract class SkillLevelUpPanel extends JPanel {
 	protected abstract void setIsReady(boolean b);
 	
 	public void commitAllChanges() {
+		skills.getSkills().stream().filter(
+				sk -> sk.isFromWildcardSkill() && sk.getPointsSpent() == 0)
+		.collect(Collectors.toList()).forEach(skills::removeSkill);
 		lines.values().forEach(SkillLevelUpLine::applyChange);
 	}