/*
* This file is part of Matter Overdrive
* Copyright (c) 2015., Simeon Radivoev, All rights reserved.
*
* Matter Overdrive is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Matter Overdrive is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Matter Overdrive. If not, see <http://www.gnu.org/licenses>.
*/
package matteroverdrive.items.weapon.module;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import matteroverdrive.MatterOverdrive;
import matteroverdrive.Reference;
import matteroverdrive.api.weapon.IWeaponModule;
import matteroverdrive.init.MatterOverdriveItems;
import matteroverdrive.items.includes.MOBaseItem;
import matteroverdrive.util.MOStringHelper;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import java.util.List;
/**
* Created by Simeon on 4/15/2015.
*/
public class WeaponModuleBarrel extends MOBaseItem implements IWeaponModule
{
public static final int DAMAGE_BARREL_ID = 0;
public static final int FIRE_BARREL_ID = 1;
public static final int EXPLOSION_BARREL_ID = 2;
public static final int HEAL_BARREL_ID = 3;
public static final String[] names = {"damage","fire","explosion","heal"};
private IIcon[] icons;
public WeaponModuleBarrel(String name)
{
super(name);
setCreativeTab(MatterOverdrive.tabMatterOverdrive_modules);
this.setHasSubtypes(true);
this.setMaxDamage(0);
this.setMaxStackSize(1);
}
public void register()
{
super.register();
//damage barrel
GameRegistry.addRecipe(new ItemStack(this,1,0)," G ","RDR"," T ",'T', MatterOverdriveItems.tritanium_plate,'D',MatterOverdriveItems.dilithium_ctystal,'R', Items.redstone,'G', Blocks.glass);
GameRegistry.addRecipe(new ItemStack(this,1,1)," G ","BFB"," T ",'T', MatterOverdriveItems.tritanium_plate,'F',Items.fire_charge,'B', Items.blaze_rod,'G', Blocks.glass);
GameRegistry.addRecipe(new ItemStack(this,1,2)," B ","BRB","DTD",'T', MatterOverdriveItems.tritanium_plate,'R',Items.blaze_rod,'B', Blocks.tnt,'G', Blocks.glass,'D',Items.diamond);
GameRegistry.addRecipe(new ItemStack(this,1,3)," S ","SAS","ETE",'T', MatterOverdriveItems.tritanium_plate,'A',Items.golden_apple,'S', Items.sugar,'G', Blocks.glass,'E',Items.emerald);
}
@Override
public boolean hasDetails(ItemStack itemStack)
{
return true;
}
@Override
public void addDetails(ItemStack itemstack, EntityPlayer player, List infos)
{
super.addDetails(itemstack, player, infos);
int damage = itemstack.getItemDamage();
switch (damage)
{
case 0:
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_DAMAGE, 1.5f));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_AMMO, 0.5f));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_EFFECT, 0.5f));
break;
case 1:
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_AMMO, 0.5f));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_DAMAGE, 0.75f));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_FIRE_DAMAGE, 1));
break;
case 2:
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_EXPLOSION_DAMAGE, 1));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_AMMO, 0.2));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_EFFECT, 0.5));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_FIRE_RATE, 0.15));
break;
case 3:
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_DAMAGE, 0));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_AMMO, 0.5));
infos.add(MOStringHelper.weaponStatToInfo(Reference.WS_HEAL, 0.1));
break;
}
}
@Override
public int getSlot(ItemStack module)
{
return Reference.MODULE_BARREL;
}
@Override
public String getModelPath()
{
return null;
}
@Override
public ResourceLocation getModelTexture(ItemStack module) {
return null;
}
@Override
public String getModelName(ItemStack module) {
return null;
}
@Override
public float modifyWeaponStat(int statID, ItemStack module, ItemStack weapon, float originalStat)
{
int damage = module.getItemDamage();
switch (damage)
{
case 0:
if (statID == Reference.WS_DAMAGE)
return originalStat * 1.5f;
else if (statID == Reference.WS_AMMO)
return originalStat * 0.5f;
else if (statID == Reference.WS_EFFECT)
return originalStat * 0.5f;
break;
case 1:
if (statID == Reference.WS_AMMO)
return originalStat * 0.5f;
if (statID == Reference.WS_DAMAGE)
return originalStat * 0.75f;
if (statID == Reference.WS_FIRE_DAMAGE)
return originalStat + 1;
break;
case 2:
if (statID == Reference.WS_EXPLOSION_DAMAGE)
return originalStat + 1;
else if (statID == Reference.WS_AMMO)
return originalStat * 0.2f;
else if (statID == Reference.WS_EFFECT)
return originalStat * 0.5f;
else if (statID == Reference.WS_FIRE_RATE)
return originalStat * 0.15f;
break;
case 3:
if (statID == Reference.WS_DAMAGE)
return 0;
else if (statID == Reference.WS_AMMO)
return originalStat * 0.5f;
else if (statID == Reference.WS_HEAL)
return originalStat + 0.1f;
break;
}
return originalStat;
}
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs creativeTabs, List list)
{
for (int i = 0; i < names.length;i++)
{
list.add(new ItemStack(item, 1, i));
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int damage)
{
if (damage >= 0 && damage < icons.length)
{
return icons[damage];
}
return null;
}
@Override
public String getUnlocalizedName(ItemStack itemStack)
{
int damage = itemStack.getItemDamage();
return this.getUnlocalizedName() + "." + names[damage];
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iconRegister)
{
icons = new IIcon[names.length];
for (int i = 0; i < names.length;i++)
{
icons[i] = iconRegister.registerIcon(Reference.MOD_ID + ":barrel_" + names[i]);
}
}
}