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

package com.hypixel.hytale.builtin.hytalegenerator.assets.props.prefabprop.directionality;

import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.builtin.hytalegenerator.props.directionality.RandomDirectionality;
import com.hypixel.hytale.builtin.hytalegenerator.props.directionality.Directionality;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.ConstantPatternAsset;
import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.PatternAsset;
import com.hypixel.hytale.codec.builder.BuilderCodec;

public class RandomDirectionalityAsset extends DirectionalityAsset
{
    public static final BuilderCodec<RandomDirectionalityAsset> CODEC;
    private String seed;
    private PatternAsset patternAsset;
    
    public RandomDirectionalityAsset() {
        this.seed = "A";
        this.patternAsset = new ConstantPatternAsset();
    }
    
    @Nonnull
    @Override
    public Directionality build(@Nonnull final Argument argument) {
        return new RandomDirectionality(this.patternAsset.build(PatternAsset.argumentFrom(argument)), argument.parentSeed.child(this.seed).createSupplier().get());
    }
    
    static {
        CODEC = BuilderCodec.builder(RandomDirectionalityAsset.class, RandomDirectionalityAsset::new, DirectionalityAsset.ABSTRACT_CODEC).append(new KeyedCodec<String>("Seed", Codec.STRING, true), (asset, v) -> asset.seed = v, asset -> asset.seed).add().append(new KeyedCodec("Pattern", PatternAsset.CODEC, true), (asset, v) -> asset.patternAsset = v, asset -> asset.patternAsset).add().build();
    }
}
