|
|
@@ -1,65 +1,13 @@
|
|
|
package org.leumasjaffe.charsheet.model.features;
|
|
|
|
|
|
-import com.fasterxml.jackson.annotation.JsonSubTypes;
|
|
|
-import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
|
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
|
|
|
|
|
|
-import lombok.AllArgsConstructor;
|
|
|
-
|
|
|
-@JsonTypeInfo(use=Id.NAME)
|
|
|
-@JsonSubTypes({
|
|
|
- @Type(name="Simple", value=DDProperty.Simple.class),
|
|
|
- @Type(name="Flat", value=DDProperty.Flat.class),
|
|
|
- @Type(name="SpellLevel", value=DDProperty.PerSpellLevel.class)
|
|
|
-})
|
|
|
+@JsonTypeInfo(use=Id.MINIMAL_CLASS)
|
|
|
public interface DDProperty {
|
|
|
public enum Group {
|
|
|
NONE
|
|
|
}
|
|
|
boolean appliesTo(String key);
|
|
|
<T> T value();
|
|
|
-
|
|
|
- @AllArgsConstructor
|
|
|
- public class Simple implements DDProperty {
|
|
|
- String name;
|
|
|
- @Override public boolean appliesTo(String key) { return false; }
|
|
|
- @Override public <T> T value() { return null; }
|
|
|
- }
|
|
|
-
|
|
|
- @AllArgsConstructor
|
|
|
- public static class Flat implements DDProperty {
|
|
|
- String applies;
|
|
|
- Group group;
|
|
|
- int value;
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean appliesTo(String key) {
|
|
|
- return applies.equals(key);
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Override
|
|
|
- public Object value() {
|
|
|
- return this.value;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @AllArgsConstructor
|
|
|
- public static class PerSpellLevel implements DDProperty {
|
|
|
- String applies;
|
|
|
- Group group;
|
|
|
- int value;
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean appliesTo(String key) {
|
|
|
- return applies.equals(key);
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- @Override
|
|
|
- public Object value() {
|
|
|
- return this.value; // TODO consume spell level information
|
|
|
- }
|
|
|
- }
|
|
|
}
|