summaryrefslogtreecommitdiff
path: root/src/gui/widgets/skilllistbox.h
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-09-18 18:10:34 +0300
committerAndrei Karas <akaras@inbox.ru>2014-09-18 18:12:01 +0300
commitcc16bd52b4bfd5b542deddfcb131f0a1ca15b2e0 (patch)
treeedb2a4a75e478cefd282909d1708dfc2d04816a5 /src/gui/widgets/skilllistbox.h
parent9d18345d84b0c294b0fe7743cb263259f8cc9447 (diff)
downloadmv-cc16bd52b4bfd5b542deddfcb131f0a1ca15b2e0.tar.gz
mv-cc16bd52b4bfd5b542deddfcb131f0a1ca15b2e0.tar.bz2
mv-cc16bd52b4bfd5b542deddfcb131f0a1ca15b2e0.tar.xz
mv-cc16bd52b4bfd5b542deddfcb131f0a1ca15b2e0.zip
Draw cool down bar in skills window.
Diffstat (limited to 'src/gui/widgets/skilllistbox.h')
-rw-r--r--src/gui/widgets/skilllistbox.h39
1 files changed, 30 insertions, 9 deletions
diff --git a/src/gui/widgets/skilllistbox.h b/src/gui/widgets/skilllistbox.h
index 5ae389d83..d92758849 100644
--- a/src/gui/widgets/skilllistbox.h
+++ b/src/gui/widgets/skilllistbox.h
@@ -58,6 +58,7 @@ class SkillListBox final : public ListBox
mPopup(new SkillPopup),
mTextColor(getThemeColor(Theme::TEXT)),
mTextColor2(getThemeColor(Theme::TEXT_OUTLINE)),
+ mCooldownColor(getThemeColor(Theme::SKILL_COOLDOWN)),
mTextPadding(mSkin ? mSkin->getOption("textPadding", 34) : 34),
mSpacing(mSkin ? mSkin->getOption("spacing", 0) : 0),
mSkillClicked(false)
@@ -101,20 +102,40 @@ class SkillListBox final : public ListBox
mHighlightColor.a = static_cast<int>(mAlpha * 255.0F);
graphics->setColor(mHighlightColor);
+ const int width1 = getWidth();
+ const int usableWidth = width1 - 2 * mPadding;
+
// Draw filled rectangle around the selected list element
if (mSelected >= 0)
{
graphics->fillRectangle(Rect(mPadding, getRowHeight()
- * mSelected + mPadding, getWidth() - 2 * mPadding,
+ * mSelected + mPadding, usableWidth,
getRowHeight()));
}
// Draw the list elements
- graphics->setColorAll(mTextColor, mTextColor2);
Font *const font = getFont();
const int space = font->getHeight() + mSpacing;
- const int width2 = getWidth() - mPadding;
- for (int i = 0, y = 1;
+ const int width2 = width1 - mPadding;
+
+ graphics->setColor(mCooldownColor);
+ for (int i = 0, y = 1 + mPadding;
+ i < model->getNumberOfElements();
+ ++i, y += getRowHeight())
+ {
+ SkillInfo *const e = model->getSkillAt(i);
+ if (e)
+ {
+ if (e->cooldown)
+ {
+ graphics->fillRectangle(Rect(mPadding, y,
+ usableWidth * 100 / e->cooldown, 10));
+ }
+ }
+ }
+
+ graphics->setColorAll(mTextColor, mTextColor2);
+ for (int i = 0, y = 1 + mPadding;
i < model->getNumberOfElements();
++i, y += getRowHeight())
{
@@ -122,14 +143,13 @@ class SkillListBox final : public ListBox
if (e)
{
const SkillData *const data = e->data;
- const int yPad = y + mPadding;
const std::string &description = data->description;
- graphics->drawImage(data->icon, mPadding, yPad);
- font->drawString(graphics, data->name, mTextPadding, yPad);
+ graphics->drawImage(data->icon, mPadding, y);
+ font->drawString(graphics, data->name, mTextPadding, y);
if (!description.empty())
{
font->drawString(graphics, description,
- mTextPadding, yPad + space);
+ mTextPadding, y + space);
}
if (e->skillLevelWidth < 0)
@@ -139,7 +159,7 @@ class SkillListBox final : public ListBox
}
font->drawString(graphics, e->skillLevel, width2
- - e->skillLevelWidth, yPad);
+ - e->skillLevelWidth, y);
}
}
}
@@ -221,6 +241,7 @@ class SkillListBox final : public ListBox
SkillPopup *mPopup;
Color mTextColor;
Color mTextColor2;
+ Color mCooldownColor;
int mTextPadding;
int mSpacing;
bool mSkillClicked;