From 64fc4f0ccf6cfb25864e67e3f8cf29d4671c64d5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 18 Sep 2014 12:52:40 +0300 Subject: Add skills duration/cooldown. --- src/gui/widgets/skillinfo.cpp | 2 ++ src/gui/widgets/skillinfo.h | 2 ++ src/gui/windows/skilldialog.cpp | 15 +++++++++++++++ src/gui/windows/skilldialog.h | 2 ++ src/net/eathena/skillhandler.cpp | 7 ++++--- 5 files changed, 25 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/widgets/skillinfo.cpp b/src/gui/widgets/skillinfo.cpp index c3987eed0..feb4d7023 100644 --- a/src/gui/widgets/skillinfo.cpp +++ b/src/gui/widgets/skillinfo.cpp @@ -50,6 +50,8 @@ SkillInfo::SkillInfo() : id(0), range(0), sp(0), + duration(0), + durationTime(0), type(SkillType::Unknown), modifiable(false), visible(false) diff --git a/src/gui/widgets/skillinfo.h b/src/gui/widgets/skillinfo.h index f41bc46fc..fcca73dce 100644 --- a/src/gui/widgets/skillinfo.h +++ b/src/gui/widgets/skillinfo.h @@ -57,6 +57,8 @@ struct SkillInfo final unsigned int id; int range; int sp; + int duration; + int durationTime; SkillType::SkillType type; bool modifiable; bool visible; diff --git a/src/gui/windows/skilldialog.cpp b/src/gui/windows/skilldialog.cpp index 07a60b594..073cf11bd 100644 --- a/src/gui/windows/skilldialog.cpp +++ b/src/gui/windows/skilldialog.cpp @@ -48,6 +48,7 @@ #include "utils/dtor.h" #include "utils/gettext.h" +#include "utils/timer.h" #include "resources/beingcommon.h" #include "resources/skillconsts.h" @@ -424,6 +425,20 @@ SkillInfo* SkillDialog::getSkillByItem(const int itemId) const return nullptr; } +void SkillDialog::setSkillDuration(const int id, const int duration) +{ + SkillMap::const_iterator it = mSkills.find(id); + if (it != mSkills.end()) + { + SkillInfo *const info = (*it).second; + if (info) + { + info->duration = duration / 10; + info->durationTime = tick_time; + } + } +} + void SkillDialog::widgetResized(const Event &event) { Window::widgetResized(event); diff --git a/src/gui/windows/skilldialog.h b/src/gui/windows/skilldialog.h index 17641cd0f..b01adcabd 100644 --- a/src/gui/windows/skilldialog.h +++ b/src/gui/windows/skilldialog.h @@ -95,6 +95,8 @@ class SkillDialog final : public Window, SkillInfo* getSkillByItem(const int itemId) const A_WARN_UNUSED; + void setSkillDuration(const int id, const int duration); + bool hasSkills() const A_WARN_UNUSED { return !mSkills.empty(); } diff --git a/src/net/eathena/skillhandler.cpp b/src/net/eathena/skillhandler.cpp index da8b94d11..640b6fbbc 100644 --- a/src/net/eathena/skillhandler.cpp +++ b/src/net/eathena/skillhandler.cpp @@ -149,9 +149,10 @@ void SkillHandler::processPlayerSkills(Net::MessageIn &msg) void SkillHandler::processSkillCoolDown(Net::MessageIn &msg) { - // +++ need add cool down bar in skills window and in ministatus? - msg.readInt16("skill id"); - msg.readInt32("duration"); + const int skillId = msg.readInt16("skill id"); + const int duration = msg.readInt32("duration"); + if (skillDialog) + skillDialog->setSkillDuration(skillId, duration); } } // namespace EAthena -- cgit v1.2.3-70-g09d2