package minefantasy.mf2.item.gadget;
import java.util.HashMap;
import java.util.List;
import minefantasy.mf2.api.MineFantasyAPI;
import minefantasy.mf2.api.crafting.engineer.ICrossbowPart;
import minefantasy.mf2.item.ItemComponentMF;
import minefantasy.mf2.item.list.ComponentListMF;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemCrossbowPart extends ItemComponentMF implements ICrossbowPart
{
private int tier;
private String type, partname;
public IIcon modelIcon;
public ItemCrossbowPart(String name, String type)
{
this(name, type, ICrossbowPart.components.size(), name);
}
public ItemCrossbowPart(String name, String type, int tier)
{
this(name, type, tier, name);
}
public ItemCrossbowPart(String name, String type, int tier, String model)
{
super(name, 0);
this.setFull3D();
this.type = type;
this.tier = tier;
this.partname=model;
MineFantasyAPI.registerCrossbowPart(this);
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack item, EntityPlayer user, List list, boolean fullInfo)
{
list.add(EnumChatFormatting.GOLD + StatCollector.translateToLocal("crossbow.component.name"));
list.add(EnumChatFormatting.ITALIC + StatCollector.translateToLocal("crossbow.component." + type));
list.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal(getUnlocalizedName() + ".desc"));
}
@Override
public String getComponentType()
{
return type;
}
@Override
public int getID()
{
return tier;
}
public static ICrossbowPart getPart(String type, int id)
{
return components.get(type+id);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon() {
return modelIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister reg)
{
super.registerIcons(reg);
modelIcon = reg.registerIcon("minefantasy2:gun/"+type+"/"+partname);
}
@Override
public String getUnlocalisedName()
{
if(this == ComponentListMF.cross_arms_basic)
{
return null;
}
return "crosspart."+type+"."+partname;
}
private int capacity = 0, durability = 50;
private float power, spread, recoil, speed, bash, zoom;
public ItemCrossbowPart addPower(float power)
{
this.power = power;
return this;
}
public ItemCrossbowPart setScope(float zoom)
{
this.zoom = zoom;
return this;
}
public ItemCrossbowPart addSpread(float spread)
{
this.spread = spread;
return this;
}
public ItemCrossbowPart addRecoil(float recoil)
{
this.recoil = recoil;
return this;
}
public ItemCrossbowPart addSpeed(float speed)
{
this.speed = speed;
return this;
}
public ItemCrossbowPart addBash(float bash)
{
this.bash = bash;
return this;
}
public ItemCrossbowPart addCapacity(int capacity)
{
this.capacity = capacity;
return this;
}
public ItemCrossbowPart addDurability(int durability)
{
this.durability = durability;
return this;
}
@Override
public float getModifier(String type)
{
if(type.equalsIgnoreCase("power"))return power;
if(type.equalsIgnoreCase("spread"))return spread;
if(type.equalsIgnoreCase("recoil"))return recoil;
if(type.equalsIgnoreCase("speed"))return speed;
if(type.equalsIgnoreCase("capacity"))return capacity;
if(type.equalsIgnoreCase("bash"))return bash;
if(type.equalsIgnoreCase("zoom"))return zoom;
if(type.equalsIgnoreCase("durability"))return durability;
return 0F;
}
}