BoolDoublePairCodec class

Пакет: com.hypixel.hytale.server.core.codec

Файл: com/hypixel/hytale/server/core/codec/BoolDoublePairCodec.java

implements: Codec<BoolDoublePair>

Поля (3)

МодификаторыТипИмя
final Pattern PATTERN
StringSchema var2
String var3

Методы (1)

МодификаторыВозвратСигнатура
if if(var1 instanceof BsonString)

Исходный код

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

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.schema.SchemaContext;
class="kw">import com.hypixel.hytale.codec.schema.config.NumberSchema;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.common.tuple.BoolDoublePair;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonString;
class="kw">import org.bson.BsonValue;

class="kw">public class BoolDoublePairCodec class="kw">implements Codec<BoolDoublePair> {
   class="kw">private class="kw">static class="kw">final Pattern PATTERN = Pattern.compile("~?[0-9]*");

   class="kw">public BoolDoublePairCodec() {
   }

   @Nonnull
   class="kw">public BoolDoublePair decode(BsonValue var1, ExtraInfo var2) {
      if (var1 class="kw">instanceof BsonString) {
         String var3 = var1.asString().getValue();
         if (var3.charAt(0) == '~') {
            class="kw">return var3.length() == 1 ? BoolDoublePair.of(true, 0.0) : BoolDoublePair.of(true, Double.parseDouble(var3.substring(1)));
         } else {
            class="kw">return BoolDoublePair.of(false, Double.parseDouble(var3));
         }
      } else {
         class="kw">return BoolDoublePair.of(false, var1.asDouble().getValue());
      }
   }

   @Nonnull
   class="kw">public BsonValue encode(@Nonnull BoolDoublePair var1, ExtraInfo var2) {
      class="kw">return new BsonString((var1.getLeft() ? "~" : "") + var1.getRight());
   }

   @Nonnull
   @Override
   class="kw">public Schema toSchema(@Nonnull SchemaContext var1) {
      StringSchema var2 = new StringSchema();
      var2.setPattern(PATTERN);
      class="kw">return Schema.anyOf(new NumberSchema(), var2);
   }
}