#include "Item.h"


Item::Item( const ItemType* zType, const char* name )
    : ReferenceCounter(),
    zType( zType ),
    damage( 0 ),
    maxDamage( 0 ),
    durability( 0 ),
    maxDurability( 0 ),
    eatable( 0 ),
    placeable( 0 ),
    equippable( 0 ),
    solid( 1 ),
    usable( 0 ),
    maxStackSize( 50 ),
    name( name )
{}

void Item::tick()
{}

const ItemType* Item::zItemType() const
{
    return zType;
}

float Item::getDamage() const
{
    return damage;
}

float Item::getDurability() const
{
    return durability;
}

bool Item::isUsable() const
{
    return usable;
}

bool Item::isEatable() const
{
    return eatable;
}

bool Item::isPlaceable() const
{
    return placeable;
}

bool Item::isEquippable() const
{
    return equippable;
}

bool Item::isSolid() const
{
    return solid;
}

float Item::getMaxDurability() const
{
    return maxDurability;
}

int Item::getMaxStackSize() const
{
    return maxStackSize;
}

float Item::getMaxDamage() const
{
    return maxDamage;
}

bool Item::canBeStackedWith( Item* zItem ) const
{
    return zType == zItem->zType && damage == 0 &&
        zItem->damage == 0 &&
        durability == maxDurability &&
        zItem->durability == zItem->maxDurability &&
        maxDamage == zItem->maxDamage &&
        eatable == zItem->eatable &&
        placeable == zItem->placeable &&
        equippable == zItem->eatable &&
        solid == zItem->solid &&
        usable == zItem->usable &&
        maxStackSize == zItem->maxStackSize &&
        name.istGleich( zItem->name );
}

void Item::applyInventoryEffects( Entity* zTarget )
{}

void Item::removeInventoryEffects( Entity* zTarget )
{}

void Item::applyEquippedEffects( Entity* zTarget )
{}

void Item::removeEquippedEffects( Entity* zTarget )
{}

void Item::applyFoodEffects( Entity* zTarget )
{}