summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/ministatus.cpp48
-rw-r--r--src/gui/ministatus.h1
-rw-r--r--src/gui/statuswindow.cpp10
-rw-r--r--src/gui/statuswindow.h1
4 files changed, 57 insertions, 3 deletions
diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp
index 406ad7ddd..f892cdc8b 100644
--- a/src/gui/ministatus.cpp
+++ b/src/gui/ministatus.cpp
@@ -67,22 +67,50 @@ MiniStatusWindow::MiniStatusWindow():
mMpBar = 0;
}
+ int job = Net::getPlayerHandler()->getJobLocation()
+ && serverConfig.getValueBool("showJob", false);
+
mXpBar = new ProgressBar(0, 100, 20, Theme::PROG_EXP);
StatusWindow::updateXPBar(mXpBar);
+ if (job)
+ {
+ mJobBar = new ProgressBar(0, 100, 20, Theme::PROG_JOB);
+ StatusWindow::updateJobBar(mJobBar);
+ }
+ else
+ {
+ mJobBar = 0;
+ }
+
mStatusBar = new ProgressBar(100, 150, 20, Theme::PROG_EXP);
mHpBar->setPosition(0, 3);
if (mMpBar)
+ {
mMpBar->setPosition(mHpBar->getWidth() + 3, 3);
- mXpBar->setPosition(mMpBar ? mMpBar->getX() + mMpBar->getWidth() + 3 :
- mHpBar->getX() + mHpBar->getWidth() + 3, 3);
- mStatusBar->setPosition(mXpBar->getX() + mXpBar->getWidth() + 3, 3);
+ mXpBar->setPosition(mMpBar->getX() + mMpBar->getWidth() + 3, 3);
+ }
+ else
+ {
+ mXpBar->setPosition(mHpBar->getX() + mHpBar->getWidth() + 3, 3);
+ }
+ if (mJobBar)
+ {
+ mJobBar->setPosition(mXpBar->getX() + mXpBar->getWidth() + 3, 3);
+ mStatusBar->setPosition(mJobBar->getX() + mJobBar->getWidth() + 3, 3);
+ }
+ else
+ {
+ mStatusBar->setPosition(mXpBar->getX() + mXpBar->getWidth() + 3, 3);
+ }
add(mHpBar);
if (mMpBar)
add(mMpBar);
add(mXpBar);
+ if (mJobBar)
+ add(mJobBar);
add(mStatusBar);
setContentSize(mStatusBar->getX() + mStatusBar->getWidth(),
@@ -150,6 +178,7 @@ void MiniStatusWindow::event(Channels channel _UNUSED_,
else if (event.getName() == EVENT_UPDATESTAT)
{
StatusWindow::updateMPBar(mMpBar);
+ StatusWindow::updateJobBar(mJobBar);
}
}
@@ -212,6 +241,19 @@ void MiniStatusWindow::mouseMoved(gcn::MouseEvent &event)
PlayerInfo::getAttribute(MAX_MP)));
mStatusPopup->hide();
}
+ else if (event.getSource() == mJobBar)
+ {
+ std::pair<int, int> exp = PlayerInfo::getStatExperience(
+ Net::getPlayerHandler()->getJobLocation());
+
+ mTextPopup->show(x + getX(), y + getY(),
+ strprintf("%u/%u", exp.first,
+ exp.second),
+ strprintf("%s: %u", _("Need"),
+ exp.second
+ - exp.first));
+ mStatusPopup->hide();
+ }
else
{
mTextPopup->hide();
diff --git a/src/gui/ministatus.h b/src/gui/ministatus.h
index 080beece3..d30a38a9e 100644
--- a/src/gui/ministatus.h
+++ b/src/gui/ministatus.h
@@ -82,6 +82,7 @@ class MiniStatusWindow : public Popup, public Mana::Listener
ProgressBar *mHpBar;
ProgressBar *mMpBar;
ProgressBar *mXpBar;
+ ProgressBar *mJobBar;
ProgressBar *mStatusBar;
TextPopup *mTextPopup;
StatusPopup *mStatusPopup;
diff --git a/src/gui/statuswindow.cpp b/src/gui/statuswindow.cpp
index 02436c179..853ea1789 100644
--- a/src/gui/statuswindow.cpp
+++ b/src/gui/statuswindow.cpp
@@ -469,6 +469,16 @@ void StatusWindow::updateXPBar(ProgressBar *bar, bool percent)
PlayerInfo::getAttribute(EXP_NEEDED), percent);
}
+void StatusWindow::updateJobBar(ProgressBar *bar, bool percent)
+{
+ if (!bar)
+ return;
+
+ std::pair<int, int> exp = PlayerInfo::getStatExperience(
+ Net::getPlayerHandler()->getJobLocation());
+ updateProgressBar(bar, exp.first, exp.second, percent);
+}
+
void StatusWindow::updateProgressBar(ProgressBar *bar, int id, bool percent)
{
std::pair<int, int> exp = PlayerInfo::getStatExperience(id);
diff --git a/src/gui/statuswindow.h b/src/gui/statuswindow.h
index 4b324073e..859ac613b 100644
--- a/src/gui/statuswindow.h
+++ b/src/gui/statuswindow.h
@@ -64,6 +64,7 @@ class StatusWindow : public Window, public Mana::Listener
static void updateHPBar(ProgressBar *bar, bool showMax = false);
static void updateMPBar(ProgressBar *bar, bool showMax = false);
+ static void updateJobBar(ProgressBar *bar, bool percent = true);
static void updateXPBar(ProgressBar *bar, bool percent = true);
static void updateStatusBar(ProgressBar *bar, bool percent = true);
static void updateProgressBar(ProgressBar *bar, int value, int max,