Przeglądaj źródła

Adding experience to ClassTab

(cherry picked from commit 1a333c2a0ee44c77c61cb7f42314ae8a047595c6)
Sam Jaffe 8 lat temu
rodzic
commit
321832c3e1

+ 3 - 0
src/org/leumasjaffe/charsheet/model/DDCharacter.java

@@ -6,6 +6,7 @@ import java.util.Iterator;
 import java.util.Set;
 
 import org.leumasjaffe.charsheet.model.inventory.DDInventory;
+import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.model.observable.ObjectValue;
 import org.leumasjaffe.charsheet.model.skill.DDSkills;
 
@@ -43,6 +44,8 @@ public class DDCharacter {
 	@NonNull String hair = "";
 	@NonNull String skin = "";
 	
+	@NonNull IntValue experience = new IntValue();
+	
 	@NonNull HitPoints health = new HitPoints();
 	
 	@NonNull Ability abilities = new Ability();

+ 119 - 5
src/org/leumasjaffe/charsheet/view/ClassTab.java

@@ -12,6 +12,11 @@ import org.leumasjaffe.charsheet.util.StringHelper;
 
 import java.awt.GridBagConstraints;
 import java.awt.Insets;
+import javax.swing.JLabel;
+import java.awt.Component;
+import javax.swing.Box;
+import java.awt.Font;
+import java.awt.Dimension;
 
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
 public class ClassTab extends JPanel {
@@ -21,6 +26,7 @@ public class ClassTab extends JPanel {
 	private static final long serialVersionUID = 1L;
 
 	String title;
+	private JTextField experienceField;
 	
 	public ClassTab(DDCharacterClass model) {
 		this.title = model.getName();
@@ -32,9 +38,36 @@ public class ClassTab extends JPanel {
 		gridBagLayout.rowWeights = new double[]{0.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
+		JPanel header = new JPanel();
+		header.setPreferredSize(new Dimension(400, 20));
+		GridBagConstraints gbc_header = new GridBagConstraints();
+		gbc_header.insets = new Insets(0, 0, 5, 0);
+		gbc_header.fill = GridBagConstraints.BOTH;
+		gbc_header.gridx = 0;
+		gbc_header.gridy = 0;
+		add(header, gbc_header);
+		GridBagLayout gbl_header = new GridBagLayout();
+		gbl_header.columnWidths = new int[]{0, 50, 0, 0, 50, 0, 0, 65, 0, 65, 0, 0};
+		gbl_header.rowHeights = new int[]{0, 0};
+		gbl_header.columnWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
+		gbl_header.rowWeights = new double[]{0.0, Double.MIN_VALUE};
+		header.setLayout(gbl_header);
+		
+		JLabel lblClass = new JLabel("Class:");
+		lblClass.setFont(new Font("Tahoma", Font.BOLD, 14));
+		GridBagConstraints gbc_lblClass = new GridBagConstraints();
+		gbc_lblClass.insets = new Insets(0, 0, 0, 5);
+		gbc_lblClass.anchor = GridBagConstraints.EAST;
+		gbc_lblClass.gridx = 0;
+		gbc_lblClass.gridy = 0;
+		header.add(lblClass, gbc_lblClass);
+		
 		JTextField nameField = new JTextField();
-		nameField.setEditable(false);
+		nameField.setPreferredSize(new Dimension(50, 20));
+		nameField.setMaximumSize(new Dimension(50, 20));
+		nameField.setMinimumSize(new Dimension(50, 20));
 		GridBagConstraints gbc_nameField = new GridBagConstraints();
+		gbc_nameField.fill = GridBagConstraints.HORIZONTAL;
 		gbc_nameField.insets = new Insets(0, 0, 0, 5);
 		gbc_nameField.fill = GridBagConstraints.HORIZONTAL;
 		gbc_nameField.gridx = 0;
@@ -42,17 +75,98 @@ public class ClassTab extends JPanel {
 		add(nameField, gbc_nameField);
 		nameField.setColumns(10);
 		
+		nameField.setText(model.getName());
+		
+		Component horizontalStrut = Box.createHorizontalStrut(20);
+		GridBagConstraints gbc_horizontalStrut = new GridBagConstraints();
+		gbc_horizontalStrut.insets = new Insets(0, 0, 0, 5);
+		gbc_horizontalStrut.gridx = 2;
+		gbc_horizontalStrut.gridy = 0;
+		header.add(horizontalStrut, gbc_horizontalStrut);
+		
+		JLabel lblLevel = new JLabel("Level:");
+		lblLevel.setFont(new Font("Tahoma", Font.BOLD, 14));
+		GridBagConstraints gbc_lblLevel = new GridBagConstraints();
+		gbc_lblLevel.fill = GridBagConstraints.HORIZONTAL;
+		gbc_lblLevel.insets = new Insets(0, 0, 0, 5);
+		gbc_lblLevel.gridx = 3;
+		gbc_lblLevel.gridy = 0;
+		header.add(lblLevel, gbc_lblLevel);
+		
 		JTextField levelField = new JTextField();
-		levelField.setEditable(false);
+		levelField.setPreferredSize(new Dimension(50, 20));
+		levelField.setMaximumSize(new Dimension(50, 20));
+		levelField.setMinimumSize(new Dimension(50, 20));
 		GridBagConstraints gbc_levelField = new GridBagConstraints();
 		gbc_levelField.fill = GridBagConstraints.HORIZONTAL;
-		gbc_levelField.gridx = 1;
+		gbc_levelField.insets = new Insets(0, 0, 0, 5);
+		gbc_levelField.gridx = 4;
 		gbc_levelField.gridy = 0;
 		add(levelField, gbc_levelField);
 		levelField.setColumns(10);
 		
-		nameField.setText(model.getName());
-		levelField.setText(StringHelper.toString(model.getLevel()));
+		Component horizontalStrut_1 = Box.createHorizontalStrut(20);
+		GridBagConstraints gbc_horizontalStrut_1 = new GridBagConstraints();
+		gbc_horizontalStrut_1.insets = new Insets(0, 0, 0, 5);
+		gbc_horizontalStrut_1.gridx = 5;
+		gbc_horizontalStrut_1.gridy = 0;
+		header.add(horizontalStrut_1, gbc_horizontalStrut_1);
+		
+		JLabel lblExperience = new JLabel("Experience:");
+		lblExperience.setFont(new Font("Tahoma", Font.BOLD, 14));
+		GridBagConstraints gbc_lblExperience = new GridBagConstraints();
+		gbc_lblExperience.anchor = GridBagConstraints.EAST;
+		gbc_lblExperience.insets = new Insets(0, 0, 0, 5);
+		gbc_lblExperience.gridx = 6;
+		gbc_lblExperience.gridy = 0;
+		header.add(lblExperience, gbc_lblExperience);
+		
+		experienceField = new JTextField();
+		experienceField.setText(Integer.toString(chara.getExperience().value()));
+		experienceField.setEditable(false);
+		experienceField.setColumns(10);
+		GridBagConstraints gbc_experienceField = new GridBagConstraints();
+		gbc_experienceField.insets = new Insets(0, 0, 0, 5);
+		gbc_experienceField.fill = GridBagConstraints.HORIZONTAL;
+		gbc_experienceField.gridx = 7;
+		gbc_experienceField.gridy = 0;
+		header.add(experienceField, gbc_experienceField);
+		
+		JLabel label = new JLabel("/");
+		GridBagConstraints gbc_label = new GridBagConstraints();
+		gbc_label.anchor = GridBagConstraints.EAST;
+		gbc_label.insets = new Insets(0, 0, 0, 5);
+		gbc_label.gridx = 8;
+		gbc_label.gridy = 0;
+		header.add(label, gbc_label);
+		
+		JTextField nextLvlField = new JTextField();
+		nextLvlField.setText(Integer.toString(chara.getLevel() * (chara.getLevel() + 1) * 500));
+		nextLvlField.setEditable(false);
+		nextLvlField.setColumns(10);
+		GridBagConstraints gbc_nextLvlField = new GridBagConstraints();
+		gbc_nextLvlField.insets = new Insets(0, 0, 0, 5);
+		gbc_nextLvlField.fill = GridBagConstraints.HORIZONTAL;
+		gbc_nextLvlField.gridx = 9;
+		gbc_nextLvlField.gridy = 0;
+		header.add(nextLvlField, gbc_nextLvlField);
+		
+		JPanel levelBenefits = new JPanel();
+		GridBagConstraints gbc_levelBenefits = new GridBagConstraints();
+		gbc_levelBenefits.insets = new Insets(0, 0, 5, 0);
+		gbc_levelBenefits.fill = GridBagConstraints.BOTH;
+		gbc_levelBenefits.gridx = 0;
+		gbc_levelBenefits.gridy = 1;
+		add(levelBenefits, gbc_levelBenefits);
+		
+		if (model.getSpellBook().isPresent()) {
+			SpellPanel spells = new SpellPanel(chara, model);
+			GridBagConstraints gbc_spells = new GridBagConstraints();
+			gbc_spells.fill = GridBagConstraints.BOTH;
+			gbc_spells.gridx = 0;
+			gbc_spells.gridy = 2;
+			add(spells, gbc_spells);
+		}
 	}
 	
 	@Override