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

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

import com.hypixel.hytale.common.util.ArrayUtil;
import javax.annotation.Nullable;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonElement;
import com.google.gson.JsonArray;
import com.hypixel.hytale.server.npc.util.expression.StdScope;
import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
import javax.annotation.Nonnull;
import com.hypixel.hytale.server.npc.util.expression.ValueType;

public class BuilderExpressionStaticBooleanArray extends BuilderExpression
{
    public static final BuilderExpressionStaticBooleanArray INSTANCE_EMPTY;
    private final boolean[] booleanArray;
    
    public BuilderExpressionStaticBooleanArray(final boolean[] array) {
        this.booleanArray = array;
    }
    
    @Nonnull
    @Override
    public ValueType getType() {
        return ValueType.BOOLEAN_ARRAY;
    }
    
    @Override
    public boolean isStatic() {
        return true;
    }
    
    @Override
    public boolean[] getBooleanArray(final ExecutionContext executionContext) {
        return this.booleanArray;
    }
    
    @Override
    public void addToScope(final String name, @Nonnull final StdScope scope) {
        scope.addVar(name, this.booleanArray);
    }
    
    @Override
    public void updateScope(@Nonnull final StdScope scope, final String name, final ExecutionContext executionContext) {
        scope.changeValue(name, this.booleanArray);
    }
    
    @Nullable
    public static BuilderExpressionStaticBooleanArray fromJSON(@Nonnull final JsonArray jsonArray) {
        final int size = jsonArray.size();
        final boolean[] array = new boolean[size];
        for (int i = 0; i < size; ++i) {
            final JsonElement element = jsonArray.get(i);
            if (!element.isJsonPrimitive()) {
                return null;
            }
            final JsonPrimitive primitive = element.getAsJsonPrimitive();
            if (!primitive.isBoolean()) {
                return null;
            }
            array[i] = primitive.getAsBoolean();
        }
        return new BuilderExpressionStaticBooleanArray(array);
    }
    
    static {
        INSTANCE_EMPTY = new BuilderExpressionStaticBooleanArray(ArrayUtil.EMPTY_BOOLEAN_ARRAY);
    }
}
