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

package com.hypixel.hytale.server.npc.asset.builder;

import com.hypixel.hytale.server.npc.config.balancing.BalanceAsset;
import java.util.List;
import com.hypixel.hytale.server.npc.validators.NPCLoadTimeValidationHelper;
import javax.annotation.Nullable;
import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
import com.hypixel.hytale.codec.ExtraInfo;
import javax.annotation.Nonnull;
import com.google.gson.JsonElement;
import com.hypixel.hytale.codec.validation.Validator;
import com.hypixel.hytale.codec.Codec;

public class BuilderCombatConfig extends BuilderCodecObjectHelper<String>
{
    private boolean inline;
    
    public BuilderCombatConfig(final Codec<String> codec, final Validator<String> validator) {
        super(String.class, codec, validator);
    }
    
    @Override
    public String build() {
        throw new UnsupportedOperationException();
    }
    
    @Override
    public void readConfig(@Nonnull final JsonElement data, @Nonnull final ExtraInfo extraInfo) {
        this.inline = data.isJsonObject();
        super.readConfig(data, extraInfo);
    }
    
    @Nullable
    public String build(@Nonnull final ExecutionContext context) {
        final String override = context.getCombatConfig();
        if (override != null) {
            return override;
        }
        return (String)this.value;
    }
    
    public boolean validate(final String configName, final NPCLoadTimeValidationHelper loadTimeValidationHelper, @Nonnull final ExecutionContext context, @Nonnull final List<String> errors) {
        final String override = context.getCombatConfig();
        boolean success = true;
        if (override != null && BalanceAsset.getAssetMap().getAsset(override) == null) {
            errors.add(String.format("%s: CombatConfig refers to a non-existent balancing file: %s", configName, override));
            success = false;
        }
        return success;
    }
}
