mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-14 20:28:21 +00:00
69 lines
1.4 KiB
C
69 lines
1.4 KiB
C
|
#ifndef __SYNCSKILL__H__
|
||
|
#define __SYNCSKILL__H__
|
||
|
|
||
|
#include <cstdint>
|
||
|
#include <string>
|
||
|
|
||
|
#include "BitStream.h"
|
||
|
|
||
|
/* Message to synchronize a skill cast */
|
||
|
class SyncSkill {
|
||
|
static const GAME_MSG MsgID = GAME_MSG_SYNC_SKILL;
|
||
|
|
||
|
public:
|
||
|
SyncSkill() {
|
||
|
bDone = false;
|
||
|
}
|
||
|
|
||
|
SyncSkill(std::string _sBitStream, uint32_t _uiBehaviorHandle, uint32_t _uiSkillHandle, bool _bDone = false) {
|
||
|
bDone = _bDone;
|
||
|
sBitStream = _sBitStream;
|
||
|
uiBehaviorHandle = _uiBehaviorHandle;
|
||
|
uiSkillHandle = _uiSkillHandle;
|
||
|
}
|
||
|
|
||
|
SyncSkill(RakNet::BitStream* stream) : SyncSkill() {
|
||
|
Deserialize(stream);
|
||
|
}
|
||
|
|
||
|
~SyncSkill() {
|
||
|
}
|
||
|
|
||
|
void Serialize(RakNet::BitStream* stream) {
|
||
|
stream->Write(MsgID);
|
||
|
|
||
|
stream->Write(bDone);
|
||
|
uint32_t sBitStreamLength = sBitStream.length();
|
||
|
stream->Write(sBitStreamLength);
|
||
|
for (unsigned int k = 0; k < sBitStreamLength; k++) {
|
||
|
stream->Write(sBitStream[k]);
|
||
|
}
|
||
|
|
||
|
stream->Write(uiBehaviorHandle);
|
||
|
stream->Write(uiSkillHandle);
|
||
|
}
|
||
|
|
||
|
bool Deserialize(RakNet::BitStream* stream) {
|
||
|
stream->Read(bDone);
|
||
|
uint32_t sBitStreamLength{};
|
||
|
stream->Read(sBitStreamLength);
|
||
|
for (uint32_t k = 0; k < sBitStreamLength; k++) {
|
||
|
unsigned char character;
|
||
|
stream->Read(character);
|
||
|
sBitStream.push_back(character);
|
||
|
}
|
||
|
|
||
|
stream->Read(uiBehaviorHandle);
|
||
|
stream->Read(uiSkillHandle);
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool bDone{};
|
||
|
std::string sBitStream{};
|
||
|
uint32_t uiBehaviorHandle{};
|
||
|
uint32_t uiSkillHandle{};
|
||
|
};
|
||
|
|
||
|
#endif //!__SYNCSKILL__H__
|