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

package com.hypixel.hytale.procedurallib.json;

import com.hypixel.hytale.procedurallib.condition.IDoubleCondition;
import javax.annotation.Nullable;
import com.hypixel.hytale.procedurallib.logic.cell.PointDistanceFunction;
import com.hypixel.hytale.procedurallib.logic.cell.MeasurementMode;
import com.hypixel.hytale.procedurallib.logic.cell.evaluator.PointEvaluator;
import javax.annotation.Nonnull;
import com.google.gson.JsonElement;
import java.nio.file.Path;
import com.hypixel.hytale.procedurallib.logic.cell.CellDistanceFunction;
import com.hypixel.hytale.procedurallib.logic.cell.BorderDistanceFunction;

public class CellBorderDistanceFunctionJsonLoader<K extends SeedResource> extends JsonLoader<K, BorderDistanceFunction>
{
    protected final CellDistanceFunction distanceFunction;
    
    public CellBorderDistanceFunctionJsonLoader(final SeedString<K> seed, final Path dataFolder, final JsonElement json, final CellDistanceFunction distanceFunction) {
        super(seed, dataFolder, json);
        this.distanceFunction = distanceFunction;
    }
    
    @Nonnull
    @Override
    public BorderDistanceFunction load() {
        return new BorderDistanceFunction(this.distanceFunction, this.loadPointEvaluator(), this.loadDensity());
    }
    
    @Nullable
    protected PointEvaluator loadPointEvaluator() {
        return new PointEvaluatorJsonLoader(this.seed, this.dataFolder, this.json, MeasurementMode.BORDER_DISTANCE, null).load();
    }
    
    @Nullable
    protected IDoubleCondition loadDensity() {
        return new PointEvaluatorJsonLoader(this.seed, this.dataFolder, this.json).loadDensity();
    }
}
