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

package com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth.layers;

import java.util.Random;
import com.hypixel.hytale.math.util.FastRandom;
import com.hypixel.hytale.builtin.hytalegenerator.seed.SeedBox;
import javax.annotation.Nullable;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.MaterialProvider;
import com.hypixel.hytale.builtin.hytalegenerator.framework.math.SeedGenerator;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.datastructures.WeightedMap;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth.SpaceAndDepthMaterialProvider;

public class WeightedThicknessLayer<V> extends SpaceAndDepthMaterialProvider.Layer<V>
{
    @Nonnull
    private final WeightedMap<Integer> thicknessPool;
    @Nonnull
    private final SeedGenerator seedGenerator;
    @Nullable
    private final MaterialProvider<V> materialProvider;
    
    public WeightedThicknessLayer(@Nonnull final WeightedMap<Integer> thicknessPool, @Nullable final MaterialProvider<V> materialProvider, @Nonnull final SeedBox seedBox) {
        this.seedGenerator = new SeedGenerator(seedBox.createSupplier().get());
        this.materialProvider = materialProvider;
        this.thicknessPool = thicknessPool;
    }
    
    @Override
    public int getThicknessAt(final int x, final int y, final int z, final int depthIntoFloor, final int depthIntoCeiling, final int spaceAboveFloor, final int spaceBelowCeiling, final double distanceTOBiomeEdge) {
        if (this.thicknessPool.size() == 0) {
            return 0;
        }
        final FastRandom random = new FastRandom(this.seedGenerator.seedAt(x, z));
        return this.thicknessPool.pick(random);
    }
    
    @Override
    public MaterialProvider<V> getMaterialProvider() {
        return this.materialProvider;
    }
}
