| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package org.leumasjaffe.charsheet.model;
- import java.io.File;
- import java.util.Collection;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Optional;
- import java.util.Set;
- import org.leumasjaffe.charsheet.model.features.DDFeature;
- import org.leumasjaffe.charsheet.model.magic.DDSpell;
- import org.leumasjaffe.charsheet.model.magic.DDSpellList;
- import org.leumasjaffe.charsheet.model.magic.DDSpellList.SpellList;
- import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
- import lombok.AccessLevel;
- import lombok.Data;
- import lombok.Getter;
- import lombok.NonNull;
- import lombok.SneakyThrows;
- import lombok.experimental.FieldDefaults;
- @Data
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
- @JsonIgnoreProperties(ignoreUnknown=true)
- public class DDClass {
- @NonNull String name;
-
- int skillPoints;
- @NonNull AttackQuality bab;
- @NonNull SaveQuality fort;
- @NonNull SaveQuality ref;
- @NonNull SaveQuality will;
-
- @Getter(AccessLevel.NONE) @NonNull List<List<DDFeature>> features;
-
- @NonNull Set<String> skills;
-
- @NonNull Optional<DDSpellList> spells;
-
- static Map<String, DDClass> store = new HashMap<>();
-
- @SneakyThrows
- public static DDClass getFromResource(final String name) {
- if (!store.containsKey(name)) {
- final ObjectMapper mapper = new ObjectMapper();
- mapper.registerModule(new Jdk8Module());
- store.put(name, mapper.readValue(new File("resources/classes/" + name + ".json"), DDClass.class));
- }
- return store.get(name);
- }
-
- public Collection<DDSpell> getSpellList( int level ) {
- List<SpellList> list = spells.get().getSpellList();
- return list.size() <= level ? Collections.emptySet() : list.get( level ).getSpellList();
- }
-
- public boolean isClassSkill(final String skillName) {
- if (skillName.contains("(")) {
- return skills.contains(skillName) || skills.contains(skillName.replaceFirst("\\(.*\\)", "(*)"));
- }
- return skills.contains(skillName);
- }
- }
|