Explorar o código

Adding spell save DC to spell level headers.

Sam Jaffe %!s(int64=8) %!d(string=hai) anos
pai
achega
d7e546664f

+ 3 - 2
src/org/leumasjaffe/charsheet/view/ClassTab.java

@@ -7,6 +7,7 @@ import lombok.experimental.FieldDefaults;
 import java.awt.GridBagLayout;
 import javax.swing.JTextField;
 
+import org.leumasjaffe.charsheet.model.DDCharacter;
 import org.leumasjaffe.charsheet.model.DDCharacterClass;
 import org.leumasjaffe.charsheet.util.StringHelper;
 import org.leumasjaffe.charsheet.view.magic.SpellPanel;
@@ -27,7 +28,7 @@ public class ClassTab extends JPanel {
 
 	String title;
 	
-	public ClassTab(DDCharacterClass model) {
+	public ClassTab(DDCharacter chara, DDCharacterClass model) {
 		this.title = model.getName();
 		
 		GridBagLayout gridBagLayout = new GridBagLayout();
@@ -106,7 +107,7 @@ public class ClassTab extends JPanel {
 		add(levelBenefits, gbc_levelBenefits);
 		
 		if (model.getSpellBook().isPresent()) {
-			SpellPanel spells = new SpellPanel(model);
+			SpellPanel spells = new SpellPanel(chara, model);
 			GridBagConstraints gbc_spells = new GridBagConstraints();
 			gbc_spells.fill = GridBagConstraints.BOTH;
 			gbc_spells.gridx = 0;

+ 1 - 1
src/org/leumasjaffe/charsheet/view/D20Sheet.java

@@ -150,7 +150,7 @@ public class D20Sheet extends JFrame {
 		classTabs.clear();
 		this.model = model;
 		summaryTab.setModel(model);
-		model.getClasses().stream().forEach(cc -> classTabs.add(new ClassTab(cc)));
+		model.getClasses().stream().forEach(cc -> classTabs.add(new ClassTab(model, cc)));
 		equipmentTab.setModel(model);
 		skillTab.setModel(model);
 		developerMenu.setModel(model);

+ 8 - 3
src/org/leumasjaffe/charsheet/view/magic/SpellPanel.java

@@ -11,11 +11,14 @@ import java.util.function.Function;
 import javax.swing.JTabbedPane;
 
 import org.jdesktop.swingx.VerticalLayout;
+import org.leumasjaffe.charsheet.model.Ability;
+import org.leumasjaffe.charsheet.model.DDCharacter;
 import org.leumasjaffe.charsheet.model.DDCharacterClass;
 import org.leumasjaffe.charsheet.model.DDClass;
 import org.leumasjaffe.charsheet.model.magic.DDSpell;
 import org.leumasjaffe.charsheet.model.magic.DDSpellList;
 import org.leumasjaffe.charsheet.model.magic.DDSpellbook;
+import org.leumasjaffe.charsheet.model.observable.IntValue;
 
 import lombok.AccessLevel;
 import lombok.experimental.FieldDefaults;
@@ -31,7 +34,7 @@ public class SpellPanel extends JPanel {
 	DDCharacterClass dclass;
 	int highestSpellLevel;
 
-	public SpellPanel(final DDCharacterClass cclass) {
+	public SpellPanel(DDCharacter chara, final DDCharacterClass cclass) {
 		dclass = cclass;
 		highestSpellLevel = calcHighestSpellLevel(cclass);
 		final DDSpellbook model = cclass.getSpellBook().get();
@@ -52,12 +55,14 @@ public class SpellPanel extends JPanel {
 		
 		JScrollPane preparedPane = new JScrollPane();
 		spellsPane.addTab("Prepared", null, preparedPane, "Spells the character can use today");
-		generateSpellTree((l) -> new SpellsPerDayHeader(l, model.numSpellsPerDayRemainingAtLevel(l), model.numSpellsPerDayAtLevel(l)),
+
+		final IntValue value = Ability.fields.get(cclass.getProto().getSpells().get().getAbility()).apply(chara.getAbilities().getBase());
+		generateSpellTree((l) -> new SpellsPerDayHeader(l, model.numSpellsPerDayRemainingAtLevel(l), model.numSpellsPerDayAtLevel(l), value),
 				i -> model.spellsPreparedAtLevel(i), preparedPane);
 
 		JScrollPane knownPane = new JScrollPane();
 		spellsPane.addTab("Known", null, knownPane, "Spells the player knows for this class");
-		generateSpellTree((l) -> new SpellsKnownHeader(l, model.numSpellsKnownAtLevel(l)), 
+		generateSpellTree((l) -> new SpellsKnownHeader(l, model.numSpellsKnownAtLevel(l), value), 
 				i -> model.spellsKnownAtLevel(i), knownPane);
 	}
 

+ 34 - 5
src/org/leumasjaffe/charsheet/view/magic/SpellsKnownHeader.java

@@ -8,7 +8,10 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
+import org.leumasjaffe.charsheet.model.Ability;
+import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.util.StringHelper;
+import java.awt.Dimension;
 
 public class SpellsKnownHeader extends JPanel {
 	/**
@@ -16,11 +19,12 @@ public class SpellsKnownHeader extends JPanel {
 	 */
 	private static final long serialVersionUID = 1L;
 
-	public SpellsKnownHeader(int level, int elems) {
+	public SpellsKnownHeader(int level, int elems, IntValue ability) {
+		setPreferredSize(new Dimension(350, 20));
 		GridBagLayout gridBagLayout = new GridBagLayout();
-		gridBagLayout.columnWidths = new int[]{0, 0, 0, 0, 0};
+		gridBagLayout.columnWidths = new int[]{0, 30, 0, 30, 0, 30, 0, 0};
 		gridBagLayout.rowHeights = new int[]{0, 0};
-		gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, Double.MIN_VALUE};
+		gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
 		gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
@@ -33,6 +37,8 @@ public class SpellsKnownHeader extends JPanel {
 		add(lblSpellLevel, gbc_lblSpellLevel);
 		
 		JTextField textFieldLevel = new JTextField(Integer.toString(level));
+		textFieldLevel.setPreferredSize(new Dimension(30, 20));
+		textFieldLevel.setMaximumSize(new Dimension(30, 20));
 		textFieldLevel.setEditable(false);
 		GridBagConstraints gbc_textFieldLevel = new GridBagConstraints();
 		gbc_textFieldLevel.insets = new Insets(0, 0, 0, 5);
@@ -42,17 +48,40 @@ public class SpellsKnownHeader extends JPanel {
 		add(textFieldLevel, gbc_textFieldLevel);
 		textFieldLevel.setColumns(10);
 		
+		JLabel lblSaveDc = new JLabel("Save DC:");
+		GridBagConstraints gbc_lblSaveDc = new GridBagConstraints();
+		gbc_lblSaveDc.anchor = GridBagConstraints.EAST;
+		gbc_lblSaveDc.insets = new Insets(0, 0, 0, 5);
+		gbc_lblSaveDc.gridx = 2;
+		gbc_lblSaveDc.gridy = 0;
+		add(lblSaveDc, gbc_lblSaveDc);
+		
+		JTextField textFieldSpellSave = new JTextField(Integer.toString(10 + level + Ability.modifier(ability.value())));
+		textFieldSpellSave.setPreferredSize(new Dimension(30, 20));
+		textFieldSpellSave.setMaximumSize(new Dimension(30, 20));
+		textFieldSpellSave.setEditable(false);
+		textFieldSpellSave.setColumns(10);
+		GridBagConstraints gbc_textFieldSpellSave = new GridBagConstraints();
+		gbc_textFieldSpellSave.insets = new Insets(0, 0, 0, 5);
+		gbc_textFieldSpellSave.fill = GridBagConstraints.HORIZONTAL;
+		gbc_textFieldSpellSave.gridx = 3;
+		gbc_textFieldSpellSave.gridy = 0;
+		add(textFieldSpellSave, gbc_textFieldSpellSave);
+		
 		JLabel lblSpellsPerDay = new JLabel("Spells Known:");
 		GridBagConstraints gbc_lblSpellsPerDay = new GridBagConstraints();
 		gbc_lblSpellsPerDay.insets = new Insets(0, 0, 0, 5);
-		gbc_lblSpellsPerDay.gridx = 2;
+		gbc_lblSpellsPerDay.gridx = 4;
 		gbc_lblSpellsPerDay.gridy = 0;
 		add(lblSpellsPerDay, gbc_lblSpellsPerDay);
 		
 		JTextField textFieldRemaining = new JTextField(StringHelper.toString(elems, -1, "--"));
+		textFieldRemaining.setPreferredSize(new Dimension(30, 20));
+		textFieldRemaining.setMaximumSize(new Dimension(30, 20));
 		GridBagConstraints gbc_textFieldRemaining = new GridBagConstraints();
 		gbc_textFieldRemaining.insets = new Insets(0, 0, 0, 5);
-		gbc_textFieldRemaining.gridx = 3;
+		gbc_textFieldRemaining.fill = GridBagConstraints.HORIZONTAL;
+		gbc_textFieldRemaining.gridx = 5;
 		gbc_textFieldRemaining.gridy = 0;
 		add(textFieldRemaining, gbc_textFieldRemaining);
 		textFieldRemaining.setEditable(false);

+ 34 - 8
src/org/leumasjaffe/charsheet/view/magic/SpellsPerDayHeader.java

@@ -8,17 +8,22 @@ import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
+import org.leumasjaffe.charsheet.model.Ability;
+import org.leumasjaffe.charsheet.model.observable.IntValue;
+import java.awt.Dimension;
+
 public class SpellsPerDayHeader extends JPanel {
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
-	public SpellsPerDayHeader(int level, int elems, int perDay) {
+	public SpellsPerDayHeader(int level, int elems, int perDay, IntValue ability) {
+		setPreferredSize(new Dimension(350, 20));
 		GridBagLayout gridBagLayout = new GridBagLayout();
-		gridBagLayout.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0};
+		gridBagLayout.columnWidths = new int[]{0, 30, 0, 30, 0, 30, 0, 30, 0, 0};
 		gridBagLayout.rowHeights = new int[]{0, 0};
-		gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
+		gridBagLayout.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
 		gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
@@ -33,24 +38,43 @@ public class SpellsPerDayHeader extends JPanel {
 		JTextField textFieldLevel = new JTextField(Integer.toString(level));
 		textFieldLevel.setEditable(false);
 		GridBagConstraints gbc_textFieldLevel = new GridBagConstraints();
-		gbc_textFieldLevel.insets = new Insets(0, 0, 0, 5);
 		gbc_textFieldLevel.fill = GridBagConstraints.HORIZONTAL;
+		gbc_textFieldLevel.insets = new Insets(0, 0, 0, 5);
 		gbc_textFieldLevel.gridx = 1;
 		gbc_textFieldLevel.gridy = 0;
 		add(textFieldLevel, gbc_textFieldLevel);
 		textFieldLevel.setColumns(10);
 		
+		JLabel lblSaveDc = new JLabel("Save DC:");
+		GridBagConstraints gbc_lblSaveDc = new GridBagConstraints();
+		gbc_lblSaveDc.anchor = GridBagConstraints.EAST;
+		gbc_lblSaveDc.insets = new Insets(0, 0, 0, 5);
+		gbc_lblSaveDc.gridx = 2;
+		gbc_lblSaveDc.gridy = 0;
+		add(lblSaveDc, gbc_lblSaveDc);
+		
+		JTextField textFieldSpellSave = new JTextField(Integer.toString(10 + level + Ability.modifier(ability.value())));
+		textFieldSpellSave.setEditable(false);
+		textFieldSpellSave.setColumns(10);
+		GridBagConstraints gbc_textFieldSpellSave = new GridBagConstraints();
+		gbc_textFieldSpellSave.fill = GridBagConstraints.HORIZONTAL;
+		gbc_textFieldSpellSave.insets = new Insets(0, 0, 0, 5);
+		gbc_textFieldSpellSave.gridx = 3;
+		gbc_textFieldSpellSave.gridy = 0;
+		add(textFieldSpellSave, gbc_textFieldSpellSave);
+		
 		JLabel lblSpellsPerDay = new JLabel("Spells Per Day:");
 		GridBagConstraints gbc_lblSpellsPerDay = new GridBagConstraints();
 		gbc_lblSpellsPerDay.insets = new Insets(0, 0, 0, 5);
-		gbc_lblSpellsPerDay.gridx = 2;
+		gbc_lblSpellsPerDay.gridx = 4;
 		gbc_lblSpellsPerDay.gridy = 0;
 		add(lblSpellsPerDay, gbc_lblSpellsPerDay);
 		
 		JTextField textFieldRemaining = new JTextField(Integer.toString(elems));
 		GridBagConstraints gbc_textFieldRemaining = new GridBagConstraints();
+		gbc_textFieldRemaining.fill = GridBagConstraints.HORIZONTAL;
 		gbc_textFieldRemaining.insets = new Insets(0, 0, 0, 5);
-		gbc_textFieldRemaining.gridx = 3;
+		gbc_textFieldRemaining.gridx = 5;
 		gbc_textFieldRemaining.gridy = 0;
 		add(textFieldRemaining, gbc_textFieldRemaining);
 		textFieldRemaining.setEditable(false);
@@ -59,13 +83,15 @@ public class SpellsPerDayHeader extends JPanel {
 		JLabel label = new JLabel("/");
 		GridBagConstraints gbc_label = new GridBagConstraints();
 		gbc_label.insets = new Insets(0, 0, 0, 5);
-		gbc_label.gridx = 4;
+		gbc_label.gridx = 6;
 		gbc_label.gridy = 0;
 		add(label, gbc_label);
 		
 		JTextField textFieldOutOf = new JTextField(Integer.toString(perDay));
 		GridBagConstraints gbc_textFieldOutOf = new GridBagConstraints();
-		gbc_textFieldOutOf.gridx = 5;
+		gbc_textFieldOutOf.insets = new Insets(0, 0, 0, 5);
+		gbc_textFieldOutOf.fill = GridBagConstraints.HORIZONTAL;
+		gbc_textFieldOutOf.gridx = 7;
 		gbc_textFieldOutOf.gridy = 0;
 		add(textFieldOutOf, gbc_textFieldOutOf);
 		textFieldOutOf.setEditable(false);