Constants interface

Пакет: com.hypixel.hytale.procedurallib.json

Файл: com/hypixel/hytale/procedurallib/json/DoubleRangeJsonLoader.java

Поля (7)

МодификаторыТипИмя
String ERROR_ARRAY_SIZE
String ERROR_NO_MAX
String ERROR_NO_MIN
String KEY_MAX
String KEY_MIN
String KEY_THRESHOLDS
String KEY_VALUES

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.procedurallib.json;

class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.procedurallib.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;

class="kw">public class DoubleRangeJsonLoader<K class="kw">extends SeedResource> class="kw">extends JsonLoader<K, IDoubleRange> {
   class="kw">protected class="kw">final double default1;
   class="kw">protected class="kw">final double default2;
   @Nonnull
   class="kw">protected class="kw">final DoubleRangeJsonLoader.DoubleToDoubleFunction function;

   class="kw">public DoubleRangeJsonLoader(@Nonnull SeedString<K> var1, Path var2, JsonElement var3) {
      this(var1, var2, var3, 0.0, var0 -> var0);
   }

   class="kw">public DoubleRangeJsonLoader(@Nonnull SeedString<K> var1, Path var2, JsonElement var3, DoubleRangeJsonLoader.DoubleToDoubleFunction var4) {
      this(var1, var2, var3, 0.0, var4);
   }

   class="kw">public DoubleRangeJsonLoader(@Nonnull SeedString<K> var1, Path var2, JsonElement var3, double var4) {
      this(var1, var2, var3, var4, var4, var0 -> var0);
   }

   class="kw">public DoubleRangeJsonLoader(@Nonnull SeedString<K> var1, Path var2, JsonElement var3, double var4, DoubleRangeJsonLoader.DoubleToDoubleFunction var6) {
      this(var1, var2, var3, var4, var4, var6);
   }

   class="kw">public DoubleRangeJsonLoader(@Nonnull SeedString<K> var1, Path var2, JsonElement var3, double var4, double var6) {
      this(var1, var2, var3, var4, var6, var0 -> var0);
   }

   class="kw">public DoubleRangeJsonLoader(
      @Nonnull SeedString<K> var1, Path var2, JsonElement var3, double var4, double var6, DoubleRangeJsonLoader.DoubleToDoubleFunction var8
   ) {
      super(var1.append(".DoubleRange"), var2, var3);
      this.default1 = var4;
      this.default2 = var6;
      this.function = Objects.requireNonNull(var8);
   }

   class="kw">public IDoubleRange load() {
      if (this.json != null && !this.json.isJsonNull()) {
         if (this.json.isJsonArray()) {
            JsonArray var5 = this.json.getAsJsonArray();
            if (var5.size() != 1 && var5.size() != 2) {
               throw new IllegalStateException(String.format("Range array contains %s values. Only 1 or 2 entries are allowed.", var5.size()));
            } else {
               class="kw">return var5.size() == 1
                  ? new DoubleRange.Constant(this.function.get(var5.get(0).getAsDouble()))
                  : new DoubleRange.Normal(this.function.get(var5.get(0).getAsDouble()), this.function.get(var5.get(1).getAsDouble()));
            }
         } else {
            if (!this.json.isJsonObject()) {
               class="kw">return new DoubleRange.Constant(this.function.get(this.json.getAsDouble()));
            }

            if (this.has("Thresholds") && this.has("Values")) {
               class="kw">return this.loadThreshold();
            }

            if (!this.has("Min")) {
               throw new IllegalStateException("Minimum value of range is not defined. Keyword: Min");
            }

            if (!this.has("Max")) {
               throw new IllegalStateException("Maximum value of range is not defined. Keyword: Max");
            }

            double var1 = this.get("Min").getAsDouble();
            double var3 = this.get("Max").getAsDouble();
            class="kw">return new DoubleRange.Normal(this.function.get(var1), this.function.get(var3));
         }
      } else {
         class="kw">return this.default1 == this.default2
            ? new DoubleRange.Constant(this.function.get(this.default1))
            : new DoubleRange.Normal(this.function.get(this.default1), this.function.get(this.default2));
      }
   }

   @Nonnull
   class="kw">protected IDoubleRange loadThreshold() {
      JsonArray var1 = this.get("Thresholds").getAsJsonArray();
      JsonArray var2 = this.get("Values").getAsJsonArray();
      double[] var3 = new double[var1.size()];
      double[] var4 = new double[var1.size()];

      for (int var5 = 0; var5 < var3.length; var5++) {
         var3[var5] = var1.get(var5).getAsDouble();
         var4[var5] = var2.get(var5).getAsDouble();
      }

      class="kw">return new DoubleRange.Multiple(var3, var4);
   }

   class="kw">public class="kw">interface Constants {
      String KEY_MIN = "Min";
      String KEY_MAX = "Max";
      String KEY_THRESHOLDS = "Thresholds";
      String KEY_VALUES = "Values";
      String ERROR_ARRAY_SIZE = "Range array contains %s values. Only 1 or 2 entries are allowed.";
      String ERROR_NO_MIN = "Minimum value of range is not defined. Keyword: Min";
      String ERROR_NO_MAX = "Maximum value of range is not defined. Keyword: Max";
   }

   @FunctionalInterface
   class="kw">public class="kw">interface DoubleToDoubleFunction {
      double get(double var1);
   }
}