#include "ItemStack.h" #include #include "Globals.h" #include "UIMLToolTip.h" ItemStackElement::ItemStackElement() : Framework::UIMLElement() {} bool ItemStackElement::isApplicableFor(Framework::XML::Element& element) { return element.getName().istGleich("itemStack"); } Framework::Zeichnung* ItemStackElement::parseElement( Framework::XML::Element& element, Framework::UIMLContainer& generalFactory) { ItemStackView* result = new ItemStackView(dynamic_cast( generalFactory.getFactory().initParam.schrift->getThis())); updateElement(element, *result, generalFactory); return result; } bool ItemStackElement::updateElement(Framework::XML::Element& element, Framework::Zeichnung& z, Framework::UIMLContainer& generalFactory) { ItemStackView* view = dynamic_cast(&z); if (!view) return false; view->setCount(element.getAttributeValue("count")); auto tip = element.selectChildsByName("tip"); if (tip.exists()) { view->setToolTip((Framework::RCPointer) tip.getFirstElement()); } int type = (int)element.getAttributeValue("type"); const ItemType* itemType = zItemType(type); if (itemType) { view->setHintergrundBildZ( dynamic_cast(itemType->zIcon()->getThis())); } return true; } ItemStackView::ItemStackView(Framework::Schrift* schrift) : Framework::ZeichnungHintergrund(), count("") { setStyle(ZeichnungHintergrund::Style::Erlaubt | ZeichnungHintergrund::Style::Sichtbar | ZeichnungHintergrund::Style::Hintergrund | ZeichnungHintergrund::Style::HBild | ZeichnungHintergrund::Style::HAlpha | ZeichnungHintergrund::Style::Rahmen); setRahmenBreite(1); setRahmenFarbe(0xFF52525E); tr.setSchriftZ(schrift); tr.setSchriftSize(12); } void ItemStackView::setCount(Framework::Text count) { this->count = count; } void ItemStackView::setToolTip(Framework::XML::Element* zToolTipUIML) { UIMLToolTip* tip = new UIMLToolTip(); tip->setUIML(zToolTipUIML->toString()); setToolTipZ(tip); } void ItemStackView::render(Framework::Bild& rObj) { Framework::ZeichnungHintergrund::render(rObj); if (rObj.setDrawOptions(pos, gr)) { if (rObj.setDrawOptions(getRahmenBreite(), getRahmenBreite(), getInnenBreite(), getInnenHeight())) { tr.renderText(getInnenBreite() - 5 - tr.getTextBreite(count), getInnenHeight() - 5 - tr.getTextHeight(count), count, rObj, 0xFFFFFFFF); rObj.releaseDrawOptions(); } rObj.releaseDrawOptions(); } }