summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/skill.cpp22
-rw-r--r--src/gui/skill.h1
-rw-r--r--src/gui/stats.cpp12
3 files changed, 30 insertions, 5 deletions
diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp
index c342582f..8c22af55 100644
--- a/src/gui/skill.cpp
+++ b/src/gui/skill.cpp
@@ -55,7 +55,8 @@ char *skill_db[] = {
SkillDialog::SkillDialog():
- Window("Skills")
+ Window("Skills"),
+ skillPoints(0)
{
skillListBox = new ListBox(this);
skillScrollArea = new ScrollArea(skillListBox);
@@ -63,6 +64,7 @@ SkillDialog::SkillDialog():
incButton = new Button(" Up ");
closeButton = new Button("Close");
+ skillListBox->setEventId("skill");
incButton->setEventId("inc");
closeButton->setEventId("close");
@@ -77,6 +79,7 @@ SkillDialog::SkillDialog():
add(incButton);
add(closeButton);
+ skillListBox->addActionListener(this);
incButton->addActionListener(this);
closeButton->addActionListener(this);
@@ -106,13 +109,20 @@ void SkillDialog::action(const std::string& eventId)
int selectedSkill = skillListBox->getSelected();
std::cout << "SkillDialog::action(" << selectedSkill << ")\n";
if (char_info->skill_point > 0 && selectedSkill >= 0) {
- std::cout << "Sending upgrade of id " << skillList[selectedSkill]->id << "\n";
+ std::cout << "Sending upgrade of id " <<
+ skillList[selectedSkill]->id << "\n";
WFIFOW(0) = net_w_value(0x0112);
WFIFOW(2) = net_w_value(
skillList[selectedSkill]->id);
WFIFOSET(4);
}
}
+ else if (eventId == "skill")
+ {
+ incButton->setEnabled(
+ skillListBox->getSelected() > -1 &&
+ skillPoints > 0);
+ }
else if (eventId == "close")
{
setVisible(false);
@@ -121,11 +131,15 @@ void SkillDialog::action(const std::string& eventId)
void SkillDialog::setPoints(int i)
{
- char tmp[128];
- sprintf(tmp, "Skill points: %i", i);
+ skillPoints = i;
+
if (pointsLabel != NULL) {
+ char tmp[128];
+ sprintf(tmp, "Skill points: %i", skillPoints);
pointsLabel->setCaption(tmp);
}
+
+ incButton->setEnabled(skillListBox->getSelected() > -1 && skillPoints > 0);
}
int SkillDialog::getNumberOfElements()
diff --git a/src/gui/skill.h b/src/gui/skill.h
index 5db90f04..c27f5ad2 100644
--- a/src/gui/skill.h
+++ b/src/gui/skill.h
@@ -48,6 +48,7 @@ class SkillDialog : public Window, public gcn::ActionListener,
gcn::Button *closeButton;
std::vector<SKILL*> skillList;
+ int skillPoints;
public:
/**
diff --git a/src/gui/stats.cpp b/src/gui/stats.cpp
index 655e217a..9b134876 100644
--- a/src/gui/stats.cpp
+++ b/src/gui/stats.cpp
@@ -94,7 +94,9 @@ void StatsWindow::update(){
statsStr[5] << "Luck:";
figureStr[5] << (int)char_info->LUK;
- remainingStatsPointsStr << "Remaining Status Points : " << char_info->statsPointsToAttribute;
+ int statusPoints = char_info->statsPointsToAttribute;
+
+ remainingStatsPointsStr << "Remaining Status Points: " << statusPoints;
pointsStr[0] << (int)char_info->STRUp;
pointsStr[1] << (int)char_info->AGIUp;
@@ -103,6 +105,14 @@ void StatsWindow::update(){
pointsStr[4] << (int)char_info->DEXUp;
pointsStr[5] << (int)char_info->LUKUp;
+ // Enable buttons for which there are enough status points
+ statsButton[0]->setEnabled(char_info->STRUp <= statusPoints);
+ statsButton[1]->setEnabled(char_info->AGIUp <= statusPoints);
+ statsButton[2]->setEnabled(char_info->VITUp <= statusPoints);
+ statsButton[3]->setEnabled(char_info->INTUp <= statusPoints);
+ statsButton[4]->setEnabled(char_info->DEXUp <= statusPoints);
+ statsButton[5]->setEnabled(char_info->LUKUp <= statusPoints);
+
// Update labels
for (i = 0; i < 6; i++) {
statsLabel[i]->setCaption(statsStr[i].str());