|
|
@@ -2,6 +2,9 @@ package org.leumasjaffe.charsheet.model.magic;
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
+import org.leumasjaffe.charsheet.config.Config;
|
|
|
+import org.leumasjaffe.charsheet.util.StringHelper;
|
|
|
+
|
|
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
|
|
|
|
import lombok.AccessLevel;
|
|
|
@@ -11,6 +14,29 @@ import lombok.RequiredArgsConstructor;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
|
|
|
|
public interface Range {
|
|
|
+ public static final int DISTANCE_MEASUREMENT_FEET = 0x0, DISTANCE_MEASUREMENT_SQUARES = 0x1;
|
|
|
+
|
|
|
+ @FieldDefaults(level=AccessLevel.PUBLIC, makeFinal=true)
|
|
|
+ public static final class __Pair {
|
|
|
+ int[] value;
|
|
|
+ String measure;
|
|
|
+
|
|
|
+ __Pair(int... feet) {
|
|
|
+ value = new int[feet.length];
|
|
|
+ final int div;
|
|
|
+ if (Config.<Integer>get(Config.DISTANCE, DISTANCE_MEASUREMENT_FEET).equals(DISTANCE_MEASUREMENT_SQUARES)) {
|
|
|
+ div = 5;
|
|
|
+ measure = "squares";
|
|
|
+ } else {
|
|
|
+ div = 1;
|
|
|
+ measure = "ft.";
|
|
|
+ }
|
|
|
+ for (int i = 0; i < feet.length; ++i) {
|
|
|
+ value[i] = feet[i] / div;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public static final Range Personal = new Basic("Personal"),
|
|
|
Touch = new Basic("Touch"),
|
|
|
Close = new WithLevelGrowth("Close", 25, 5, 1),
|
|
|
@@ -63,9 +89,8 @@ public interface Range {
|
|
|
int range;
|
|
|
|
|
|
public String toString() {
|
|
|
- final StringBuilder str = new StringBuilder(name);
|
|
|
- str.append(" (").append(range).append(" ft.)");
|
|
|
- return str.toString();
|
|
|
+ final __Pair p = new __Pair(range);
|
|
|
+ return StringHelper.format(" ({} {})", p.value[0], p.measure);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -79,15 +104,13 @@ public interface Range {
|
|
|
|
|
|
@Override
|
|
|
public String getResolved(int level) {
|
|
|
- final StringBuilder str = new StringBuilder();
|
|
|
- str.append(range + (per * (level / step))).append(" ft.");
|
|
|
- return str.toString();
|
|
|
+ final __Pair p = new __Pair(range + (per * (level / step)));
|
|
|
+ return StringHelper.format("{} {}", p.value[0], p.measure);
|
|
|
}
|
|
|
|
|
|
public String toString() {
|
|
|
- final StringBuilder str = new StringBuilder(name);
|
|
|
- str.append(" (").append(range).append(" ft.");
|
|
|
- str.append(" + ").append(per).append(" ft./");
|
|
|
+ final __Pair p1 = new __Pair(range, per);
|
|
|
+ final StringBuilder str = new StringBuilder(StringHelper.format(" ({} {2} + {} {2}/", p1.value[0], p1.value[1], p1.measure));
|
|
|
if ( step == 1 ) { str.append("level"); }
|
|
|
else { str.append(step).append(" levels"); }
|
|
|
str.append(')');
|