void EquipmentWindow::draw(gcn::Graphics *graphics) { // Draw window graphics Window::draw(graphics); Window::drawChildren(graphics); // Draw equipment boxes Graphics *g = static_cast<Graphics*>(graphics); for (int i = 0; i < mBoxesNumber; i++) { // When there is a background image, draw it centered in the box: if (mEquipBox[i].backgroundImage) { int posX = mEquipBox[i].posX + (BOX_WIDTH - mEquipBox[i].backgroundImage->getWidth()) / 2; int posY = mEquipBox[i].posY + (BOX_HEIGHT - mEquipBox[i].backgroundImage->getHeight()) / 2; g->drawImage(mEquipBox[i].backgroundImage, posX, posY); } if (i == mSelected) { const gcn::Color color = Theme::getThemeColor(Theme::HIGHLIGHT); // Set color to the highlight color g->setColor(gcn::Color(color.r, color.g, color.b, getGuiAlpha())); g->fillRectangle(gcn::Rectangle(mEquipBox[i].posX, mEquipBox[i].posY, BOX_WIDTH, BOX_HEIGHT)); } // Set color black g->setColor(gcn::Color(0, 0, 0)); // Draw box border g->drawRectangle(gcn::Rectangle(mEquipBox[i].posX, mEquipBox[i].posY, BOX_WIDTH, BOX_HEIGHT)); Item *item = mEquipment->getEquipment(i); if (item) { // Draw Item. Image *image = item->getImage(); // Ensure the image is drawn with maximum opacity image->setAlpha(1.0f); g->drawImage(image, mEquipBox[i].posX + 2, mEquipBox[i].posY + 2); if (i == TmwAthena::EQUIP_PROJECTILE_SLOT) { g->setColor(Theme::getThemeColor(Theme::TEXT)); graphics->drawText(toString(item->getQuantity()), mEquipBox[i].posX + (BOX_WIDTH / 2), mEquipBox[i].posY - getFont()->getHeight(), gcn::Graphics::CENTER); } } } }
void EquipmentWindow::draw(gcn::Graphics *graphics) { // Draw window graphics Window::draw(graphics); Graphics *g = static_cast<Graphics*>(graphics); Window::drawChildren(graphics); int i = 0; const int fontHeight = getFont()->getHeight(); for (std::vector<EquipmentBox*>::const_iterator it = mBoxes.begin(), it_end = mBoxes.end(); it != it_end; ++ it, ++ i) { EquipmentBox *box = *it; if (!box) continue; if (i == mSelected) { mHighlightColor.a = getGuiAlpha(); // Set color to the highlight color g->setColor(mHighlightColor); g->fillRectangle(gcn::Rectangle(box->x, box->y, BOX_WIDTH, BOX_HEIGHT)); } // Set color black g->setColor(mBorderColor); // Draw box border g->drawRectangle(gcn::Rectangle(box->x, box->y, BOX_WIDTH, BOX_HEIGHT)); if (!mEquipment) continue; Item *item = mEquipment->getEquipment(i); if (item) { // Draw Item. Image *image = item->getImage(); if (image) { image->setAlpha(1.0f); // Ensure the image is drawn // with maximum opacity g->drawImage(image, box->x + 2, box->y + 2); if (i == EQUIP_PROJECTILE_SLOT) { g->setColor(getForegroundColor()); graphics->drawText(toString(item->getQuantity()), box->x + (BOX_WIDTH / 2), box->y - fontHeight, gcn::Graphics::CENTER); } } } else if (box->image) { g->drawImage(box->image, box->x + BOX_X_PAD, box->y + BOX_Y_PAD); } } }
void EquipmentWindow::draw(gcn::Graphics *graphics) { // Draw window graphics Window::draw(graphics); Item* item; graphics->pushClipArea(getChildrenArea()); // A bitmask showing which slots will be affected // by the equip / unequip button. int highlightSlots = 0; if (mSelected != -1) highlightSlots = (1 << mSelected); Item* wouldEquip = mItems->getSelectedItem(); if (wouldEquip) highlightSlots |= wouldEquip->getInfo().getEquipSlots(); for (int i = EQUIP_LEGS_SLOT; i < EQUIP_VECTOREND; i++) { const gcn::Rectangle &rect = mEquipIcon[i]->getDimension(); if (highlightSlots & (1 << i)) { const gcn::Color color = guiPalette->getColor(Palette::HIGHLIGHT); // Set color to the highligh color graphics->setColor(gcn::Color(color.r, color.g, color.b, getGuiAlpha())); graphics->fillRectangle(rect); } // Set color black. graphics->setColor(gcn::Color(0, 0, 0)); // Draw box border. graphics->drawRectangle(rect); item = (i != EQUIP_AMMO_SLOT) ? mInventory->getItem(mEquipment->getEquipment(i)) : mInventory->getItem(mEquipment->getArrows()); if (item) { // Draw Item. Image* image = item->getImage(); if (image != mEquipIcon[i]->getImage()) mEquipIcon[i]->setImage(image); if (i == EQUIP_AMMO_SLOT) { graphics->setColor(guiPalette->getColor(Palette::TEXT)); graphics->drawText(toString(item->getQuantity()), mEquipIcon[i]->getX() + (mEquipIcon[i]->getWidth() / 2), mEquipIcon[i]->getY() - getFont()->getHeight(), gcn::Graphics::CENTER); } } else if (mEquipIcon[i]->getImage()) mEquipIcon[i]->setImage(NULL); } graphics->popClipArea(); Window::drawChildren(graphics); }