// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.procedurallib.json;

import javax.annotation.Nonnull;
import com.hypixel.hytale.procedurallib.logic.cell.jitter.CellJitter;
import com.google.gson.JsonElement;
import java.nio.file.Path;

public abstract class AbstractCellJitterJsonLoader<K extends SeedResource, T> extends JsonLoader<K, T>
{
    public AbstractCellJitterJsonLoader(final SeedString<K> seed, final Path dataFolder, final JsonElement json) {
        super(seed, dataFolder, json);
    }
    
    @Nonnull
    protected CellJitter loadJitter() {
        final double defaultJitter = this.loadDefaultJitter();
        final double x = this.loadJitterX(defaultJitter);
        final double y = this.loadJitterY(defaultJitter);
        final double z = this.loadJitterZ(defaultJitter);
        return CellJitter.of(x, y, z);
    }
    
    protected double loadDefaultJitter() {
        return loadJitter(this, "Jitter", 1.0);
    }
    
    protected double loadJitterX(final double defaultJitter) {
        return loadJitter(this, "JitterX", defaultJitter);
    }
    
    protected double loadJitterY(final double defaultJitter) {
        return loadJitter(this, "JitterY", defaultJitter);
    }
    
    protected double loadJitterZ(final double defaultJitter) {
        return loadJitter(this, "JitterZ", defaultJitter);
    }
    
    protected static double loadJitter(@Nonnull final JsonLoader<?, ?> loader, final String key, final double defaultJitter) {
        if (!loader.has(key)) {
            return defaultJitter;
        }
        return loader.get(key).getAsDouble();
    }
}
