diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-03-25 18:59:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-03-25 18:59:19 +0300 |
commit | 0146f872a63571027512cfaa9bc0433eb7e86430 (patch) | |
tree | e4fa8be656325483378d2aacf3ac5908afbd0b97 /src/gui/windows/skilldialog.cpp | |
parent | c7d6fb280271feb57022542f72584fbbbcfb2bc8 (diff) | |
download | manaverse-0146f872a63571027512cfaa9bc0433eb7e86430.tar.gz manaverse-0146f872a63571027512cfaa9bc0433eb7e86430.tar.bz2 manaverse-0146f872a63571027512cfaa9bc0433eb7e86430.tar.xz manaverse-0146f872a63571027512cfaa9bc0433eb7e86430.zip |
Add particle effect for removing skill. (hercules).
Diffstat (limited to 'src/gui/windows/skilldialog.cpp')
-rw-r--r-- | src/gui/windows/skilldialog.cpp | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp index 2804b8734..fb82633fe 100644 --- a/src/gui/windows/skilldialog.cpp +++ b/src/gui/windows/skilldialog.cpp @@ -368,6 +368,8 @@ void SkillDialog::loadXmlFile(const std::string &fileName) node, "invokeCmd", ""); data->updateEffectId = XML::getProperty( node, "levelUpEffectId", -1); + data->removeEffectId = XML::getProperty( + node, "removeEffectId", -1); skill->addData(level, data); } @@ -576,27 +578,46 @@ void SkillDialog::updateQuest(const int var, const int val) } } -void SkillDialog::playUpdateEffect(const int id) const +SkillData *SkillDialog::getSkillData(const int id) const { - if (!effectManager) - return; const SkillMap::const_iterator it = mSkills.find(id); if (it != mSkills.end()) { SkillInfo *const info = it->second; if (info) - { - const SkillData *const data = info->data; - if (!data) - return; - int effectId = data->updateEffectId; - if (effectId == -1) - effectId = paths.getIntValue("skillLevelUpEffectId"); - if (effectId == -1) - return; - effectManager->trigger(effectId, localPlayer); - } + return info->data; } + return nullptr; +} + +void SkillDialog::triggerEffect(int effectId, + const int defaultEffectId) const +{ + if (!effectManager) + return; + if (effectId == -1) + effectId = defaultEffectId; + if (effectId == -1) + return; + effectManager->trigger(effectId, localPlayer); +} + +void SkillDialog::playUpdateEffect(const int id) const +{ + const SkillData *const data = getSkillData(id); + if (!data) + return; + triggerEffect(data->updateEffectId, + paths.getIntValue("skillLevelUpEffectId")); +} + +void SkillDialog::playRemoveEffect(const int id) const +{ + const SkillData *const data = getSkillData(id); + if (!data) + return; + triggerEffect(data->removeEffectId, + paths.getIntValue("skillRemoveEffectId")); } void SkillDialog::useSkill(const SkillInfo *const info) |