diff options
-rw-r--r-- | src/Makefile.am | 1 | ||||
-rw-r--r-- | src/gui/stats.cpp | 87 | ||||
-rw-r--r-- | src/gui/stats.h | 44 |
3 files changed, 132 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 482168c6..052050fc 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -24,6 +24,7 @@ tmw_SOURCES = sound/sound.cpp \ gui/skill.cpp \ gui/slider.cpp \ gui/status.cpp \ + gui/stats.cpp \ gui/textfield.cpp \ gui/window.cpp \ net/network.cpp \ diff --git a/src/gui/stats.cpp b/src/gui/stats.cpp new file mode 100644 index 00000000..3a1a206f --- /dev/null +++ b/src/gui/stats.cpp @@ -0,0 +1,87 @@ +#include "stats_window.h" + +/* + * Constructor + */ +StatsWindow::StatsWindow(gcn::Container *parent) + : Window(parent, "Stats") +{ + stats_str[0] << "Strenght: " << char_info->STR; + stats_str[1] << "Agility: " << char_info->AGI; + stats_str[2] << "Vitality: " << char_info->VIT; + stats_str[3] << "Inteligence: " << char_info->INT; + stats_str[4] << "Dexternity: " << char_info->DEX; + stats_str[5] << "Luck: " << char_info->LUK; + + /* New labels */ + for(int i=0; i<5;i++) + statsLabel[i] = new gcn::Label(stats_str[i]); + + /* New buttons */ + for(i=0; i<5;i++) + statsButton[i] = new Button("+"); + + /* Set position */ + for(i=0;i<5;i++) { + statsLabel[i]->setPosition(10,(i*22)+10); + statsButton[i]->setPosition(170,(i*22)+10); + } + + /* Set button events Id */ + statsButton[0]->setEventId("STR"); + statsButton[1]->setEventId("AGI"); + statsButton[2]->setEventId("VIT"); + statsButton[3]->setEventId("INT"); + statsButton[4]->setEventId("DEX"); + statsButton[5]->setEventId("LUK"); + + /* Assemble */ + for(i=0; i<5; i++) { + add(statsLabel[i]); + add(statsButton[i]); + } + + setSize(200,150); + setLocationRelativeTo(getParent()); +} + +/* + * Destructor + */ +StatsWindow::~StatsWindow() { + for(int i=0; i<5; i++) { + delete statsStr[i]; + delete statsLabel[i]; + delete statsButton[i]; + } +} + +/* + * Static method for creating singleton objects + */ +StatsWindow * StatsWindow::ptr = NULL; +StatsWindow * StatsWindow::create_statswindow() { + if(ptr == NULL) + ptr = new StatsWindow(guiTop); + else + ptr->setVisible(true); + return ptr; +} + +/* + * Event handling method + */ +void StatsWindow::action(const std::string& eventId) { + if(eventId == "STR") + setVisible(false); + if(eventId == "AGI") + setVisible(false); + if(eventId == "VIT") + setVisible(false); + if(eventId == "INT") + setVisible(false); + if(eventId == "DEX") + setVisible(false); + if(eventId == "LUK") + setVisible(false); +} diff --git a/src/gui/stats.h b/src/gui/stats.h new file mode 100644 index 00000000..9f716ef4 --- /dev/null +++ b/src/gui/stats.h @@ -0,0 +1,44 @@ +#ifndef _STATS_WINDOW_H +#define _STATS_WINDOW_H + +#include "button.h" +#include "window.h" +#include "main.h" + +class StatsWindow : public Window, public gcn::ActionListener { + public: + /* + * Create the Stats window + */ + static StatsWindow *create_statswindow(); + + /* + * Metod called when receiving actions from widget. + */ + void action(const std::string& eventId); + + private: + /* Stats values */ + std::string statsStr[5]; + + /* Stats captions */ + gcn::Label *statsLabel[5]; + + /* Stats buttons */ + Button *statsButton[5]; + + /* Stats window ptr */ + static StatsWindow *ptr; + + /* + * Constructor. + */ + StatsWindow(gcn::Container *parent); + + /* + * Destructor. + */ + virtual ~StatsWindow(); +}; + +#endif /* _STATS_Window_H */ |