ItemModifier.cpp 1.2 KB

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