ItemStack.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "ItemStack.h"
  2. #include <XML.h>
  3. #include "Globals.h"
  4. #include "UIMLToolTip.h"
  5. ItemStackElement::ItemStackElement()
  6. : Framework::UIMLElement()
  7. {}
  8. bool ItemStackElement::isApplicableFor(Framework::XML::Element& element)
  9. {
  10. return element.getName().istGleich("itemStack");
  11. }
  12. Framework::Zeichnung* ItemStackElement::parseElement(
  13. Framework::XML::Element& element, Framework::UIMLContainer& generalFactory)
  14. {
  15. ItemStackView* result = new ItemStackView(dynamic_cast<Framework::Schrift*>(
  16. generalFactory.getFactory().initParam.schrift->getThis()));
  17. updateElement(element, *result, generalFactory);
  18. return result;
  19. }
  20. bool ItemStackElement::updateElement(Framework::XML::Element& element,
  21. Framework::Zeichnung& z,
  22. Framework::UIMLContainer& generalFactory)
  23. {
  24. ItemStackView* view = dynamic_cast<ItemStackView*>(&z);
  25. if (!view) return false;
  26. view->setCount(element.getAttributeValue("count"));
  27. auto tip = element.selectChildsByName("tip");
  28. if (tip.exists())
  29. {
  30. view->setToolTip((Framework::RCPointer<Framework::XML::Element>)
  31. tip.getFirstElement());
  32. }
  33. int type = (int)element.getAttributeValue("type");
  34. const ItemType* itemType = zItemType(type);
  35. if (itemType)
  36. {
  37. view->setHintergrundBildZ(
  38. dynamic_cast<Framework::Bild*>(itemType->zIcon()->getThis()));
  39. }
  40. return true;
  41. }
  42. ItemStackView::ItemStackView(Framework::Schrift* schrift)
  43. : Framework::ZeichnungHintergrund(),
  44. count("")
  45. {
  46. setStyle(ZeichnungHintergrund::Style::Erlaubt
  47. | ZeichnungHintergrund::Style::Sichtbar
  48. | ZeichnungHintergrund::Style::Hintergrund
  49. | ZeichnungHintergrund::Style::HBild
  50. | ZeichnungHintergrund::Style::HAlpha
  51. | ZeichnungHintergrund::Style::Rahmen);
  52. setRahmenBreite(1);
  53. setRahmenFarbe(0xFF52525E);
  54. tr.setSchriftZ(schrift);
  55. tr.setSchriftSize(12);
  56. }
  57. void ItemStackView::setCount(Framework::Text count)
  58. {
  59. this->count = count;
  60. }
  61. void ItemStackView::setToolTip(Framework::XML::Element* zToolTipUIML)
  62. {
  63. UIMLToolTip* tip = new UIMLToolTip();
  64. tip->setUIML(zToolTipUIML->toString());
  65. setToolTipZ(tip);
  66. }
  67. void ItemStackView::render(Framework::Bild& rObj)
  68. {
  69. Framework::ZeichnungHintergrund::render(rObj);
  70. if (rObj.setDrawOptions(pos, gr))
  71. {
  72. if (rObj.setDrawOptions(getRahmenBreite(),
  73. getRahmenBreite(),
  74. getInnenBreite(),
  75. getInnenHeight()))
  76. {
  77. tr.renderText(getInnenBreite() - 5 - tr.getTextBreite(count),
  78. getInnenHeight() - 5 - tr.getTextHeight(count),
  79. count,
  80. rObj,
  81. 0xFFFFFFFF);
  82. rObj.releaseDrawOptions();
  83. }
  84. rObj.releaseDrawOptions();
  85. }
  86. }