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

package com.hypixel.hytale.builtin.npccombatactionevaluator.memory;

import javax.annotation.Nonnull;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import com.hypixel.hytale.builtin.npccombatactionevaluator.NPCCombatActionEvaluatorPlugin;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Ref;
import java.util.List;
import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import com.hypixel.hytale.component.Component;

public class TargetMemory implements Component<EntityStore>
{
    private final Int2FloatOpenHashMap knownFriendlies;
    private final List<Ref<EntityStore>> knownFriendliesList;
    private final Int2FloatOpenHashMap knownHostiles;
    private final List<Ref<EntityStore>> knownHostilesList;
    private final float rememberFor;
    private Ref<EntityStore> closestHostile;
    
    public static ComponentType<EntityStore, TargetMemory> getComponentType() {
        return NPCCombatActionEvaluatorPlugin.get().getTargetMemoryComponentType();
    }
    
    public TargetMemory(final float rememberFor) {
        this.knownFriendlies = new Int2FloatOpenHashMap();
        this.knownFriendliesList = new ObjectArrayList<Ref<EntityStore>>();
        this.knownHostiles = new Int2FloatOpenHashMap();
        this.knownHostilesList = new ObjectArrayList<Ref<EntityStore>>();
        this.rememberFor = rememberFor;
        this.knownFriendlies.defaultReturnValue(-1.0f);
        this.knownHostiles.defaultReturnValue(-1.0f);
    }
    
    @Nonnull
    public Int2FloatOpenHashMap getKnownFriendlies() {
        return this.knownFriendlies;
    }
    
    @Nonnull
    public List<Ref<EntityStore>> getKnownFriendliesList() {
        return this.knownFriendliesList;
    }
    
    @Nonnull
    public Int2FloatOpenHashMap getKnownHostiles() {
        return this.knownHostiles;
    }
    
    @Nonnull
    public List<Ref<EntityStore>> getKnownHostilesList() {
        return this.knownHostilesList;
    }
    
    public float getRememberFor() {
        return this.rememberFor;
    }
    
    public Ref<EntityStore> getClosestHostile() {
        return this.closestHostile;
    }
    
    public void setClosestHostile(final Ref<EntityStore> ref) {
        this.closestHostile = ref;
    }
    
    @Nonnull
    @Override
    public Component<EntityStore> clone() {
        return new TargetMemory(this.rememberFor);
    }
}
