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

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

import com.hypixel.hytale.builtin.adventure.objectives.historydata.ObjectiveHistoryData;
import com.hypixel.hytale.builtin.adventure.objectives.historydata.ObjectiveRewardHistoryData;
import com.hypixel.hytale.builtin.adventure.objectivereputation.historydata.ReputationObjectiveRewardHistoryData;
import com.hypixel.hytale.server.core.entity.UUIDComponent;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.server.core.entity.entities.Player;
import com.hypixel.hytale.builtin.adventure.reputation.ReputationPlugin;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.ComponentAccessor;
import com.hypixel.hytale.builtin.adventure.objectives.Objective;
import com.hypixel.hytale.builtin.adventure.objectives.config.completion.ObjectiveCompletionAsset;
import javax.annotation.Nonnull;
import com.hypixel.hytale.builtin.adventure.objectivereputation.assets.ReputationCompletionAsset;
import com.hypixel.hytale.builtin.adventure.objectives.completion.ObjectiveCompletion;

public class ReputationCompletion extends ObjectiveCompletion
{
    static final /* synthetic */ boolean $assertionsDisabled;
    
    public ReputationCompletion(@Nonnull final ReputationCompletionAsset asset) {
        super(asset);
    }
    
    @Nonnull
    @Override
    public ReputationCompletionAsset getAsset() {
        return (ReputationCompletionAsset)super.getAsset();
    }
    
    @Override
    public void handle(@Nonnull final Objective objective, @Nonnull final ComponentAccessor<EntityStore> componentAccessor) {
        final ReputationPlugin reputationModule = ReputationPlugin.get();
        objective.forEachParticipant((participantReference, asset, objectiveHistoryData) -> {
            final Player playerComponent = componentAccessor.getComponent(participantReference, Player.getComponentType());
            if (playerComponent != null) {
                final UUIDComponent uuidComponent = componentAccessor.getComponent(participantReference, UUIDComponent.getComponentType());
                if (!ReputationCompletion.$assertionsDisabled && uuidComponent == null) {
                    throw new AssertionError();
                }
                else {
                    final String reputationGroupId = asset.getReputationGroupId();
                    final int amount = asset.getAmount();
                    reputationModule.changeReputation(playerComponent, reputationGroupId, amount, componentAccessor);
                    objectiveHistoryData.addRewardForPlayerUUID(uuidComponent.getUuid(), new ReputationObjectiveRewardHistoryData(reputationGroupId, amount));
                }
            }
        }, this.getAsset(), objective.getObjectiveHistoryData());
    }
    
    @Nonnull
    @Override
    public String toString() {
        return "ReputationCompletion{} " + super.toString();
    }
}
