diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/net/ea/skillhandler.cpp | 30 | ||||
-rw-r--r-- | src/net/ea/skillhandler.h | 2 | ||||
-rw-r--r-- | src/net/eathena/skillhandler.cpp | 34 | ||||
-rw-r--r-- | src/net/eathena/skillhandler.h | 3 | ||||
-rw-r--r-- | src/net/tmwa/skillhandler.cpp | 34 | ||||
-rw-r--r-- | src/net/tmwa/skillhandler.h | 3 |
6 files changed, 74 insertions, 32 deletions
diff --git a/src/net/ea/skillhandler.cpp b/src/net/ea/skillhandler.cpp index 59e8f75e8..ecf98952a 100644 --- a/src/net/ea/skillhandler.cpp +++ b/src/net/ea/skillhandler.cpp @@ -75,36 +75,6 @@ SkillHandler::SkillHandler() { } -void SkillHandler::processPlayerSkills(Net::MessageIn &msg) -{ - msg.readInt16(); // length - const int skillCount = (msg.getLength() - 4) / 37; - int updateSkill = 0; - - for (int k = 0; k < skillCount; k++) - { - const int skillId = msg.readInt16(); - msg.readInt16(); // target type - msg.skip(2); // skill pool flags - const int level = msg.readInt16(); - msg.readInt16(); // sp - const int range = msg.readInt16(); - msg.skip(24); // 0 unused - const int up = msg.readUInt8(); - const int oldLevel = PlayerInfo::getSkillLevel(skillId); - if (oldLevel && oldLevel != level) - updateSkill = skillId; - PlayerInfo::setSkillLevel(skillId, level); - if (skillDialog) - { - if (!skillDialog->updateSkill(skillId, range, up)) - skillDialog->addSkill(skillId, level, range, up); - } - } - if (updateSkill && skillDialog) - skillDialog->playUpdateEffect(updateSkill); -} - void SkillHandler::processPlayerSkillUp(Net::MessageIn &msg) { const int skillId = msg.readInt16(); diff --git a/src/net/ea/skillhandler.h b/src/net/ea/skillhandler.h index 37ce90cbb..2ee2a11fc 100644 --- a/src/net/ea/skillhandler.h +++ b/src/net/ea/skillhandler.h @@ -42,8 +42,6 @@ class SkillHandler notfinal : public Net::SkillHandler A_DELETE_COPY(SkillHandler) - static void processPlayerSkills(Net::MessageIn &msg); - static void processPlayerSkillUp(Net::MessageIn &msg); static void processSkillFailed(Net::MessageIn &msg); diff --git a/src/net/eathena/skillhandler.cpp b/src/net/eathena/skillhandler.cpp index 34b44e9f1..673bcd136 100644 --- a/src/net/eathena/skillhandler.cpp +++ b/src/net/eathena/skillhandler.cpp @@ -22,6 +22,10 @@ #include "net/eathena/skillhandler.h" +#include "being/playerinfo.h" + +#include "gui/windows/skilldialog.h" + #include "net/eathena/messageout.h" #include "net/eathena/protocol.h" @@ -94,4 +98,34 @@ void SkillHandler::useMap(const int id, const std::string &map) const outMsg.writeString(map, 16); } +void SkillHandler::processPlayerSkills(Net::MessageIn &msg) +{ + msg.readInt16(); // length + const int skillCount = (msg.getLength() - 4) / 37; + int updateSkill = 0; + + for (int k = 0; k < skillCount; k++) + { + const int skillId = msg.readInt16(); + msg.readInt16(); // target type + msg.skip(2); // skill pool flags + const int level = msg.readInt16(); + msg.readInt16(); // sp + const int range = msg.readInt16(); + msg.skip(24); // 0 unused + const int up = msg.readUInt8(); + const int oldLevel = PlayerInfo::getSkillLevel(skillId); + if (oldLevel && oldLevel != level) + updateSkill = skillId; + PlayerInfo::setSkillLevel(skillId, level); + if (skillDialog) + { + if (!skillDialog->updateSkill(skillId, range, up)) + skillDialog->addSkill(skillId, level, range, up); + } + } + if (updateSkill && skillDialog) + skillDialog->playUpdateEffect(updateSkill); +} + } // namespace EAthena diff --git a/src/net/eathena/skillhandler.h b/src/net/eathena/skillhandler.h index 3b63bcfc5..c33971245 100644 --- a/src/net/eathena/skillhandler.h +++ b/src/net/eathena/skillhandler.h @@ -46,6 +46,9 @@ class SkillHandler final : public MessageHandler, public Ea::SkillHandler const int x, const int y) const override final; void useMap(const int id, const std::string &map) const override final; + + protected: + void processPlayerSkills(Net::MessageIn &msg); }; } // namespace EAthena diff --git a/src/net/tmwa/skillhandler.cpp b/src/net/tmwa/skillhandler.cpp index 19953e051..33e06cd3c 100644 --- a/src/net/tmwa/skillhandler.cpp +++ b/src/net/tmwa/skillhandler.cpp @@ -22,6 +22,10 @@ #include "net/tmwa/skillhandler.h" +#include "being/playerinfo.h" + +#include "gui/windows/skilldialog.h" + #include "net/tmwa/messageout.h" #include "net/tmwa/protocol.h" @@ -96,4 +100,34 @@ void SkillHandler::useMap(const int id, const std::string &map) const outMsg.writeString(map, 16); } +void SkillHandler::processPlayerSkills(Net::MessageIn &msg) +{ + msg.readInt16(); // length + const int skillCount = (msg.getLength() - 4) / 37; + int updateSkill = 0; + + for (int k = 0; k < skillCount; k++) + { + const int skillId = msg.readInt16(); + msg.readInt16(); // target type + msg.skip(2); // skill pool flags + const int level = msg.readInt16(); + msg.readInt16(); // sp + const int range = msg.readInt16(); + msg.skip(24); // 0 unused + const int up = msg.readUInt8(); + const int oldLevel = PlayerInfo::getSkillLevel(skillId); + if (oldLevel && oldLevel != level) + updateSkill = skillId; + PlayerInfo::setSkillLevel(skillId, level); + if (skillDialog) + { + if (!skillDialog->updateSkill(skillId, range, up)) + skillDialog->addSkill(skillId, level, range, up); + } + } + if (updateSkill && skillDialog) + skillDialog->playUpdateEffect(updateSkill); +} + } // namespace TmwAthena diff --git a/src/net/tmwa/skillhandler.h b/src/net/tmwa/skillhandler.h index d1c813f5e..a0be82c63 100644 --- a/src/net/tmwa/skillhandler.h +++ b/src/net/tmwa/skillhandler.h @@ -46,6 +46,9 @@ class SkillHandler final : public MessageHandler, public Ea::SkillHandler const int x, const int y) const override final; void useMap(const int id, const std::string &map) const override final; + + protected: + void processPlayerSkills(Net::MessageIn &msg); }; } // namespace TmwAthena |