// // Created by koncord on 01.04.17. // #ifndef OPENMW_PROCESSORPLAYERSKILL_HPP #define OPENMW_PROCESSORPLAYERSKILL_HPP #include "../PlayerProcessor.hpp" namespace mwmp { class ProcessorPlayerSkill final: public PlayerProcessor { using OldSState = ESM::StatState; public: ProcessorPlayerSkill() { BPP_INIT(ID_PLAYER_SKILL) Networking::get().getState().getState()->new_usertype("OldSState", "base", &OldSState::mBase, "current", &OldSState::mCurrent, "mod", &OldSState::mMod, "damage", &OldSState::mDamage, "progress", &OldSState::mProgress); } void PreReading(PlayerPacket &packet, const std::shared_ptr &player) override { if (!player->creatureStats.mDead) std::copy(std::begin(player->npcStats.mSkills), std::end(player->npcStats.mSkills), oldValues.begin() ); } void Do(PlayerPacket &packet, const std::shared_ptr &player) override { if (!player->creatureStats.mDead) { //myPacket->Send(player, true); Networking::get().getState().getEventCtrl().Call(&oldValues, player.get()); player->sendToLoaded(packet); } } private: std::array oldValues; }; } #endif //OPENMW_PROCESSORPLAYERSKILL_HPP