Quellcode durchsuchen

Rename AbilityScores -> Ability.
Add a static immutable map from string to ability getter for skills

Sam Jaffe vor 9 Jahren
Ursprung
Commit
551e9b9adb

+ 21 - 2
src/org/leumasjaffe/charsheet/model/AbilityScores.java

@@ -1,5 +1,10 @@
 package org.leumasjaffe.charsheet.model;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Function;
+
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 
 import com.fasterxml.jackson.annotation.JsonCreator;
@@ -14,7 +19,21 @@ import lombok.experimental.FieldDefaults;
 @Data
 @AllArgsConstructor
 @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
-public class AbilityScores {
+public class Ability {
+	public static final Map<String, Function<Scores, IntValue>> fields;
+	
+	static {
+		Map<String, Function<Scores, IntValue>> tmp = new HashMap<>();
+		tmp.put("STR", Scores::getStr);
+		tmp.put("DEX", Scores::getDex);
+		tmp.put("CON", Scores::getCon);
+		tmp.put("INT", Scores::getInt);
+		tmp.put("WIS", Scores::getWis);
+		tmp.put("CHA", Scores::getCha);
+		
+		fields = Collections.unmodifiableMap(tmp);
+	}
+	
 	@Data
 	@AllArgsConstructor
 	@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
@@ -40,7 +59,7 @@ public class AbilityScores {
 	@NonNull Scores base;
 	@NonNull Scores temp;
 	
-	public AbilityScores() {
+	public Ability() {
 		this.base = new Scores();
 		this.temp = new Scores();
 	}

+ 1 - 1
src/org/leumasjaffe/charsheet/model/DDCharacter.java

@@ -44,7 +44,7 @@ public class DDCharacter {
 	
 	@NonNull HitPoints health = new HitPoints();
 	
-	@NonNull AbilityScores abilities = new AbilityScores();
+	@NonNull Ability abilities = new Ability();
 	
 	@NonNull DDInventory inventory = new DDInventory();
 

+ 2 - 2
src/org/leumasjaffe/charsheet/observer/helper/AbilModStringify.java

@@ -4,7 +4,7 @@ import java.util.function.BiConsumer;
 
 import javax.swing.text.JTextComponent;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.util.StringHelper;
 
@@ -12,7 +12,7 @@ public class AbilModStringify implements BiConsumer<JTextComponent, IntValue> {
 
 	@Override
 	public void accept(JTextComponent c, IntValue v) {
-		c.setText(StringHelper.toString(AbilityScores.modifier(v.value())));
+		c.setText(StringHelper.toString(Ability.modifier(v.value())));
 	}
 
 }

+ 1 - 1
src/org/leumasjaffe/charsheet/view/summary/AbilityBox.java

@@ -5,7 +5,7 @@ import javax.swing.JPanel;
 import javax.swing.JTextField;
 import java.awt.Dimension;
 
-import static org.leumasjaffe.charsheet.model.AbilityScores.modifier;
+import static org.leumasjaffe.charsheet.model.Ability.modifier;
 
 import java.awt.Color;
 import java.awt.GridBagLayout;

+ 4 - 4
src/org/leumasjaffe/charsheet/view/summary/AbilityLine.java

@@ -6,7 +6,7 @@ import java.awt.Color;
 import java.awt.Font;
 import javax.swing.border.LineBorder;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 
 import lombok.AccessLevel;
@@ -24,11 +24,11 @@ public class AbilityLine extends JPanel {
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	Function<AbilityScores.Scores, IntValue> access;
+	Function<Ability.Scores, IntValue> access;
 	AbilityBox ability;
 	AbilityBox temporary;
 	
-	public AbilityLine(final String name, Function<AbilityScores.Scores, IntValue> func) {
+	public AbilityLine(final String name, Function<Ability.Scores, IntValue> func) {
 		this.access = func;
 		
 		setMaximumSize(new Dimension(220, 26));
@@ -74,7 +74,7 @@ public class AbilityLine extends JPanel {
 		add(temporary, gbc_temporary);
 	}
 
-	public void setModel(AbilityScores model) {
+	public void setModel(Ability model) {
 		this.ability.setModel(access.apply(model.getBase()));
 		this.temporary.setModel(access.apply(model.getTemp()));
 	}

+ 6 - 6
src/org/leumasjaffe/charsheet/view/summary/AbilityPanel.java

@@ -10,7 +10,7 @@ import java.util.function.Function;
 import java.awt.Dimension;
 import java.awt.Color;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 
 import lombok.AccessLevel;
@@ -23,9 +23,9 @@ public class AbilityPanel extends JPanel {
 	 */
 	private static final long serialVersionUID = 1L;
 	private static final String[] abils = new String[] { "STR", "DEX", "CON", "INT", "WIS", "CHA" };
-	private static final List<Function<AbilityScores.Scores, IntValue>> funcs = Arrays.asList( 
-		AbilityScores.Scores::getStr, AbilityScores.Scores::getDex, AbilityScores.Scores::getCon,
-		AbilityScores.Scores::getInt, AbilityScores.Scores::getWis, AbilityScores.Scores::getCha
+	private static final List<Function<Ability.Scores, IntValue>> funcs = Arrays.asList( 
+		Ability.Scores::getStr, Ability.Scores::getDex, Ability.Scores::getCon,
+		Ability.Scores::getInt, Ability.Scores::getWis, Ability.Scores::getCha
 		);
 	AbilityLine[] lines = new AbilityLine[6];
 	
@@ -46,7 +46,7 @@ public class AbilityPanel extends JPanel {
 		}
 	}
 
-	private AbilityLine addAbility(int y, String name, Function<AbilityScores.Scores, IntValue> func) {
+	private AbilityLine addAbility(int y, String name, Function<Ability.Scores, IntValue> func) {
 		AbilityLine abilityLine = new AbilityLine(name, func);
 		abilityLine.setOpaque(false);
 		GridBagConstraints gbc_abilityLine = new GridBagConstraints();
@@ -58,7 +58,7 @@ public class AbilityPanel extends JPanel {
 		return abilityLine;
 	}
 
-	public void setModel(AbilityScores model) {
+	public void setModel(Ability model) {
 		for (int i = 0; i < abils.length; ++i) {
 			lines[i].setModel(model);
 		}

+ 3 - 3
src/org/leumasjaffe/charsheet/view/summary/ArmorLine.java

@@ -7,7 +7,7 @@ import java.awt.GridBagConstraints;
 import java.awt.Color;
 import javax.swing.border.LineBorder;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacter;
 import org.leumasjaffe.charsheet.model.inventory.DDInventory;
 import org.leumasjaffe.charsheet.model.inventory.DDItem;
@@ -360,7 +360,7 @@ public class ArmorLine extends JPanel {
 			final DDInventory inv = v.getInventory();
 			int iarmor = 0;
 			int ishield = 0;
-			int dex = AbilityScores.modifier(v.getAbilities().getBase().getDex().value());
+			int dex = Ability.modifier(v.getAbilities().getBase().getDex().value());
 			int isize = v.getSize().value().modifier;
 			int inatural = 0;
 			int ideflect = 0;
@@ -402,7 +402,7 @@ public class ArmorLine extends JPanel {
 		
 		armorDexObserver = new IndirectObservableListener<>(dexterity, (c, v) -> {
 			final DDInventory inv = v.getInventory();
-			int dex = AbilityScores.modifier(v.getAbilities().getBase().getDex().value());
+			int dex = Ability.modifier(v.getAbilities().getBase().getDex().value());
 			{
 				final DDItem body = inv.getEquipment().get(EquipmentSlot.BODY);
 				if ( body != null && body.isArmor() ) {

+ 2 - 2
src/org/leumasjaffe/charsheet/view/summary/AttackLine.java

@@ -7,7 +7,7 @@ import java.awt.GridBagConstraints;
 import java.awt.Color;
 import javax.swing.border.LineBorder;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacter;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.observer.helper.AbilModStringify;
@@ -226,7 +226,7 @@ public class AttackLine extends JPanel {
 		gTtlObserver = new IndirectObservableListener<>(grappleTtl,
 				(c, v) -> {
 					final int bab = v.getBaseAttack();
-					final int str = AbilityScores.modifier(this.model.getAbilities().getBase().getStr().value());
+					final int str = Ability.modifier(this.model.getAbilities().getBase().getStr().value());
 					final int size = v.getSize().value().modifier;
 					final int misc = 0;
 					c.setText(StringHelper.toString(bab + str + size + misc));

+ 1 - 1
src/org/leumasjaffe/charsheet/view/summary/InitiativeLine.java

@@ -5,7 +5,7 @@ import java.awt.GridBagLayout;
 import javax.swing.JLabel;
 import java.awt.GridBagConstraints;
 
-import static org.leumasjaffe.charsheet.model.AbilityScores.modifier;
+import static org.leumasjaffe.charsheet.model.Ability.modifier;
 
 import java.awt.Color;
 import javax.swing.border.LineBorder;

+ 4 - 4
src/org/leumasjaffe/charsheet/view/summary/ResistanceLine.java

@@ -7,7 +7,7 @@ import java.awt.GridBagConstraints;
 import java.awt.Color;
 import javax.swing.border.LineBorder;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacter;
 import org.leumasjaffe.charsheet.model.observable.IntValue;
 import org.leumasjaffe.charsheet.observer.helper.AbilModStringify;
@@ -34,14 +34,14 @@ public class ResistanceLine extends JPanel {
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	Function<AbilityScores.Scores, IntValue> access;
+	Function<Ability.Scores, IntValue> access;
 	
 	IndirectObservableListener<JTextField, DDCharacter> totalObserver;
 	IndirectObservableListener<JTextField, DDCharacter> baseObserver;
 	ObservableListener<JTextField, IntValue> abilObserver;
 	
 	public ResistanceLine(final String name, Function<DDCharacter, Integer> save, 
-			Function<AbilityScores.Scores, IntValue> func) {
+			Function<Ability.Scores, IntValue> func) {
 		this.access = func;
 		
 		setMinimumSize(new Dimension(400, 25));
@@ -222,7 +222,7 @@ public class ResistanceLine extends JPanel {
 		totalObserver = new IndirectObservableListener<>(totalField,
 				(c, v) -> {
 					final int base = save.apply(v);
-					final int abil = AbilityScores.modifier(access.apply(v.getAbilities().getBase()).value());
+					final int abil = Ability.modifier(access.apply(v.getAbilities().getBase()).value());
 					final int magic = 0;
 					final int misc = 0;
 					final int temp = 0;

+ 4 - 4
src/org/leumasjaffe/charsheet/view/summary/ResistancePanel.java

@@ -2,7 +2,7 @@ package org.leumasjaffe.charsheet.view.summary;
 
 import javax.swing.JPanel;
 
-import org.leumasjaffe.charsheet.model.AbilityScores;
+import org.leumasjaffe.charsheet.model.Ability;
 import org.leumasjaffe.charsheet.model.DDCharacter;
 
 import java.awt.GridBagLayout;
@@ -31,21 +31,21 @@ public class ResistancePanel extends JPanel {
 		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, Double.MIN_VALUE};
 		setLayout(gridBagLayout);
 		
-		fortitude = new ResistanceLine("FORTITUDE", DDCharacter::getFortSave, AbilityScores.Scores::getCon);
+		fortitude = new ResistanceLine("FORTITUDE", DDCharacter::getFortSave, Ability.Scores::getCon);
 		GridBagConstraints gbc_fortitude = new GridBagConstraints();
 		gbc_fortitude.fill = GridBagConstraints.BOTH;
 		gbc_fortitude.gridx = 0;
 		gbc_fortitude.gridy = 0;
 		add(fortitude, gbc_fortitude);
 		
-		reflex = new ResistanceLine("REFLEX", DDCharacter::getRefSave, AbilityScores.Scores::getDex);
+		reflex = new ResistanceLine("REFLEX", DDCharacter::getRefSave, Ability.Scores::getDex);
 		GridBagConstraints gbc_reflex = new GridBagConstraints();
 		gbc_reflex.fill = GridBagConstraints.BOTH;
 		gbc_reflex.gridx = 0;
 		gbc_reflex.gridy = 1;
 		add(reflex, gbc_reflex);
 		
-		will = new ResistanceLine("WILL", DDCharacter::getWillSave, AbilityScores.Scores::getWis);
+		will = new ResistanceLine("WILL", DDCharacter::getWillSave, Ability.Scores::getWis);
 		GridBagConstraints gbc_will = new GridBagConstraints();
 		gbc_will.fill = GridBagConstraints.BOTH;
 		gbc_will.gridx = 0;