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

package com.hypixel.hytale.server.npc.sensorinfo;

import javax.annotation.Nonnull;
import com.hypixel.hytale.server.npc.sensorinfo.parameterproviders.ParameterProvider;
import javax.annotation.Nullable;

public class ValueWrappedInfoProvider implements InfoProvider
{
    @Nullable
    private final InfoProvider wrappedProvider;
    @Nonnull
    private final ParameterProvider parameterProvider;
    
    public ValueWrappedInfoProvider(@Nullable final InfoProvider wrappedProvider, @Nonnull final ParameterProvider parameterProvider) {
        this.wrappedProvider = wrappedProvider;
        this.parameterProvider = parameterProvider;
    }
    
    @Nullable
    @Override
    public IPositionProvider getPositionProvider() {
        return (this.wrappedProvider != null) ? this.wrappedProvider.getPositionProvider() : null;
    }
    
    @Nullable
    @Override
    public ParameterProvider getParameterProvider(final int parameter) {
        final ParameterProvider provider = this.parameterProvider.getParameterProvider(parameter);
        if (provider != null) {
            return provider;
        }
        return (this.wrappedProvider != null) ? this.wrappedProvider.getParameterProvider(parameter) : null;
    }
    
    @Nullable
    @Override
    public <E extends ExtraInfoProvider> E getExtraInfo(final Class<E> clazz) {
        return (E)((this.wrappedProvider != null) ? this.wrappedProvider.getExtraInfo(clazz) : null);
    }
    
    @Override
    public <E extends ExtraInfoProvider> void passExtraInfo(final E provider) {
        if (this.wrappedProvider != null) {
            this.wrappedProvider.passExtraInfo(provider);
        }
    }
    
    @Nullable
    @Override
    public <E extends ExtraInfoProvider> E getPassedExtraInfo(final Class<E> clazz) {
        return (E)((this.wrappedProvider != null) ? this.wrappedProvider.getPassedExtraInfo(clazz) : null);
    }
    
    @Override
    public boolean hasPosition() {
        return this.wrappedProvider != null && this.wrappedProvider.hasPosition();
    }
}
