ItemModifier.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "ItemModifier.h"
  2. using namespace Framework;
  3. ItemModifier::ItemModifier()
  4. : ReferenceCounter()
  5. {}
  6. AttributeItemModifier::AttributeItemModifier(Framework::Text attribute, Framework::Text value)
  7. : ItemModifier(),
  8. attribute(attribute),
  9. value(value)
  10. {}
  11. void AttributeItemModifier::applyOn(Item* zItem)
  12. {
  13. if (attribute.istGleich("hp"))
  14. {
  15. float hp = 0;
  16. if (value.positionVon("+=") == 0 || value.positionVon("-=") == 0)
  17. {
  18. hp = zItem->getHp();
  19. if (value.positionVon("+=") == 0)
  20. hp += TextZuFloat(value.getText() + 2);
  21. if (value.positionVon("-=") == 0)
  22. hp -= TextZuFloat(value.getText() + 2);
  23. }
  24. if (value.positionVon("=") == 0)
  25. {
  26. hp = TextZuFloat(value.getText() + 1);
  27. }
  28. zItem->setHp(hp);
  29. }
  30. }
  31. CombinedItemModifier::CombinedItemModifier()
  32. : ItemModifier()
  33. {}
  34. void CombinedItemModifier::addModifier(ItemModifier* modifier)
  35. {
  36. modifiers.add(modifier);
  37. }
  38. void CombinedItemModifier::applyOn(Item* zItem)
  39. {
  40. for (ItemModifier* modifier : modifiers)
  41. {
  42. modifier->applyOn(zItem);
  43. }
  44. }