|
@@ -4,19 +4,16 @@ import static org.leumasjaffe.charsheet.config.Constants.K_DURATION;
|
|
|
import static org.leumasjaffe.charsheet.config.Constants.DurationMeasurement.*;
|
|
import static org.leumasjaffe.charsheet.config.Constants.DurationMeasurement.*;
|
|
|
|
|
|
|
|
import org.leumasjaffe.charsheet.config.Config;
|
|
import org.leumasjaffe.charsheet.config.Config;
|
|
|
-import org.leumasjaffe.charsheet.model.magic.dimension.Range.__Pair;
|
|
|
|
|
import org.leumasjaffe.charsheet.util.StringHelper;
|
|
import org.leumasjaffe.charsheet.util.StringHelper;
|
|
|
-import org.leumasjaffe.format.Named;
|
|
|
|
|
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
import com.fasterxml.jackson.annotation.JsonCreator;
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
|
|
|
|
|
import lombok.AccessLevel;
|
|
import lombok.AccessLevel;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
-import lombok.Getter;
|
|
|
|
|
import lombok.NonNull;
|
|
import lombok.NonNull;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.experimental.FieldDefaults;
|
|
import lombok.experimental.FieldDefaults;
|
|
|
-import lombok.experimental.NonFinal;
|
|
|
|
|
|
|
|
|
|
public interface Duration {
|
|
public interface Duration {
|
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
@@ -48,6 +45,19 @@ public interface Duration {
|
|
|
|
|
|
|
|
public default String getResolved(int level) { return toString(); }
|
|
public default String getResolved(int level) { return toString(); }
|
|
|
|
|
|
|
|
|
|
+ @JsonCreator
|
|
|
|
|
+ public static Duration create(String name) {
|
|
|
|
|
+ return new Basic(name);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @JsonCreator
|
|
|
|
|
+ public static Duration create(@JsonProperty("unit") Measure meas,
|
|
|
|
|
+ @JsonProperty("duration") int min,
|
|
|
|
|
+ @JsonProperty("per") int per,
|
|
|
|
|
+ @JsonProperty("step") int step) {
|
|
|
|
|
+ return new WithLevelGrowth(meas, min, per, step);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public static class Basic implements Duration {
|
|
public static class Basic implements Duration {
|
|
@@ -58,34 +68,22 @@ public interface Duration {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- @RequiredArgsConstructor
|
|
|
|
|
- @FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
|
|
- public static class WithDistance implements Duration {
|
|
|
|
|
- @NonNull Measure measure;
|
|
|
|
|
- int range;
|
|
|
|
|
-
|
|
|
|
|
- public String toString() {
|
|
|
|
|
- final __Pair p = new __Pair(measure, range);
|
|
|
|
|
- return StringHelper.format("{} {}{0>1?s:}", p.value[0], p.measure);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
@FieldDefaults(level=AccessLevel.PRIVATE, makeFinal=true)
|
|
|
public static class WithLevelGrowth implements Duration {
|
|
public static class WithLevelGrowth implements Duration {
|
|
|
@NonNull Measure measure;
|
|
@NonNull Measure measure;
|
|
|
- int range, per, step;
|
|
|
|
|
|
|
+ int length, per, step;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public String getResolved(int level) {
|
|
public String getResolved(int level) {
|
|
|
- final __Pair p = new __Pair(measure, range + (per * (level / step)));
|
|
|
|
|
|
|
+ final __Pair p = new __Pair(measure, length + (per * (level / step)));
|
|
|
return StringHelper.format("{} {}{0>1?s:}", p.value[0], p.measure);
|
|
return StringHelper.format("{} {}{0>1?s:}", p.value[0], p.measure);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public String toString() {
|
|
public String toString() {
|
|
|
- final __Pair p = new __Pair(measure, range, per);
|
|
|
|
|
|
|
+ final __Pair p = new __Pair(measure, length, per);
|
|
|
final StringBuilder str = new StringBuilder(StringHelper.format("{} {3}{0>1?s:} + {} {}{1>1?s:}/{?level:{} levels}",
|
|
final StringBuilder str = new StringBuilder(StringHelper.format("{} {3}{0>1?s:} + {} {}{1>1?s:}/{?level:{} levels}",
|
|
|
- p.value[0], p.value[1], p.measure, step == 1, step));
|
|
|
|
|
|
|
+ p.value[0], p.value[1], p.measure, step));
|
|
|
return str.toString();
|
|
return str.toString();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|