summaryrefslogtreecommitdiff
path: root/src/gui/ministatus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/ministatus.cpp')
-rw-r--r--src/gui/ministatus.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp
index cdefc391..90581f61 100644
--- a/src/gui/ministatus.cpp
+++ b/src/gui/ministatus.cpp
@@ -28,6 +28,7 @@
#include "gui/gui.h"
#include "gui/statuswindow.h"
+#include "gui/textpopup.h"
#include "gui/theme.h"
#include "gui/widgets/progressbar.h"
@@ -35,6 +36,7 @@
#include "net/net.h"
#include "net/playerhandler.h"
+#include "utils/gettext.h"
#include "utils/stringutils.h"
extern volatile int tick_time;
@@ -64,6 +66,11 @@ MiniStatusWindow::MiniStatusWindow():
mXpBar->getY() + mXpBar->getHeight());
setVisible((bool) config.getValue(getPopupName() + "Visible", true));
+
+ mTextPopup = new TextPopup();
+
+ addMouseListener(this);
+
update(StatusWindow::HP);
}
@@ -134,3 +141,46 @@ void MiniStatusWindow::logic()
if (mIcons[i])
mIcons[i]->update(tick_time * 10);
}
+
+void MiniStatusWindow::mouseMoved(gcn::MouseEvent &event)
+{
+ Popup::mouseMoved(event);
+
+ const int x = event.getX();
+ const int y = event.getY();
+
+ if (event.getSource() == mXpBar)
+ {
+ mTextPopup->show(x + getX(), y + getY(),
+ strprintf("%u/%u", player_node->getExp(),
+ player_node->getExpNeeded()),
+ strprintf("%s: %u", _("Need"),
+ player_node->getExpNeeded()
+ - player_node->getExp()));
+ }
+ else if (event.getSource() == mHpBar)
+ {
+ mTextPopup->show(x + getX(), y + getY(),
+ strprintf("%u/%u", player_node->getHp(),
+ player_node->getMaxHp()));
+ }
+ else if (event.getSource() == mMpBar)
+ {
+ mTextPopup->show(x + getX(), y + getY(),
+ strprintf("%u/%u", player_node->getMP(),
+ player_node->getMaxMP()));
+ }
+ else
+ {
+ mTextPopup->setVisible(false);
+ }
+}
+
+void MiniStatusWindow::mouseExited(gcn::MouseEvent &event)
+{
+ Popup::mouseExited(event);
+
+ mTextPopup->setVisible(false);
+}
+
+