00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "gui/ministatus.h"
00023
00024 #include "gui/gui.h"
00025 #include "gui/status.h"
00026
00027 #include "gui/widgets/progressbar.h"
00028
00029 #include "animatedsprite.h"
00030 #include "configuration.h"
00031 #include "graphics.h"
00032 #include "localplayer.h"
00033
00034 #include "utils/stringutils.h"
00035
00036 MiniStatusWindow::MiniStatusWindow():
00037 Popup("MiniStatus")
00038 {
00039 mHpBar = new ProgressBar(1.0f, 100, 20, 0, 171, 34);
00040 #ifdef EATHENA_SUPPORT
00041 mMpBar = new ProgressBar(1.0f, 100, 20, 26, 102, 230);
00042 mXpBar = new ProgressBar(1.0f, 100, 20, 143, 192, 211);
00043 #endif
00044
00045 mHpBar->setPosition(0, 3);
00046 #ifdef EATHENA_SUPPORT
00047 mMpBar->setPosition(mHpBar->getWidth() + 3, 3);
00048 mXpBar->setPosition(mMpBar->getX() + mMpBar->getWidth() + 3, 3);
00049 #endif
00050
00051 add(mHpBar);
00052 #ifdef EATHENA_SUPPORT
00053 add(mMpBar);
00054 add(mXpBar);
00055 #endif
00056
00057 #ifdef EATHENA_SUPPORT
00058 setContentSize(mXpBar->getX() + mXpBar->getWidth(),
00059 mXpBar->getY() + mXpBar->getHeight());
00060 #else
00061 setContentSize(mHpBar->getX() + mHpBar->getWidth(),
00062 mHpBar->getY() + mHpBar->getHeight());
00063 #endif
00064
00065 setVisible((bool) config.getValue(getPopupName() + "Visible", true));
00066 }
00067
00068 void MiniStatusWindow::setIcon(int index, AnimatedSprite *sprite)
00069 {
00070 if (index >= (int) mIcons.size())
00071 mIcons.resize(index + 1, NULL);
00072
00073 if (mIcons[index])
00074 delete mIcons[index];
00075
00076 mIcons[index] = sprite;
00077 }
00078
00079 void MiniStatusWindow::eraseIcon(int index)
00080 {
00081 mIcons.erase(mIcons.begin() + index);
00082 }
00083
00084 extern volatile int tick_time;
00085
00086 void MiniStatusWindow::update()
00087 {
00088 StatusWindow::updateHPBar(mHpBar);
00089 #ifdef EATHENA_SUPPORT
00090 StatusWindow::updateMPBar(mMpBar);
00091 StatusWindow::updateXPBar(mXpBar);
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105 #endif
00106
00107 for (unsigned int i = 0; i < mIcons.size(); i++)
00108 if (mIcons[i])
00109 mIcons[i]->update(tick_time * 10);
00110 }
00111
00112 void MiniStatusWindow::draw(gcn::Graphics *graphics)
00113 {
00114 update();
00115 drawChildren(graphics);
00116 }
00117
00118 void MiniStatusWindow::drawIcons(Graphics *graphics)
00119 {
00120
00121 #ifdef TMWSERV_SUPPORT
00122 int icon_x = mHpBar->getX() + mHpBar->getWidth() + 4;
00123 #else
00124 int icon_x = mXpBar->getX() + mXpBar->getWidth() + 4;
00125 #endif
00126 for (unsigned int i = 0; i < mIcons.size(); i++) {
00127 if (mIcons[i]) {
00128 mIcons[i]->draw(graphics, icon_x, 3);
00129 icon_x += 2 + mIcons[i]->getWidth();
00130 }
00131 }
00132 }