From 2db104b657d0403f1b8ce2eb2dc8ada4ee9d7f73 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 19 Jan 2011 17:16:42 +0200 Subject: Add unknown skills to first skill tab. (in tmw Basic). --- src/gui/skilldialog.cpp | 31 ++++++++++++++++++++++++++++++- src/gui/skilldialog.h | 6 +++++- 2 files changed, 35 insertions(+), 2 deletions(-) (limited to 'src/gui') diff --git a/src/gui/skilldialog.cpp b/src/gui/skilldialog.cpp index fa4d5bdb2..b80f4b335 100644 --- a/src/gui/skilldialog.cpp +++ b/src/gui/skilldialog.cpp @@ -236,6 +236,7 @@ SkillDialog::SkillDialog(): mTabs = new TabbedArea(); mPointsLabel = new Label("0"); mIncreaseButton = new Button(_("Up"), "inc", this); + mDefaultModel = 0; place(0, 0, mTabs, 5, 5); place(0, 5, mPointsLabel, 4); @@ -336,6 +337,9 @@ void SkillDialog::loadSkills(const std::string &file) if (Net::getNetworkType() == ServerInfo::TMWATHENA) { SkillModel *model = new SkillModel(); + if (!mDefaultModel) + mDefaultModel = model; + SkillInfo *skill = new SkillInfo; skill->id = 1; skill->name = "basic"; @@ -374,6 +378,8 @@ void SkillDialog::loadSkills(const std::string &file) strprintf(_("Skill Set %d"), setCount)); SkillModel *model = new SkillModel(); + if (!mDefaultModel) + mDefaultModel = model; for_each_xml_child_node(node, set) { @@ -416,7 +422,7 @@ void SkillDialog::loadSkills(const std::string &file) update(); } -void SkillDialog::setModifiable(int id, bool modifiable) +bool SkillDialog::setModifiable(int id, bool modifiable) { SkillMap::iterator it = mSkills.find(id); @@ -428,6 +434,29 @@ void SkillDialog::setModifiable(int id, bool modifiable) info->modifiable = modifiable; info->update(); } + return true; + } + return false; +} + +void SkillDialog::addSkill(int id, int level, bool modifiable) +{ + if (mDefaultModel) + { + SkillInfo *skill = new SkillInfo; + skill->id = static_cast(id); + skill->name = "Unknown skill Id: " + toString(id); + skill->setIcon(""); + skill->modifiable = modifiable; + skill->visible = false; + skill->model = mDefaultModel; + skill->skillLevel = level; + skill->update(); + + mDefaultModel->addSkill(skill); + + mSkills[id] = skill; + mDefaultModel->updateVisibilities(); } } diff --git a/src/gui/skilldialog.h b/src/gui/skilldialog.h index 4ba4afe8e..188cf76d5 100644 --- a/src/gui/skilldialog.h +++ b/src/gui/skilldialog.h @@ -37,6 +37,7 @@ class Button; //class Image; class Label; class ScrollArea; +class SkillModel; class Tab; class TabbedArea; @@ -71,7 +72,9 @@ class SkillDialog : public Window, public gcn::ActionListener void loadSkills(const std::string &file); - void setModifiable(int id, bool modifiable); + bool setModifiable(int id, bool modifiable); + + void addSkill(int id, int level, bool modifiable); SkillInfo* getSkill(int id); @@ -84,6 +87,7 @@ class SkillDialog : public Window, public gcn::ActionListener TabbedArea *mTabs; Label *mPointsLabel; Button *mIncreaseButton; + SkillModel *mDefaultModel; }; extern SkillDialog *skillDialog; -- cgit v1.2.3-60-g2f50