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

package com.hypixel.hytale.builtin.hytalegenerator.biome;

import java.util.Iterator;
import com.hypixel.hytale.builtin.hytalegenerator.propdistributions.Assignments;
import java.util.ArrayList;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.tintproviders.TintProvider;
import com.hypixel.hytale.builtin.hytalegenerator.environmentproviders.EnvironmentProvider;
import com.hypixel.hytale.builtin.hytalegenerator.PropField;
import java.util.List;
import com.hypixel.hytale.builtin.hytalegenerator.material.Material;
import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.MaterialProvider;
import com.hypixel.hytale.builtin.hytalegenerator.density.Density;

public class SimpleBiomeType implements BiomeType
{
    private final Density terrainDensity;
    private final MaterialProvider<Material> materialProvider;
    private final List<PropField> propFields;
    private final EnvironmentProvider environmentProvider;
    private final TintProvider tintProvider;
    private final String biomeName;
    
    public SimpleBiomeType(@Nonnull final String biomeName, @Nonnull final Density terrainDensity, @Nonnull final MaterialProvider<Material> materialProvider, @Nonnull final EnvironmentProvider environmentProvider, @Nonnull final TintProvider tintProvider) {
        this.terrainDensity = terrainDensity;
        this.materialProvider = materialProvider;
        this.biomeName = biomeName;
        this.propFields = new ArrayList<PropField>();
        this.environmentProvider = environmentProvider;
        this.tintProvider = tintProvider;
    }
    
    public void addPropFieldTo(@Nonnull final PropField propField) {
        this.propFields.add(propField);
    }
    
    @Override
    public MaterialProvider<Material> getMaterialProvider() {
        return this.materialProvider;
    }
    
    @Nonnull
    @Override
    public Density getTerrainDensity() {
        return this.terrainDensity;
    }
    
    @Override
    public String getBiomeName() {
        return this.biomeName;
    }
    
    @Override
    public List<PropField> getPropFields() {
        return this.propFields;
    }
    
    @Override
    public EnvironmentProvider getEnvironmentProvider() {
        return this.environmentProvider;
    }
    
    @Override
    public TintProvider getTintProvider() {
        return this.tintProvider;
    }
    
    @Override
    public List<Assignments> getAllPropDistributions() {
        final ArrayList<Assignments> list = new ArrayList<Assignments>();
        for (final PropField f : this.propFields) {
            list.add(f.getPropDistribution());
        }
        return list;
    }
}
