|
|
@@ -1,6 +1,4 @@
|
|
|
-package org.leumasjaffe.charsheet.model.magic;
|
|
|
-
|
|
|
-import java.util.Map;
|
|
|
+package org.leumasjaffe.charsheet.model.magic.dimension;
|
|
|
|
|
|
import org.leumasjaffe.charsheet.config.Config;
|
|
|
import org.leumasjaffe.charsheet.util.StringHelper;
|
|
|
@@ -13,7 +11,8 @@ import lombok.NonNull;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
-import static org.leumasjaffe.charsheet.config.Constants.*;
|
|
|
+import static org.leumasjaffe.charsheet.config.Constants.K_DISTANCE;
|
|
|
+import static org.leumasjaffe.charsheet.config.Constants.DistanceMeasurement.*;
|
|
|
|
|
|
public interface Range {
|
|
|
@FieldDefaults(level=AccessLevel.PUBLIC, makeFinal=true)
|
|
|
@@ -21,10 +20,10 @@ public interface Range {
|
|
|
int[] value;
|
|
|
String measure;
|
|
|
|
|
|
- private __Pair(int... feet) {
|
|
|
+ public __Pair(int... feet) {
|
|
|
value = new int[feet.length];
|
|
|
final int div;
|
|
|
- if (Config.<Integer>get(DISTANCE, DISTANCE_MEASUREMENT_FEET).equals(DISTANCE_MEASUREMENT_SQUARES)) {
|
|
|
+ if (Config.get(K_DISTANCE, FEET) == SQUARES) {
|
|
|
div = 5;
|
|
|
measure = "squares";
|
|
|
} else {
|
|
|
@@ -59,19 +58,7 @@ public interface Range {
|
|
|
}
|
|
|
throw new IllegalArgumentException("Unrecognized Range constant: " + name);
|
|
|
}
|
|
|
-
|
|
|
- @JsonCreator
|
|
|
- public static Range create(final Map<String, Object> data) {
|
|
|
- final String type = (String) data.get("type");
|
|
|
- switch (type.toLowerCase()) {
|
|
|
- case "basic": return new Basic((String) data.get("name"));
|
|
|
- case "withdistance": return new WithDistance((String) data.get("name"), (Integer) data.get("range"));
|
|
|
- case "withlevelgrowth": return new WithLevelGrowth((String) data.get("name"), (Integer) data.get("range"),
|
|
|
- (Integer) data.get("per"), (Integer) data.get("step"));
|
|
|
- }
|
|
|
- throw new IllegalArgumentException("Unrecognized Range type: " + type);
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
@RequiredArgsConstructor
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public static class Basic implements Range {
|
|
|
@@ -82,18 +69,6 @@ public interface Range {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- @RequiredArgsConstructor
|
|
|
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
- public static class WithDistance implements Range {
|
|
|
- @NonNull @Getter String name;
|
|
|
- int range;
|
|
|
-
|
|
|
- public String toString() {
|
|
|
- final __Pair p = new __Pair(range);
|
|
|
- return StringHelper.format(" ({} {})", p.value[0], p.measure);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
@RequiredArgsConstructor
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public static class WithLevelGrowth implements Range {
|
|
|
@@ -102,14 +77,14 @@ public interface Range {
|
|
|
|
|
|
@Override
|
|
|
public String getResolved(int level) {
|
|
|
- final __Pair p = new __Pair(range + (per * (level / step)));
|
|
|
+ final __Pair p = new __Pair(range + (step == 0 ? 0 : (per * (level / step))));
|
|
|
return StringHelper.format("{} {}", p.value[0], p.measure);
|
|
|
}
|
|
|
|
|
|
public String toString() {
|
|
|
final __Pair p = new __Pair(range, per);
|
|
|
- final StringBuilder str = new StringBuilder(StringHelper.format("{} ({} {3} + {} {}/{?level:{} levels})",
|
|
|
- name, p.value[0], p.value[1], p.measure, step == 1, step));
|
|
|
+ final StringBuilder str = new StringBuilder(StringHelper.format("{} ({} {3}{4>0? + {} {}/{=1?level:{4} levels}:})",
|
|
|
+ name, p.value[0], p.value[1], p.measure, step));
|
|
|
return str.toString();
|
|
|
}
|
|
|
}
|