|
@@ -1,30 +1,37 @@
|
|
|
package org.leumasjaffe.charsheet.model;
|
|
package org.leumasjaffe.charsheet.model;
|
|
|
|
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
import java.util.Collections;
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
|
|
+import java.util.List;
|
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
import java.util.SortedSet;
|
|
import java.util.SortedSet;
|
|
|
import java.util.TreeSet;
|
|
import java.util.TreeSet;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.model.features.DDFeat;
|
|
|
|
|
+import org.leumasjaffe.charsheet.model.features.DDFeature;
|
|
|
import org.leumasjaffe.charsheet.model.inventory.DDInventory;
|
|
import org.leumasjaffe.charsheet.model.inventory.DDInventory;
|
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
import org.leumasjaffe.charsheet.model.observable.IntValue;
|
|
|
import org.leumasjaffe.charsheet.model.observable.ObjectValue;
|
|
import org.leumasjaffe.charsheet.model.observable.ObjectValue;
|
|
|
import org.leumasjaffe.charsheet.model.skill.DDSkills;
|
|
import org.leumasjaffe.charsheet.model.skill.DDSkills;
|
|
|
|
|
+import org.leumasjaffe.observer.Observable;
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
|
|
|
|
|
|
|
import lombok.AccessLevel;
|
|
import lombok.AccessLevel;
|
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
|
|
|
+import lombok.EqualsAndHashCode;
|
|
|
import lombok.Getter;
|
|
import lombok.Getter;
|
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.NoArgsConstructor;
|
|
|
import lombok.NonNull;
|
|
import lombok.NonNull;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
|
|
@NoArgsConstructor
|
|
@NoArgsConstructor
|
|
|
-@Data
|
|
|
|
|
|
|
+@Data @EqualsAndHashCode(callSuper=false)
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE)
|
|
@FieldDefaults(level=AccessLevel.PRIVATE)
|
|
|
@JsonIgnoreProperties(ignoreUnknown=true)
|
|
@JsonIgnoreProperties(ignoreUnknown=true)
|
|
|
-public class DDCharacter {
|
|
|
|
|
|
|
+public class DDCharacter extends Observable {
|
|
|
@NonNull String name = "";
|
|
@NonNull String name = "";
|
|
|
|
|
|
|
|
@NonNull String player = "";
|
|
@NonNull String player = "";
|
|
@@ -46,13 +53,10 @@ public class DDCharacter {
|
|
|
@NonNull String skin = "";
|
|
@NonNull String skin = "";
|
|
|
|
|
|
|
|
@NonNull IntValue experience = new IntValue();
|
|
@NonNull IntValue experience = new IntValue();
|
|
|
-
|
|
|
|
|
@NonNull HitPoints health = new HitPoints();
|
|
@NonNull HitPoints health = new HitPoints();
|
|
|
-
|
|
|
|
|
@NonNull Ability abilities = new Ability();
|
|
@NonNull Ability abilities = new Ability();
|
|
|
-
|
|
|
|
|
@NonNull DDSkills skills = new DDSkills(Collections.emptyList());
|
|
@NonNull DDSkills skills = new DDSkills(Collections.emptyList());
|
|
|
-
|
|
|
|
|
|
|
+ @NonNull List<DDFeat> feats = new ArrayList<>();
|
|
|
@NonNull DDInventory inventory = new DDInventory();
|
|
@NonNull DDInventory inventory = new DDInventory();
|
|
|
|
|
|
|
|
public String getClassAndLevelString() {
|
|
public String getClassAndLevelString() {
|
|
@@ -92,4 +96,9 @@ public class DDCharacter {
|
|
|
public int getLevel() {
|
|
public int getLevel() {
|
|
|
return classes.stream().map(DDCharacterClass::getLevel).mapToInt(IntValue::value).sum();
|
|
return classes.stream().map(DDCharacterClass::getLevel).mapToInt(IntValue::value).sum();
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public List<DDFeature> getFeatureBonuses(String appliesScope) {
|
|
|
|
|
+ return feats.stream().flatMap(f -> f.getProperties().stream())
|
|
|
|
|
+ .filter(f -> f.appliesTo(appliesScope)).collect(Collectors.toList());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|