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

package com.hypixel.hytale.server.npc.asset.builder;

import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
import javax.annotation.Nullable;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;

public class SlotMapper
{
    public static final int NO_SLOT = Integer.MIN_VALUE;
    private final Object2IntMap<String> mappings;
    @Nullable
    private final Int2ObjectMap<String> nameMap;
    private int nextSlot;
    
    public SlotMapper() {
        this(false);
    }
    
    public SlotMapper(final boolean trackNames) {
        this.mappings = new Object2IntOpenHashMap<String>();
        this.nameMap = (trackNames ? new Int2ObjectOpenHashMap<String>() : null);
        this.mappings.defaultReturnValue(Integer.MIN_VALUE);
    }
    
    public int getSlot(final String name) {
        int slot = this.mappings.getInt(name);
        if (slot == Integer.MIN_VALUE) {
            slot = this.nextSlot++;
            this.mappings.put(name, slot);
            if (this.nameMap != null) {
                this.nameMap.put(slot, name);
            }
        }
        return slot;
    }
    
    public int slotCount() {
        return this.mappings.size();
    }
    
    @Nullable
    public Object2IntMap<String> getSlotMappings() {
        if (this.mappings.isEmpty()) {
            return null;
        }
        return this.mappings;
    }
    
    @Nullable
    public Int2ObjectMap<String> getNameMap() {
        return this.nameMap;
    }
}
