diff options
author | Andrei Karas <akaras@inbox.ru> | 2012-12-01 20:29:04 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2012-12-01 22:58:18 +0300 |
commit | 96007521ba20250db0ed05e4d6117077690637db (patch) | |
tree | 8731f51b493944dd537532db568d80f3f8d8b927 /src/gui/equipmentwindow.cpp | |
parent | d418537e26ec75bc656518dab293ff6313998682 (diff) | |
download | plus-96007521ba20250db0ed05e4d6117077690637db.tar.gz plus-96007521ba20250db0ed05e4d6117077690637db.tar.bz2 plus-96007521ba20250db0ed05e4d6117077690637db.tar.xz plus-96007521ba20250db0ed05e4d6117077690637db.zip |
add batch draw to equipment window.
Diffstat (limited to 'src/gui/equipmentwindow.cpp')
-rw-r--r-- | src/gui/equipmentwindow.cpp | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index e05e1cc50..ef22dc4c5 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -23,6 +23,7 @@ #include "gui/equipmentwindow.h" #include "being.h" +#include "graphicsvertexes.h" #include "inventory.h" #include "item.h" #include "localplayer.h" @@ -64,6 +65,7 @@ EquipmentWindow::EquipmentWindow(Equipment *const equipment, mHighlightColor(getThemeColor(Theme::HIGHLIGHT)), mBorderColor(getThemeColor(Theme::BORDER)), mLabelsColor(getThemeColor(Theme::LABEL)), + mVertexes(new ImageCollection), mItemPadding(getOption("itemPadding")), mBoxSize(getOption("boxSize")), mMinX(180), @@ -145,21 +147,48 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) // Draw window graphics Window::draw(graphics); Graphics *const 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) + if (openGLMode != 2) { - const EquipmentBox *const box = *it; - if (!box) - continue; - if (i == mSelected) - g->drawImage(mSlotHighlightedBackground, box->x, box->y); - else - g->drawImage(mSlotBackground, box->x, box->y); + if (mLastRedraw) + { + mVertexes->clear(); + for (std::vector<EquipmentBox*>::const_iterator + it = mBoxes.begin(), it_end = mBoxes.end(); + it != it_end; ++ it, ++ i) + { + const EquipmentBox *const box = *it; + if (!box) + continue; + if (i == mSelected) + { + g->calcTile(mVertexes, mSlotHighlightedBackground, + box->x, box->y); + } + else + { + g->calcTile(mVertexes, mSlotBackground, box->x, box->y); + } + } + } + g->drawTile(mVertexes); + } + else + { + for (std::vector<EquipmentBox*>::const_iterator it = mBoxes.begin(), + it_end = mBoxes.end(); it != it_end; ++ it, ++ i) + { + const EquipmentBox *const box = *it; + if (!box) + continue; + if (i == mSelected) + g->drawImage(mSlotHighlightedBackground, box->x, box->y); + else + g->drawImage(mSlotBackground, box->x, box->y); + } } if (!mEquipment) |