package gtPlusPlus.xmod.ic2.item;

import ic2.api.item.IKineticRotor;
import ic2.core.block.kineticgenerator.gui.GuiWaterKineticGenerator;
import ic2.core.block.kineticgenerator.gui.GuiWindKineticGenerator;
import ic2.core.init.InternalName;
import ic2.core.item.resources.ItemWindRotor;

import java.util.List;

import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;

public class RotorBase extends ItemWindRotor{

	private final int maxWindStrength;
	private final int minWindStrength;
	private final int radius;
	private final float efficiency;
	private final ResourceLocation renderTexture;
	private final boolean water;	

	public RotorBase(InternalName internalName, int Radius, int durability, float efficiency, int minWindStrength, int maxWindStrength, ResourceLocation RenderTexture)
	{
		super(internalName, Radius, durability, efficiency, minWindStrength, maxWindStrength, RenderTexture);



		setMaxStackSize(1);
		setMaxDamage(durability);

		this.radius = Radius;
		this.efficiency = efficiency;
		this.renderTexture = RenderTexture;
		this.minWindStrength = minWindStrength;
		this.maxWindStrength = maxWindStrength;
		this.water = true;
	}

	@Override
	public void addInformation(ItemStack itemStack, EntityPlayer player, List info, boolean b)
	{
		info.add(StatCollector.translateToLocalFormatted("ic2.itemrotor.wind.info", new Object[] { Integer.valueOf(this.minWindStrength), Integer.valueOf(this.maxWindStrength) }));
		IKineticRotor.GearboxType type = null;
		if ((Minecraft.getMinecraft().currentScreen != null) && ((Minecraft.getMinecraft().currentScreen instanceof GuiWaterKineticGenerator))) {
			type = IKineticRotor.GearboxType.WATER;
		} else if ((Minecraft.getMinecraft().currentScreen != null) && ((Minecraft.getMinecraft().currentScreen instanceof GuiWindKineticGenerator))) {
			type = IKineticRotor.GearboxType.WIND;
		}
		if (type != null) {
			//info.add(StatCollector.translateToLocal("ic2.itemrotor.fitsin." + isAcceptedType(itemStack, type)));
		}
	}

	@Override
	public String getTextureFolder()
	{
		return "rotors";
	}

	@Override
	public int getDiameter(ItemStack stack)
	{
		return this.radius;
	}

	@Override
	public ResourceLocation getRotorRenderTexture(ItemStack stack)
	{
		return this.renderTexture;
	}

	@Override
	public float getEfficiency(ItemStack stack)
	{
		return this.efficiency;
	}

	@Override
	public int getMinWindStrength(ItemStack stack)
	{
		return this.minWindStrength;
	}

	@Override
	public int getMaxWindStrength(ItemStack stack)
	{
		return this.maxWindStrength;
	}

	public boolean isAcceptedType(ItemStack stack, IKineticRotor.GearboxType type)
	{
		return (type == IKineticRotor.GearboxType.WIND) || (this.water);
	}
}