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

package com.hypixel.hytale.server.npc.blackboard.view;

import java.util.Collections;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import javax.annotation.Nonnull;
import java.util.List;

public abstract class PrioritisedProviderView<T, ViewType extends IBlackboardView<ViewType>> implements IBlackboardView<ViewType>
{
    public static final int LOWEST_PRIORITY = Integer.MAX_VALUE;
    @Nonnull
    protected List<PrioritisedProvider<T>> providers;
    
    public PrioritisedProviderView() {
        this.providers = new ObjectArrayList<PrioritisedProvider<T>>();
    }
    
    public void registerProvider(final int priority, final T provider) {
        this.providers.add(new PrioritisedProvider<T>(priority, provider));
        Collections.sort(this.providers);
    }
    
    public static class PrioritisedProvider<T> implements Comparable<PrioritisedProvider<T>>
    {
        private final int priority;
        private final T provider;
        
        public PrioritisedProvider(final int priority, final T provider) {
            this.priority = priority;
            this.provider = provider;
        }
        
        public T getProvider() {
            return this.provider;
        }
        
        @Override
        public int compareTo(@Nonnull final PrioritisedProvider<T> other) {
            return Integer.compare(this.priority, other.priority);
        }
    }
}
