Ver código fonte

Added models for DDSkill and related objects.

Sam Jaffe 9 anos atrás
pai
commit
2e62f7565c

+ 34 - 0
src/org/leumasjaffe/charsheet/model/skill/DDSkill.java

@@ -0,0 +1,34 @@
+package org.leumasjaffe.charsheet.model.skill;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Setter;
+import lombok.experimental.FieldDefaults;
+
+@AllArgsConstructor
+@Data
+@FieldDefaults(level=AccessLevel.PRIVATE)
+public class DDSkill {
+	final String name;
+	final boolean requiresTraining;
+	String ability;
+
+	boolean isClassSkill = false;
+	@Setter(value=AccessLevel.PRIVATE) float ranks = 0.0f; // realistically, int + .0/.5
+	// This would be 2x ranks if cross-class, 1x if class.
+	// Unless you gain it as a class skill later, in which case it might be in-between
+	@Setter(value=AccessLevel.PRIVATE) int pointsSpent = 0;
+	
+	public DDSkill(DDSkillPrototype proto) {
+		this.name = proto.getName();
+		this.requiresTraining = proto.isRequiresTraining();
+		this.ability = proto.getAbility();
+	}
+	
+	public void allocatePoints(int points) {
+		pointsSpent += points;
+		if ( isClassSkill ) { ranks += points; }
+		else { ranks += ( points / 2.0 ); }
+	}
+}

+ 15 - 0
src/org/leumasjaffe/charsheet/model/skill/DDSkillPrototype.java

@@ -0,0 +1,15 @@
+package org.leumasjaffe.charsheet.model.skill;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.experimental.FieldDefaults;
+
+@AllArgsConstructor
+@Data
+@FieldDefaults(level=AccessLevel.PRIVATE)
+public class DDSkillPrototype {
+	final String name;
+	final boolean requiresTraining;
+	String ability;
+}

+ 27 - 0
src/org/leumasjaffe/charsheet/model/skill/DDSkills.java

@@ -0,0 +1,27 @@
+package org.leumasjaffe.charsheet.model.skill;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+import lombok.AccessLevel;
+import lombok.experimental.FieldDefaults;
+
+@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
+public class DDSkills {
+	Map<String, DDSkill> skills = new HashMap<>();
+	
+	@JsonCreator
+	private DDSkills(Collection<DDSkill> in) {
+		in.stream().forEach( s -> skills.put(s.getName(), s) );
+	}
+	
+	@JsonValue
+	private Collection<DDSkill> getSerial() {
+		return skills.values().stream().filter(s -> s.getPointsSpent() > 0).collect(Collectors.toList());
+	}
+}