// 
// 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 BuilderExpressionStaticStringArray extends BuilderExpression
{
    public static final BuilderExpressionStaticStringArray INSTANCE_EMPTY;
    private final String[] stringArray;
    
    public BuilderExpressionStaticStringArray(final String[] array) {
        this.stringArray = array;
    }
    
    @Nonnull
    @Override
    public ValueType getType() {
        return ValueType.STRING_ARRAY;
    }
    
    @Override
    public boolean isStatic() {
        return true;
    }
    
    @Override
    public String[] getStringArray(final ExecutionContext executionContext) {
        return this.stringArray;
    }
    
    @Override
    public void addToScope(final String name, @Nonnull final StdScope scope) {
        scope.addVar(name, this.stringArray);
    }
    
    @Override
    public void updateScope(@Nonnull final StdScope scope, final String name, final ExecutionContext executionContext) {
        scope.changeValue(name, this.stringArray);
    }
    
    @Nullable
    public static BuilderExpressionStaticStringArray fromJSON(@Nonnull final JsonArray jsonArray) {
        final int size = jsonArray.size();
        final String[] array = new String[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.isString()) {
                return null;
            }
            array[i] = primitive.getAsString();
        }
        return new BuilderExpressionStaticStringArray(array);
    }
    
    static {
        INSTANCE_EMPTY = new BuilderExpressionStaticStringArray(ArrayUtil.EMPTY_STRING_ARRAY);
    }
}
