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

package com.hypixel.hytale.builtin.adventure.npcreputation;

import com.hypixel.hytale.server.npc.blackboard.view.attitude.IAttitudeProvider;
import com.hypixel.hytale.server.npc.blackboard.view.PrioritisedProviderView;
import com.hypixel.hytale.server.core.asset.type.attitude.Attitude;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.server.npc.role.Role;
import com.hypixel.hytale.builtin.adventure.reputation.ReputationPlugin;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.server.npc.blackboard.view.attitude.AttitudeView;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.server.npc.blackboard.Blackboard;
import com.hypixel.hytale.component.ResourceType;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.system.StoreSystem;

public class ReputationAttitudeSystem extends StoreSystem<EntityStore>
{
    private final ResourceType<EntityStore, Blackboard> resourceType;
    
    public ReputationAttitudeSystem() {
        this.resourceType = Blackboard.getResourceType();
    }
    
    @Override
    public void onSystemAddedToStore(@Nonnull final Store<EntityStore> store) {
        final Blackboard blackboard = store.getResource(this.resourceType);
        final AttitudeView view = blackboard.getView(AttitudeView.class, 0L);
        ((PrioritisedProviderView<IAttitudeProvider, ViewType>)view).registerProvider(100, (ref, role, targetRef, accessor) -> {
            final Player playerComponent = store.getComponent(targetRef, Player.getComponentType());
            if (playerComponent == null) {
                return null;
            }
            else {
                return ReputationPlugin.get().getAttitude(store, targetRef, ref);
            }
        });
    }
    
    @Override
    public void onSystemRemovedFromStore(@Nonnull final Store<EntityStore> store) {
    }
}
