package pneumaticCraft.client.render.pneumaticArmor;

import java.util.HashSet;
import java.util.Set;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.ChunkPosition;
import net.minecraftforge.common.config.Configuration;
import pneumaticCraft.api.client.IGuiAnimatedStat;
import pneumaticCraft.api.client.pneumaticHelmet.IOptionPage;
import pneumaticCraft.api.client.pneumaticHelmet.IUpgradeRenderHandler;
import pneumaticCraft.client.gui.pneumaticHelmet.GuiDroneDebuggerOptions;
import pneumaticCraft.common.item.ItemMachineUpgrade;
import pneumaticCraft.common.item.ItemPneumaticArmor;
import pneumaticCraft.common.item.Itemss;

public class DroneDebugUpgradeHandler implements IUpgradeRenderHandler{
    private final Set<ChunkPosition> shownPositions = new HashSet<ChunkPosition>();

    public Set<ChunkPosition> getShowingPositions(){
        return shownPositions;
    }

    @Override
    public String getUpgradeName(){
        return "droneDebugger";
    }

    @Override
    public void initConfig(Configuration config){

    }

    @Override
    public void saveToConfig(){

    }

    @Override
    public void update(EntityPlayer player, int rangeUpgrades){

    }

    @Override
    public void render3D(float partialTicks){

    }

    @Override
    public void render2D(float partialTicks, boolean helmetEnabled){

    }

    @Override
    public IGuiAnimatedStat getAnimatedStat(){
        return null;
    }

    @Override
    public boolean isEnabled(ItemStack[] upgradeStacks){
        if(enabledForStacks(upgradeStacks)) {
            return true;
        } else {
            shownPositions.clear();
            return false;
        }
    }

    private static boolean enabledForStacks(ItemStack[] upgradeStacks){
        for(ItemStack stack : upgradeStacks) {
            if(stack != null && stack.getItem() == Itemss.machineUpgrade && stack.getItemDamage() == ItemMachineUpgrade.UPGRADE_DISPENSER_DAMAGE) return true;
        }
        return false;
    }

    public static boolean enabledForPlayer(EntityPlayer player){
        ItemStack helmet = player.getCurrentArmor(3);
        if(helmet != null) {
            return enabledForStacks(ItemPneumaticArmor.getUpgradeStacks(helmet));
        } else {
            return false;
        }
    }

    @Override
    public float getEnergyUsage(int rangeUpgrades, EntityPlayer player){
        return 0;
    }

    @Override
    public void reset(){

    }

    @Override
    public IOptionPage getGuiOptionsPage(){
        return new GuiDroneDebuggerOptions(this);
    }

}