package projectzombie.items;

import gl_engine.vec.Vec2d;
import projectzombie.entity.player.EntityPlayer;
import projectzombie.init.Models;
import projectzombie.items.modifier.ItemModifier;
import projectzombie.items.modifier.ItemModifierDamage;
import projectzombie.items.modifier.ItemModifierMeta;
import projectzombie.items.modifier.ItemModifierTimer;
import projectzombie.model.ModelItem;
import projectzombie.util.math.ItemStack;
import projectzombie.world.layer.Layer;

public class ItemTorch extends Item
{

	@Override
	public ModelItem getModel(ItemStack stack)
	{
		if(ItemModifierMeta.getStackMeta(stack) == 1) {
			return Models.ITEM_TORCH_LIT;
		}
		
		else {
			return Models.ITEM_TORCH_UNLIT;
		}
	}
	
	@Override
	public double getDamage(ItemStack stack)
	{
		ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class);
		
		if(timer == null) {
			return 0;
		}
		
		return timer.getDamage();
	}
	
	@Override
	public boolean onPlayerRightClick(ItemStack stack, Layer layer, EntityPlayer player, Vec2d place_pos)
	{
		if(ItemModifierMeta.getStackMeta(stack) == 1) {
			return false;
		}
		
		stack.modifiers = new ItemModifier[] {
				new ItemModifierMeta(1),
				new ItemModifierTimer(12000),
		};
		
		return true;
	}
	
	@Override
	public boolean isEmpty(ItemStack stack)
	{
		if(ItemModifierMeta.getStackMeta(stack) != 1) {
			return false;
		}
		
		ItemModifierTimer timer = (ItemModifierTimer)stack.getModifier(ItemModifierTimer.class);
		
		if(timer == null) {
			return false;
		}
		
		return timer.getDamage() > 1;
	}
	
	@Override
	public double getLightLevel(ItemStack stack) {
		return ItemModifierMeta.getStackMeta(stack) == 1 ? 1 : 0;
	}

	@Override
	public String getName(ItemStack stack) {
		return "Torch";
	}

}
