summaryrefslogtreecommitdiff
path: root/src/gui/equipmentwindow.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-12-01 20:29:04 +0300
committerAndrei Karas <akaras@inbox.ru>2012-12-01 22:58:18 +0300
commit96007521ba20250db0ed05e4d6117077690637db (patch)
tree8731f51b493944dd537532db568d80f3f8d8b927 /src/gui/equipmentwindow.cpp
parentd418537e26ec75bc656518dab293ff6313998682 (diff)
downloadplus-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.cpp49
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)