#include "ItemModifier.h"

using namespace Framework;

ItemModifier::ItemModifier()
    : ReferenceCounter()
{}

AttributeItemModifier::AttributeItemModifier(
    Framework::Text attribute, Framework::Text value)
    : ItemModifier(),
      attribute(attribute),
      value(value)
{}

void AttributeItemModifier::applyOn(Item* zItem)
{
    if (attribute.istGleich("hp"))
    {
        float hp = 0;
        if (value.positionVon("+=") == 0 || value.positionVon("-=") == 0)
        {
            hp = zItem->getHp();
            if (value.positionVon("+=") == 0)
                hp += TextZuFloat(value.getText() + 2);
            if (value.positionVon("-=") == 0)
                hp -= TextZuFloat(value.getText() + 2);
        }
        if (value.positionVon("=") == 0)
        {
            hp = TextZuFloat(value.getText() + 1);
        }
        zItem->setHp(hp);
    }
}

CombinedItemModifier::CombinedItemModifier()
    : ItemModifier()
{}

void CombinedItemModifier::addModifier(ItemModifier* modifier)
{
    modifiers.add(modifier);
}

void CombinedItemModifier::applyOn(Item* zItem)
{
    for (ItemModifier* modifier : modifiers)
    {
        modifier->applyOn(zItem);
    }
}