aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp437
-rwxr-xr-xsrc/server/game/Entities/Object/Object.h56
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp6
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp304
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp43
-rwxr-xr-xsrc/server/game/Handlers/GroupHandler.cpp40
-rwxr-xr-xsrc/server/game/Handlers/GuildHandler.cpp16
-rwxr-xr-xsrc/server/game/Handlers/ItemHandler.cpp32
-rwxr-xr-xsrc/server/game/Handlers/MiscHandler.cpp47
-rwxr-xr-xsrc/server/game/Handlers/MovementHandler.cpp37
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rwxr-xr-xsrc/server/game/Server/WorldSession.h6
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.cpp9
-rw-r--r--src/server/shared/Packets/ByteBuffer.cpp85
-rwxr-xr-xsrc/server/shared/Packets/ByteBuffer.h198
15 files changed, 537 insertions, 781 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index dafcd88433f..34b38ff1d35 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -426,28 +426,27 @@ void AchievementMgr<Guild>::RemoveCriteriaProgress(const AchievementCriteriaEntr
if (criteriaProgress == m_criteriaProgress.end())
return;
- uint8 guidBytes[8];
- *reinterpret_cast<uint64*>(&guidBytes[0]) = GetOwner()->GetGUID();
+ ObjectGuid guid = GetOwner()->GetGUID();
WorldPacket data(SMSG_GUILD_CRITERIA_DELETED, 4 + 8);
- data.WriteBit(guidBytes[6]);
- data.WriteBit(guidBytes[5]);
- data.WriteBit(guidBytes[7]);
- data.WriteBit(guidBytes[0]);
- data.WriteBit(guidBytes[1]);
- data.WriteBit(guidBytes[3]);
- data.WriteBit(guidBytes[2]);
- data.WriteBit(guidBytes[4]);
-
- data.WriteByteSeq(guidBytes[2]);
- data.WriteByteSeq(guidBytes[3]);
- data.WriteByteSeq(guidBytes[4]);
- data.WriteByteSeq(guidBytes[1]);
- data.WriteByteSeq(guidBytes[7]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(guid[5]);
+ data.WriteBit(guid[7]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(guid[1]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(guid[4]);
+
+ data.WriteByteSeq(guid[2]);
+ data.WriteByteSeq(guid[3]);
+ data.WriteByteSeq(guid[4]);
+ data.WriteByteSeq(guid[1]);
+ data.WriteByteSeq(guid[7]);
data << uint32(entry->ID);
- data.WriteByteSeq(guidBytes[5]);
- data.WriteByteSeq(guidBytes[0]);
- data.WriteByteSeq(guidBytes[6]);
+ data.WriteByteSeq(guid[5]);
+ data.WriteByteSeq(guid[0]);
+ data.WriteByteSeq(guid[6]);
SendPacket(&data);
@@ -844,30 +843,28 @@ void AchievementMgr<T>::Reset()
template<>
void AchievementMgr<Guild>::Reset()
{
- uint8 guidBytes[8];
- *reinterpret_cast<uint64*>(&guidBytes[0]) = GetOwner()->GetGUID();
-
+ ObjectGuid guid = GetOwner()->GetGUID();
for (CompletedAchievementMap::const_iterator iter = m_completedAchievements.begin(); iter != m_completedAchievements.end(); ++iter)
{
WorldPacket data(SMSG_GUILD_ACHIEVEMENT_DELETED, 4);
- data.WriteBit(guidBytes[4]);
- data.WriteBit(guidBytes[1]);
- data.WriteBit(guidBytes[2]);
- data.WriteBit(guidBytes[3]);
- data.WriteBit(guidBytes[0]);
- data.WriteBit(guidBytes[7]);
- data.WriteBit(guidBytes[5]);
- data.WriteBit(guidBytes[6]);
+ data.WriteBit(guid[4]);
+ data.WriteBit(guid[1]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(guid[7]);
+ data.WriteBit(guid[5]);
+ data.WriteBit(guid[6]);
data << uint32(iter->first);
- data.WriteByteSeq(guidBytes[5]);
- data.WriteByteSeq(guidBytes[1]);
- data.WriteByteSeq(guidBytes[3]);
- data.WriteByteSeq(guidBytes[6]);
- data.WriteByteSeq(guidBytes[0]);
- data.WriteByteSeq(guidBytes[7]);
+ data.WriteByteSeq(guid[5]);
+ data.WriteByteSeq(guid[1]);
+ data.WriteByteSeq(guid[3]);
+ data.WriteByteSeq(guid[6]);
+ data.WriteByteSeq(guid[0]);
+ data.WriteByteSeq(guid[7]);
data << uint32(secsToTimeBitFields(iter->second.date));
- data.WriteByteSeq(guidBytes[4]);
- data.WriteByteSeq(guidBytes[2]);
+ data.WriteByteSeq(guid[4]);
+ data.WriteByteSeq(guid[2]);
SendPacket(&data);
}
@@ -936,29 +933,28 @@ void AchievementMgr<T>::SendAchievementEarned(AchievementEntry const* achievemen
template<>
void AchievementMgr<Guild>::SendAchievementEarned(AchievementEntry const* achievement) const
{
- uint8 guidBytes[8];
- *reinterpret_cast<uint64*>(&guidBytes[0]) = GetOwner()->GetGUID();
+ ObjectGuid guid = GetOwner()->GetGUID();
WorldPacket data(SMSG_GUILD_ACHIEVEMENT_EARNED, 8+4+8);
- data.WriteByteMask(guidBytes[3]);
- data.WriteByteMask(guidBytes[1]);
- data.WriteByteMask(guidBytes[0]);
- data.WriteByteMask(guidBytes[7]);
- data.WriteByteMask(guidBytes[4]);
- data.WriteByteMask(guidBytes[6]);
- data.WriteByteMask(guidBytes[2]);
- data.WriteByteMask(guidBytes[5]);
-
- data.WriteByteSeq(guidBytes[2]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(guid[1]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(guid[7]);
+ data.WriteBit(guid[4]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(guid[5]);
+
+ data.WriteByteSeq(guid[2]);
data << uint32(secsToTimeBitFields(time(NULL)));
- data.WriteByteSeq(guidBytes[0]);
- data.WriteByteSeq(guidBytes[4]);
- data.WriteByteSeq(guidBytes[1]);
- data.WriteByteSeq(guidBytes[3]);
+ data.WriteByteSeq(guid[0]);
+ data.WriteByteSeq(guid[4]);
+ data.WriteByteSeq(guid[1]);
+ data.WriteByteSeq(guid[3]);
data << uint32(achievement->ID);
- data.WriteByteSeq(guidBytes[7]);
- data.WriteByteSeq(guidBytes[5]);
- data.WriteByteSeq(guidBytes[6]);
+ data.WriteByteSeq(guid[7]);
+ data.WriteByteSeq(guid[5]);
+ data.WriteByteSeq(guid[6]);
SendPacket(&data);
}
@@ -994,50 +990,48 @@ void AchievementMgr<Guild>::SendCriteriaUpdate(AchievementCriteriaEntry const* e
//will send response to criteria progress request
WorldPacket data(SMSG_GUILD_CRITERIA_DATA, 3 + 1 + 1 + 8 + 8 + 4 + 4 + 4 + 4 + 4);
- uint8 criteriaProgress[8];
- uint8 criteriaGuid[8];
- *reinterpret_cast<uint64*>(&criteriaProgress[0]) = progress->counter;
- *reinterpret_cast<uint64*>(&criteriaGuid[0]) = progress->CompletedGUID;
+ ObjectGuid counter = progress->counter; // for accessing every byte individually
+ ObjectGuid guid = progress->CompletedGUID;
data.WriteBits(1, 21);
- data.WriteBit(criteriaProgress[4]);
- data.WriteBit(criteriaProgress[1]);
- data.WriteBit(criteriaGuid[2]);
- data.WriteBit(criteriaProgress[3]);
- data.WriteBit(criteriaGuid[1]);
- data.WriteBit(criteriaProgress[5]);
- data.WriteBit(criteriaProgress[0]);
- data.WriteBit(criteriaGuid[3]);
- data.WriteBit(criteriaProgress[2]);
- data.WriteBit(criteriaGuid[7]);
- data.WriteBit(criteriaGuid[5]);
- data.WriteBit(criteriaGuid[0]);
- data.WriteBit(criteriaProgress[6]);
- data.WriteBit(criteriaGuid[6]);
- data.WriteBit(criteriaProgress[7]);
- data.WriteBit(criteriaGuid[4]);
-
- data.WriteByteSeq(criteriaGuid[5]);
+ data.WriteBit(counter[4]);
+ data.WriteBit(counter[1]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(counter[3]);
+ data.WriteBit(guid[1]);
+ data.WriteBit(counter[5]);
+ data.WriteBit(counter[0]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(counter[2]);
+ data.WriteBit(guid[7]);
+ data.WriteBit(guid[5]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(counter[6]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(counter[7]);
+ data.WriteBit(guid[4]);
+
+ data.WriteByteSeq(guid[5]);
data << uint32(progress->date); // unknown date
- data.WriteByteSeq(criteriaProgress[3]);
- data.WriteByteSeq(criteriaProgress[7]);
+ data.WriteByteSeq(counter[3]);
+ data.WriteByteSeq(counter[7]);
data << uint32(progress->date); // unknown date
- data.WriteByteSeq(criteriaProgress[6]);
- data.WriteByteSeq(criteriaGuid[4]);
- data.WriteByteSeq(criteriaGuid[1]);
- data.WriteByteSeq(criteriaProgress[4]);
- data.WriteByteSeq(criteriaGuid[3]);
- data.WriteByteSeq(criteriaProgress[0]);
- data.WriteByteSeq(criteriaGuid[2]);
- data.WriteByteSeq(criteriaProgress[1]);
- data.WriteByteSeq(criteriaGuid[6]);
+ data.WriteByteSeq(counter[6]);
+ data.WriteByteSeq(guid[4]);
+ data.WriteByteSeq(guid[1]);
+ data.WriteByteSeq(counter[4]);
+ data.WriteByteSeq(guid[3]);
+ data.WriteByteSeq(counter[0]);
+ data.WriteByteSeq(guid[2]);
+ data.WriteByteSeq(counter[1]);
+ data.WriteByteSeq(guid[6]);
data << uint32(progress->date); // last update time (not packed!)
data << uint32(entry->ID);
- data.WriteByteSeq(criteriaProgress[5]);
+ data.WriteByteSeq(counter[5]);
data << uint32(0);
- data.WriteByteSeq(criteriaGuid[7]);
- data.WriteByteSeq(criteriaProgress[2]);
- data.WriteByteSeq(criteriaGuid[0]);
+ data.WriteByteSeq(guid[7]);
+ data.WriteByteSeq(counter[2]);
+ data.WriteByteSeq(guid[0]);
SendPacket(&data);
}
@@ -2364,54 +2358,53 @@ void AchievementMgr<T>::SendAllAchievementData(Player* /*receiver*/) const
size_t numCriteria = m_criteriaProgress.size();
size_t numAchievements = std::count_if(m_completedAchievements.begin(), m_completedAchievements.end(), isVisible);
ByteBuffer criteriaData(numCriteria * (4 + 4 + 4 + 4 + 8 + 8));
- uint8 guidBytes[8];
- uint8 progressBytes[8];
- *reinterpret_cast<uint64*>(&guidBytes[0]) = GetOwner()->GetGUID();
+ ObjectGuid guid = GetOwner()->GetGUID();
+ ObjectGuid counter;
WorldPacket data(SMSG_ALL_ACHIEVEMENT_DATA, 4 + numAchievements * (4 + 4) + 4 + numCriteria * (4 + 4 + 4 + 4 + 8 + 8));
data.WriteBits(21, numCriteria);
for (CriteriaProgressMap::const_iterator itr = m_criteriaProgress.begin(); itr != m_criteriaProgress.end(); ++itr)
{
- *reinterpret_cast<uint64*>(&progressBytes[0]) = itr->second.counter;
-
- data.WriteBit(guidBytes[4]);
- data.WriteBit(progressBytes[3]);
- data.WriteBit(guidBytes[5]);
- data.WriteBit(progressBytes[0]);
- data.WriteBit(progressBytes[6]);
- data.WriteBit(guidBytes[3]);
- data.WriteBit(guidBytes[0]);
- data.WriteBit(progressBytes[4]);
- data.WriteBit(guidBytes[2]);
- data.WriteBit(progressBytes[7]);
- data.WriteBit(guidBytes[7]);
+ counter = itr->second.counter;
+
+ data.WriteBit(guid[4]);
+ data.WriteBit(counter[3]);
+ data.WriteBit(guid[5]);
+ data.WriteBit(counter[0]);
+ data.WriteBit(counter[6]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(counter[4]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(counter[7]);
+ data.WriteBit(guid[7]);
data.WriteBits(0, 2);
- data.WriteBit(guidBytes[6]);
- data.WriteBit(progressBytes[2]);
- data.WriteBit(progressBytes[1]);
- data.WriteBit(progressBytes[5]);
- data.WriteBit(guidBytes[1]);
-
- criteriaData.WriteByteSeq(guidBytes[3]);
- criteriaData.WriteByteSeq(progressBytes[5]);
- criteriaData.WriteByteSeq(progressBytes[6]);
- criteriaData.WriteByteSeq(guidBytes[4]);
- criteriaData.WriteByteSeq(guidBytes[6]);
- criteriaData.WriteByteSeq(progressBytes[2]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(counter[2]);
+ data.WriteBit(counter[1]);
+ data.WriteBit(counter[5]);
+ data.WriteBit(guid[1]);
+
+ criteriaData.WriteByteSeq(guid[3]);
+ criteriaData.WriteByteSeq(counter[5]);
+ criteriaData.WriteByteSeq(counter[6]);
+ criteriaData.WriteByteSeq(guid[4]);
+ criteriaData.WriteByteSeq(guid[6]);
+ criteriaData.WriteByteSeq(counter[2]);
criteriaData << uint32(0); // timer 2
- criteriaData.WriteByteSeq(guidBytes[2]);
+ criteriaData.WriteByteSeq(guid[2]);
criteriaData << uint32(itr->first); // criteria id
- criteriaData.WriteByteSeq(guidBytes[5]);
- criteriaData.WriteByteSeq(progressBytes[0]);
- criteriaData.WriteByteSeq(progressBytes[3]);
- criteriaData.WriteByteSeq(progressBytes[1]);
- criteriaData.WriteByteSeq(progressBytes[4]);
- criteriaData.WriteByteSeq(guidBytes[0]);
- criteriaData.WriteByteSeq(guidBytes[7]);
- criteriaData.WriteByteSeq(progressBytes[7]);
+ criteriaData.WriteByteSeq(guid[5]);
+ criteriaData.WriteByteSeq(counter[0]);
+ criteriaData.WriteByteSeq(counter[3]);
+ criteriaData.WriteByteSeq(counter[1]);
+ criteriaData.WriteByteSeq(counter[4]);
+ criteriaData.WriteByteSeq(guid[0]);
+ criteriaData.WriteByteSeq(guid[7]);
+ criteriaData.WriteByteSeq(counter[7]);
criteriaData << uint32(0); // timer 1
criteriaData << uint32(secsToTimeBitFields(itr->second.date)); // criteria date
- criteriaData.WriteByteSeq(guidBytes[1]);
+ criteriaData.WriteByteSeq(guid[1]);
}
data.WriteBits(numAchievements, 23);
@@ -2454,75 +2447,75 @@ void AchievementMgr<T>::SendAchievementInfo(Player* receiver, uint32 achievement
template<>
void AchievementMgr<Player>::SendAchievementInfo(Player* receiver, uint32 /*achievementId = 0 */) const
{
- uint8 guidBytes[8];
- uint8 progressBytes[8];
+ ObjectGuid guid = GetOwner()->GetGUID();
+ ObjectGuid counter;
VisibleAchievementPred isVisible;
size_t numCriteria = m_criteriaProgress.size();
size_t numAchievements = std::count_if(m_completedAchievements.begin(), m_completedAchievements.end(), isVisible);
ByteBuffer criteriaData(numCriteria * (0));
- *reinterpret_cast<uint64*>(&guidBytes[0]) = GetOwner()->GetGUID();
WorldPacket data(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, 1 + 8 + 3 + 3 + numAchievements * (4 + 4) + numCriteria * (0));
- data.WriteBit(guidBytes[7]);
- data.WriteBit(guidBytes[4]);
- data.WriteBit(guidBytes[1]);
+ data.WriteBit(guid[7]);
+ data.WriteBit(guid[4]);
+ data.WriteBit(guid[1]);
data.WriteBits(numAchievements, 23);
- data.WriteBit(guidBytes[0]);
- data.WriteBit(guidBytes[3]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(guid[3]);
data.WriteBits(numCriteria, 21);
- data.WriteBit(guidBytes[2]);
+ data.WriteBit(guid[2]);
for (CriteriaProgressMap::const_iterator itr = m_criteriaProgress.begin(); itr != m_criteriaProgress.end(); ++itr)
{
- *reinterpret_cast<uint64*>(&progressBytes[0]) = itr->second.counter;
- data.WriteBit(progressBytes[5]);
- data.WriteBit(progressBytes[3]);
- data.WriteBit(guidBytes[1]);
- data.WriteBit(guidBytes[4]);
- data.WriteBit(guidBytes[2]);
- data.WriteBit(progressBytes[6]);
- data.WriteBit(guidBytes[0]);
- data.WriteBit(progressBytes[4]);
- data.WriteBit(progressBytes[1]);
- data.WriteBit(progressBytes[2]);
- data.WriteBit(guidBytes[3]);
- data.WriteBit(guidBytes[7]);
+ counter = itr->second.counter;
+
+ data.WriteBit(counter[5]);
+ data.WriteBit(counter[3]);
+ data.WriteBit(guid[1]);
+ data.WriteBit(guid[4]);
+ data.WriteBit(guid[2]);
+ data.WriteBit(counter[6]);
+ data.WriteBit(guid[0]);
+ data.WriteBit(counter[4]);
+ data.WriteBit(counter[1]);
+ data.WriteBit(counter[2]);
+ data.WriteBit(guid[3]);
+ data.WriteBit(guid[7]);
data.WriteBits(0, 2); // criteria progress flags
- data.WriteBit(progressBytes[0]);
- data.WriteBit(guidBytes[5]);
- data.WriteBit(guidBytes[6]);
- data.WriteBit(progressBytes[7]);
+ data.WriteBit(counter[0]);
+ data.WriteBit(guid[5]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(counter[7]);
- criteriaData.WriteByteSeq(guidBytes[3]);
- criteriaData.WriteByteSeq(progressBytes[4]);
+ criteriaData.WriteByteSeq(guid[3]);
+ criteriaData.WriteByteSeq(counter[4]);
criteriaData << uint32(0); // timer 1
- criteriaData.WriteByteSeq(guidBytes[1]);
+ criteriaData.WriteByteSeq(guid[1]);
criteriaData << uint32(secsToTimeBitFields(itr->second.date));
- criteriaData.WriteByteSeq(progressBytes[3]);
- criteriaData.WriteByteSeq(progressBytes[7]);
- criteriaData.WriteByteSeq(guidBytes[5]);
- criteriaData.WriteByteSeq(progressBytes[0]);
- criteriaData.WriteByteSeq(guidBytes[4]);
- criteriaData.WriteByteSeq(guidBytes[2]);
- criteriaData.WriteByteSeq(guidBytes[6]);
- criteriaData.WriteByteSeq(guidBytes[7]);
- criteriaData.WriteByteSeq(progressBytes[6]);
+ criteriaData.WriteByteSeq(counter[3]);
+ criteriaData.WriteByteSeq(counter[7]);
+ criteriaData.WriteByteSeq(guid[5]);
+ criteriaData.WriteByteSeq(counter[0]);
+ criteriaData.WriteByteSeq(guid[4]);
+ criteriaData.WriteByteSeq(guid[2]);
+ criteriaData.WriteByteSeq(guid[6]);
+ criteriaData.WriteByteSeq(guid[7]);
+ criteriaData.WriteByteSeq(counter[6]);
criteriaData << uint32(itr->first);
criteriaData << uint32(0); // timer 2
- criteriaData.WriteByteSeq(progressBytes[1]);
- criteriaData.WriteByteSeq(progressBytes[5]);
- criteriaData.WriteByteSeq(guidBytes[0]);
- criteriaData.WriteByteSeq(progressBytes[2]);
+ criteriaData.WriteByteSeq(counter[1]);
+ criteriaData.WriteByteSeq(counter[5]);
+ criteriaData.WriteByteSeq(guid[0]);
+ criteriaData.WriteByteSeq(counter[2]);
}
- data.WriteBit(guidBytes[6]);
- data.WriteBit(guidBytes[5]);
+ data.WriteBit(guid[6]);
+ data.WriteBit(guid[5]);
data.append(criteriaData);
- data.WriteByteSeq(guidBytes[1]);
- data.WriteByteSeq(guidBytes[6]);
- data.WriteByteSeq(guidBytes[3]);
- data.WriteByteSeq(guidBytes[0]);
- data.WriteByteSeq(guidBytes[2]);
+ data.WriteByteSeq(guid[1]);
+ data.WriteByteSeq(guid[6]);
+ data.WriteByteSeq(guid[3]);
+ data.WriteByteSeq(guid[0]);
+ data.WriteByteSeq(guid[2]);
for (CompletedAchievementMap::const_iterator itr = m_completedAchievements.begin(); itr != m_completedAchievements.end(); ++itr)
{
@@ -2533,9 +2526,9 @@ void AchievementMgr<Player>::SendAchievementInfo(Player* receiver, uint32 /*achi
data << uint32(secsToTimeBitFields(itr->second.date));
}
- data.WriteByteSeq(guidBytes[7]);
- data.WriteByteSeq(guidBytes[4]);
- data.WriteByteSeq(guidBytes[5]);
+ data.WriteByteSeq(guid[7]);
+ data.WriteByteSeq(guid[4]);
+ data.WriteByteSeq(guid[5]);
receiver->GetSession()->SendPacket(&data);
}
@@ -2554,8 +2547,8 @@ void AchievementMgr<Guild>::SendAchievementInfo(Player* receiver, uint32 achieve
return;
}
- uint8 criteriaProgress[8];
- uint8 criteriaGuid[8];
+ ObjectGuid counter;
+ ObjectGuid guid;
uint32 numCriteria = 0;
ByteBuffer criteriaData(criteria->size() * (8 + 8 + 4 + 4 + 4));
ByteBuffer criteriaBits(criteria->size() * (8 + 8) / 8);
@@ -2578,47 +2571,47 @@ void AchievementMgr<Guild>::SendAchievementInfo(Player* receiver, uint32 achieve
if (progress == m_criteriaProgress.end())
continue;
- *reinterpret_cast<uint64*>(&criteriaProgress[0]) = progress->second.counter;
- *reinterpret_cast<uint64*>(&criteriaGuid[0]) = progress->second.CompletedGUID;
-
- criteriaBits.WriteBit(criteriaProgress[4]);
- criteriaBits.WriteBit(criteriaProgress[1]);
- criteriaBits.WriteBit(criteriaGuid[2]);
- criteriaBits.WriteBit(criteriaProgress[3]);
- criteriaBits.WriteBit(criteriaGuid[1]);
- criteriaBits.WriteBit(criteriaProgress[5]);
- criteriaBits.WriteBit(criteriaProgress[0]);
- criteriaBits.WriteBit(criteriaGuid[3]);
- criteriaBits.WriteBit(criteriaProgress[2]);
- criteriaBits.WriteBit(criteriaGuid[7]);
- criteriaBits.WriteBit(criteriaGuid[5]);
- criteriaBits.WriteBit(criteriaGuid[0]);
- criteriaBits.WriteBit(criteriaProgress[6]);
- criteriaBits.WriteBit(criteriaGuid[6]);
- criteriaBits.WriteBit(criteriaProgress[7]);
- criteriaBits.WriteBit(criteriaGuid[4]);
-
- criteriaData.WriteByteSeq(criteriaGuid[5]);
+ counter = progress->second.counter;
+ guid = progress->second.CompletedGUID;
+
+ criteriaBits.WriteBit(counter[4]);
+ criteriaBits.WriteBit(counter[1]);
+ criteriaBits.WriteBit(guid[2]);
+ criteriaBits.WriteBit(counter[3]);
+ criteriaBits.WriteBit(guid[1]);
+ criteriaBits.WriteBit(counter[5]);
+ criteriaBits.WriteBit(counter[0]);
+ criteriaBits.WriteBit(guid[3]);
+ criteriaBits.WriteBit(counter[2]);
+ criteriaBits.WriteBit(guid[7]);
+ criteriaBits.WriteBit(guid[5]);
+ criteriaBits.WriteBit(guid[0]);
+ criteriaBits.WriteBit(counter[6]);
+ criteriaBits.WriteBit(guid[6]);
+ criteriaBits.WriteBit(counter[7]);
+ criteriaBits.WriteBit(guid[4]);
+
+ criteriaData.WriteByteSeq(guid[5]);
criteriaData << uint32(progress->second.date); // unknown date
- criteriaData.WriteByteSeq(criteriaProgress[3]);
- criteriaData.WriteByteSeq(criteriaProgress[7]);
+ criteriaData.WriteByteSeq(counter[3]);
+ criteriaData.WriteByteSeq(counter[7]);
criteriaData << uint32(progress->second.date); // unknown date
- criteriaData.WriteByteSeq(criteriaProgress[6]);
- criteriaData.WriteByteSeq(criteriaGuid[4]);
- criteriaData.WriteByteSeq(criteriaGuid[1]);
- criteriaData.WriteByteSeq(criteriaProgress[4]);
- criteriaData.WriteByteSeq(criteriaGuid[3]);
- criteriaData.WriteByteSeq(criteriaProgress[0]);
- criteriaData.WriteByteSeq(criteriaGuid[2]);
- criteriaData.WriteByteSeq(criteriaProgress[1]);
- criteriaData.WriteByteSeq(criteriaGuid[6]);
+ criteriaData.WriteByteSeq(counter[6]);
+ criteriaData.WriteByteSeq(guid[4]);
+ criteriaData.WriteByteSeq(guid[1]);
+ criteriaData.WriteByteSeq(counter[4]);
+ criteriaData.WriteByteSeq(guid[3]);
+ criteriaData.WriteByteSeq(counter[0]);
+ criteriaData.WriteByteSeq(guid[2]);
+ criteriaData.WriteByteSeq(counter[1]);
+ criteriaData.WriteByteSeq(guid[6]);
criteriaData << uint32(progress->second.date); // last update time (not packed!)
criteriaData << uint32(criteriaId);
- criteriaData.WriteByteSeq(criteriaProgress[5]);
+ criteriaData.WriteByteSeq(counter[5]);
criteriaData << uint32(0);
- criteriaData.WriteByteSeq(criteriaGuid[7]);
- criteriaData.WriteByteSeq(criteriaProgress[2]);
- criteriaData.WriteByteSeq(criteriaGuid[0]);
+ criteriaData.WriteByteSeq(guid[7]);
+ criteriaData.WriteByteSeq(counter[2]);
+ criteriaData.WriteByteSeq(guid[0]);
}
WorldPacket data(SMSG_GUILD_CRITERIA_DATA, criteriaBits.size() + criteriaData.size());
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 1a04f7b3053..01ad11ba2df 100755
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -119,6 +119,62 @@ class Transport;
typedef UNORDERED_MAP<Player*, UpdateData> UpdateDataMapType;
+//! Structure to ease conversions from single 64 bit integer guid into individual bytes, for packet sending purposes
+//! Nuke this out when porting ObjectGuid from MaNGOS, but preserve the per-byte storage
+struct ObjectGuid
+{
+ public:
+ ObjectGuid() { _data.u64 = 0i64; }
+ ObjectGuid(uint64 guid) { _data.u64 = guid; }
+ ObjectGuid(ObjectGuid const& other) { _data.u64 = other._data.u64; }
+
+ uint8& operator[](uint32 index)
+ {
+ ASSERT(index < sizeof(uint64));
+
+#if TRINITY_ENDIAN == TRINITY_LITTLEENDIAN
+ return _data.byte[index];
+#else
+ return _data.byte[7 - index];
+#endif
+ }
+
+ uint8 const& operator[](uint32 index) const
+ {
+ ASSERT(index < sizeof(uint64));
+
+#if TRINITY_ENDIAN == TRINITY_LITTLEENDIAN
+ return _data.byte[index];
+#else
+ return _data.byte[7 - index];
+#endif
+ }
+
+ operator uint64()
+ {
+ return _data.u64;
+ }
+
+ ObjectGuid& operator=(uint64 guid)
+ {
+ _data.u64 = guid;
+ return *this;
+ }
+
+ ObjectGuid& operator=(ObjectGuid const& other)
+ {
+ _data.u64 = other._data.u64;
+ return *this;
+ }
+
+ private:
+ union
+ {
+ uint64 u64;
+ uint8 byte[8];
+ } _data;
+};
+
class Object
{
public:
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 988404b1829..558106c956d 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1842,10 +1842,8 @@ bool Player::BuildEnumData(PreparedQueryResult result, ByteBuffer* dataBuffer, B
// "characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.data, character_banned.guid, character_declinedname.genitive "
Field* fields = result->Fetch();
- uint8 guid[8];
- uint8 guildGuid[8];
- *reinterpret_cast<uint64*>(&guid[0]) = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);
+ ObjectGuid guid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);
std::string name = fields[1].GetString();
uint8 plrRace = fields[2].GetUInt8();
uint8 plrClass = fields[3].GetUInt8();
@@ -1862,7 +1860,7 @@ bool Player::BuildEnumData(PreparedQueryResult result, ByteBuffer* dataBuffer, B
float y = fields[11].GetFloat();
float z = fields[12].GetFloat();
uint32 guildId = fields[13].GetUInt32();
- *reinterpret_cast<uint64*>(&guildGuid[0]) = MAKE_NEW_GUID(guildId, 0, guildId ? HIGHGUID_GUILD : 0);
+ ObjectGuid guildGuid = MAKE_NEW_GUID(guildId, 0, guildId ? HIGHGUID_GUILD : 0);
uint32 playerFlags = fields[14].GetUInt32();
uint32 atLoginFlags = fields[15].GetUInt16();
Tokens equipment(fields[19].GetString(), ' ');
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 599c79dedbd..9f064640a75 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12733,14 +12733,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_RUN:
data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
data.WriteByteSeq(bytes[6]);
data.WriteByteSeq(bytes[7]);
@@ -12755,14 +12755,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_RUN_BACK:
data.Initialize(SMSG_SPLINE_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[2]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[2]);
data.WriteByteSeq(bytes[1]);
data.WriteByteSeq(bytes[7]);
@@ -12777,14 +12777,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_SWIM:
data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[6]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[6]);
data.WriteByteSeq(bytes[0]);
data.WriteByteSeq(bytes[3]);
@@ -12798,14 +12798,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_SWIM_BACK:
data.Initialize(SMSG_SPLINE_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[7]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[7]);
data.WriteByteSeq(bytes[1]);
data.WriteByteSeq(bytes[0]);
@@ -12819,14 +12819,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_TURN_RATE:
data.Initialize(SMSG_SPLINE_MOVE_SET_TURN_RATE, 1 + 8 + 4);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[2]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[2]);
data.WriteByteSeq(bytes[2]);
data.WriteByteSeq(bytes[4]);
@@ -12840,14 +12840,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_FLIGHT:
data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
data << float(GetSpeed(mtype));
@@ -12862,14 +12862,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_FLIGHT_BACK:
data.Initialize(SMSG_SPLINE_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[3]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[3]);
data.WriteByteSeq(bytes[5]);
data.WriteByteSeq(bytes[6]);
@@ -12883,14 +12883,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_PITCH_RATE:
data.Initialize(SMSG_SPLINE_MOVE_SET_PITCH_RATE, 1 + 8 + 4);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
data.WriteByteSeq(bytes[0]);
data.WriteByteSeq(bytes[1]);
@@ -12937,14 +12937,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
{
case MOVE_WALK:
data.Initialize(SMSG_MOVE_SET_WALK_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[3]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[3]);
data.WriteByteSeq(bytes[3]);
data.WriteByteSeq(bytes[1]);
@@ -12959,14 +12959,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_RUN:
data.Initialize(SMSG_MOVE_SET_RUN_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[6]);
data.WriteByteSeq(bytes[1]);
@@ -12983,14 +12983,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_RUN_BACK:
data.Initialize(SMSG_MOVE_SET_RUN_BACK_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[5]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[5]);
data << float(GetSpeed(mtype));
@@ -13006,14 +13006,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_SWIM:
data.Initialize(SMSG_MOVE_SET_SWIM_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[0]);
data.WriteByteSeq(bytes[6]);
data.WriteByteSeq(bytes[4]);
@@ -13028,14 +13028,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_SWIM_BACK:
data.Initialize(SMSG_MOVE_SET_SWIM_BACK_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[0]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[0]);
data.WriteByteSeq(bytes[6]);
data.WriteByteSeq(bytes[3]);
@@ -13050,14 +13050,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_TURN_RATE:
data.Initialize(SMSG_MOVE_SET_TURN_RATE, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[4]);
data << float(GetSpeed(mtype));
@@ -13073,14 +13073,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_FLIGHT:
data.Initialize(SMSG_MOVE_SET_FLIGHT_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
data << float(GetSpeed(mtype));
@@ -13096,14 +13096,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_FLIGHT_BACK:
data.Initialize(SMSG_MOVE_SET_FLIGHT_BACK_SPEED, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[7]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[7]);
data.WriteByteSeq(bytes[0]);
data << float(GetSpeed(mtype));
@@ -13118,14 +13118,14 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
break;
case MOVE_PITCH_RATE:
data.Initialize(SMSG_MOVE_SET_PITCH_RATE, 1 + 8 + 4 + 4 );
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[1]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[1]);
data.WriteByteSeq(bytes[0]);
data << uint32(0);
@@ -17031,14 +17031,14 @@ void Unit::KnockbackFrom(float x, float y, float speedXY, float speedZ)
uint64 guid = GetGUID();
uint8* bytes = (uint8*)&guid;
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
data.WriteByteSeq(bytes[0]);
data << float(speedXY);
@@ -17371,14 +17371,14 @@ void Unit::JumpTo(float speedXY, float speedZ, bool forward)
uint64 guid = GetGUID();
uint8* bytes = (uint8*)&guid;
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[4]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[4]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
data.WriteByteSeq(bytes[0]);
data << float(speedXY);
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 0461379b91b..94b40b921e9 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -751,33 +751,35 @@ void WorldSession::HandleCharDeleteOpcode(WorldPacket & recv_data)
SendPacket(&data);
}
-void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recv_data)
+void WorldSession::HandlePlayerLoginOpcode(WorldPacket& recvData)
{
if (PlayerLoading() || GetPlayer() != NULL)
{
- sLog->outError("Player tryes to login again, AccountId = %d", GetAccountId());
+ sLog->outError("Player tries to login again, AccountId = %d", GetAccountId());
return;
}
m_playerLoading = true;
- uint64 playerGuid = 0;
+ ObjectGuid playerGuid;
sLog->outStaticDebug("WORLD: Recvd Player Logon Message");
-
- BitStream mask = recv_data.ReadBitStream(8);
-
- ByteBuffer bytes(8, true);
-
- recv_data.ReadXorByte(mask[6], bytes[5]);
- recv_data.ReadXorByte(mask[0], bytes[0]);
- recv_data.ReadXorByte(mask[4], bytes[3]);
- recv_data.ReadXorByte(mask[1], bytes[4]);
- recv_data.ReadXorByte(mask[2], bytes[7]);
- recv_data.ReadXorByte(mask[5], bytes[2]);
- recv_data.ReadXorByte(mask[7], bytes[6]);
- recv_data.ReadXorByte(mask[3], bytes[1]);
-
- playerGuid = BitConverter::ToUInt64(bytes);
+ playerGuid[2] = recvData.ReadBit();
+ playerGuid[3] = recvData.ReadBit();
+ playerGuid[0] = recvData.ReadBit();
+ playerGuid[6] = recvData.ReadBit();
+ playerGuid[4] = recvData.ReadBit();
+ playerGuid[5] = recvData.ReadBit();
+ playerGuid[1] = recvData.ReadBit();
+ playerGuid[7] = recvData.ReadBit();
+
+ recvData.ReadByteSeq(playerGuid[2]);
+ recvData.ReadByteSeq(playerGuid[7]);
+ recvData.ReadByteSeq(playerGuid[0]);
+ recvData.ReadByteSeq(playerGuid[3]);
+ recvData.ReadByteSeq(playerGuid[5]);
+ recvData.ReadByteSeq(playerGuid[6]);
+ recvData.ReadByteSeq(playerGuid[1]);
+ recvData.ReadByteSeq(playerGuid[4]);
sLog->outDebug(LOG_FILTER_NETWORKIO, "Character (Guid: %u) logging in", GUID_LOPART(playerGuid));
@@ -802,9 +804,10 @@ void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recv_data)
void WorldSession::HandleLoadScreenOpcode(WorldPacket& recvPacket)
{
sLog->outStaticDebug("WORLD: Recvd CMSG_LOAD_SCREEN");
- uint8 unkMask; // Loading start: 0x80, loading end: 0x0
uint32 mapID;
- recvPacket >> unkMask >> mapID;
+
+ recvPacket >> mapID;
+ recvPacket.ReadBit();
// TODO: Do something with this packet
}
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 626221e9696..494a8471a6a 100755
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -62,18 +62,18 @@ void WorldSession::SendPartyResult(PartyOperation operation, const std::string&
void WorldSession::HandleGroupInviteOpcode(WorldPacket & recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GROUP_INVITE");
-
- BytesGuid guid;
- guid.guid = 0;
-
- recv_data.ReadByteMask(guid.bytes[6]);
- recv_data.ReadByteMask(guid.bytes[5]);
- recv_data.ReadByteMask(guid.bytes[0]);
- recv_data.ReadByteMask(guid.bytes[3]);
- recv_data.ReadByteMask(guid.bytes[4]);
- recv_data.ReadByteMask(guid.bytes[7]);
- recv_data.ReadByteMask(guid.bytes[1]);
- recv_data.ReadByteMask(guid.bytes[2]);
+
+ //BytesGuid guid;
+ //guid.guid = 0;
+
+ //recv_data.ReadByteMask(guid.bytes[6]);
+ //recv_data.ReadByteMask(guid.bytes[5]);
+ //recv_data.ReadByteMask(guid.bytes[0]);
+ //recv_data.ReadByteMask(guid.bytes[3]);
+ //recv_data.ReadByteMask(guid.bytes[4]);
+ //recv_data.ReadByteMask(guid.bytes[7]);
+ //recv_data.ReadByteMask(guid.bytes[1]);
+ //recv_data.ReadByteMask(guid.bytes[2]);
recv_data.read_skip<uint32>();
recv_data.read_skip<uint32>();
@@ -82,16 +82,16 @@ void WorldSession::HandleGroupInviteOpcode(WorldPacket & recv_data)
recv_data >> membername;
recv_data.read_skip<uint32>();
- recv_data.ReadByteSeq(guid.bytes[0]);
- recv_data.ReadByteSeq(guid.bytes[7]);
- recv_data.ReadByteSeq(guid.bytes[4]);
- recv_data.ReadByteSeq(guid.bytes[1]);
- recv_data.ReadByteSeq(guid.bytes[2]);
- recv_data.ReadByteSeq(guid.bytes[6]);
- recv_data.ReadByteSeq(guid.bytes[5]);
+ //recv_data.ReadByteSeq(guid.bytes[0]);
+ //recv_data.ReadByteSeq(guid.bytes[7]);
+ //recv_data.ReadByteSeq(guid.bytes[4]);
+ //recv_data.ReadByteSeq(guid.bytes[1]);
+ //recv_data.ReadByteSeq(guid.bytes[2]);
+ //recv_data.ReadByteSeq(guid.bytes[6]);
+ //recv_data.ReadByteSeq(guid.bytes[5]);
std::string string0;
recv_data >> string0;
- recv_data.ReadByteSeq(guid.bytes[3]);
+ //recv_data.ReadByteSeq(guid.bytes[3]);
// attempt add selected player
diff --git a/src/server/game/Handlers/GuildHandler.cpp b/src/server/game/Handlers/GuildHandler.cpp
index 7117c4f4bea..9d91feabcf6 100755
--- a/src/server/game/Handlers/GuildHandler.cpp
+++ b/src/server/game/Handlers/GuildHandler.cpp
@@ -46,7 +46,7 @@ void WorldSession::HandleGuildQueryOpcode(WorldPacket& recvPacket)
uint64 guildGuid, playerGuid;
recvPacket >> guildGuid >> playerGuid;
-
+
// If guild doesn't exist or player is not part of the guild send error
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (guild->IsMember(playerGuid))
@@ -129,20 +129,8 @@ void WorldSession::HandleGuildRosterOpcode(WorldPacket& recvPacket)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_GUILD_ROSTER");
- BitStream mask = recvPacket.ReadBitStream(8);
- ByteBuffer bytes(8, true);
-
- recvPacket.ReadXorByte(mask[0], bytes[7]);
- recvPacket.ReadXorByte(mask[3], bytes[5]);
- recvPacket.ReadXorByte(mask[4], bytes[4]);
- recvPacket.ReadXorByte(mask[5], bytes[0]);
- recvPacket.ReadXorByte(mask[6], bytes[1]);
- recvPacket.ReadXorByte(mask[1], bytes[2]);
- recvPacket.ReadXorByte(mask[2], bytes[6]);
- recvPacket.ReadXorByte(mask[7], bytes[3]);
-
- uint64 guildGuid = BitConverter::ToUInt64(bytes);
+ uint64 guildGuid = 0;
if (Guild* guild = sGuildMgr->GetGuildByGuid(guildGuid))
if (guild->IsMember(GetPlayer()->GetGUID()))
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp
index 1e29ea2621e..0bdff9016f7 100755
--- a/src/server/game/Handlers/ItemHandler.cpp
+++ b/src/server/game/Handlers/ItemHandler.cpp
@@ -744,14 +744,14 @@ void WorldSession::SendListInventory(uint64 vendorGuid)
if (!items)
{
WorldPacket data(SMSG_LIST_INVENTORY, 8 + 1 + 1);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[4]);
data.WriteByteSeq(bytes[2]);
data.WriteByteSeq(bytes[3]);
@@ -771,14 +771,14 @@ void WorldSession::SendListInventory(uint64 vendorGuid)
WorldPacket data(SMSG_LIST_INVENTORY, 8 + 1 + itemCount * 8 * 4);
- data.WriteByteMask(bytes[5]);
- data.WriteByteMask(bytes[6]);
- data.WriteByteMask(bytes[1]);
- data.WriteByteMask(bytes[2]);
- data.WriteByteMask(bytes[3]);
- data.WriteByteMask(bytes[0]);
- data.WriteByteMask(bytes[7]);
- data.WriteByteMask(bytes[4]);
+ data.WriteBit(bytes[5]);
+ data.WriteBit(bytes[6]);
+ data.WriteBit(bytes[1]);
+ data.WriteBit(bytes[2]);
+ data.WriteBit(bytes[3]);
+ data.WriteBit(bytes[0]);
+ data.WriteBit(bytes[7]);
+ data.WriteBit(bytes[4]);
data.WriteByteSeq(bytes[2]);
data.WriteByteSeq(bytes[3]);
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp
index 1c02d2082b8..1ff10abc36b 100755
--- a/src/server/game/Handlers/MiscHandler.cpp
+++ b/src/server/game/Handlers/MiscHandler.cpp
@@ -1098,22 +1098,23 @@ void WorldSession::HandleMoveTimeSkippedOpcode(WorldPacket & recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_MOVE_TIME_SKIPPED");
- BitStream mask = recv_data.ReadBitStream(8);
+ recv_data.rfinish();
+ return;
uint32 time;
recv_data >> time;
- ByteBuffer bytes(8, true);
- recv_data.ReadXorByte(mask[0], bytes[1]);
- recv_data.ReadXorByte(mask[1], bytes[4]);
- recv_data.ReadXorByte(mask[7], bytes[2]);
- recv_data.ReadXorByte(mask[5], bytes[5]);
- recv_data.ReadXorByte(mask[3], bytes[0]);
- recv_data.ReadXorByte(mask[6], bytes[7]);
- recv_data.ReadXorByte(mask[2], bytes[6]);
- recv_data.ReadXorByte(mask[4], bytes[3]);
+ //ByteBuffer bytes(8, true);
+ //recv_data.ReadXorByte(mask[0], bytes[1]);
+ //recv_data.ReadXorByte(mask[1], bytes[4]);
+ //recv_data.ReadXorByte(mask[7], bytes[2]);
+ //recv_data.ReadXorByte(mask[5], bytes[5]);
+ //recv_data.ReadXorByte(mask[3], bytes[0]);
+ //recv_data.ReadXorByte(mask[6], bytes[7]);
+ //recv_data.ReadXorByte(mask[2], bytes[6]);
+ //recv_data.ReadXorByte(mask[4], bytes[3]);
- uint64 guid = BitConverter::ToUInt64(bytes);
+ //uint64 guid = BitConverter::ToUInt64(bytes);
//TODO!
@@ -1763,14 +1764,15 @@ void WorldSession::HandleInstanceLockResponse(WorldPacket& recvPacket)
void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket)
{
+ recvPacket.rfinish();
+ return;
+
uint32 type, count;
recvPacket >> type >> count;
ByteBuffer* guidBytes = new ByteBuffer[count];
- BitStream* mask = new BitStream[count];
for (uint32 i = 0; i < count; ++i)
{
- mask[i] = recvPacket.ReadBitStream(8);
guidBytes[i].resize(8); // damn c++ not allowing to use non-default constructor with new[]
}
@@ -1779,15 +1781,15 @@ void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket)
for (uint32 i = 0; i < count; ++i)
{
recvPacket >> entry;
- recvPacket.ReadXorByte(mask[i][7], guidBytes[i][2]);
- recvPacket.ReadXorByte(mask[i][4], guidBytes[i][6]);
- recvPacket.ReadXorByte(mask[i][1], guidBytes[i][3]);
- recvPacket.ReadXorByte(mask[i][2], guidBytes[i][0]);
- recvPacket.ReadXorByte(mask[i][3], guidBytes[i][5]);
- recvPacket.ReadXorByte(mask[i][0], guidBytes[i][7]);
- recvPacket.ReadXorByte(mask[i][6], guidBytes[i][1]);
- recvPacket.ReadXorByte(mask[i][5], guidBytes[i][4]);
- guid = BitConverter::ToUInt64(guidBytes[i]);
+ //recvPacket.ReadXorByte(mask[i][7], guidBytes[i][2]);
+ //recvPacket.ReadXorByte(mask[i][4], guidBytes[i][6]);
+ //recvPacket.ReadXorByte(mask[i][1], guidBytes[i][3]);
+ //recvPacket.ReadXorByte(mask[i][2], guidBytes[i][0]);
+ //recvPacket.ReadXorByte(mask[i][3], guidBytes[i][5]);
+ //recvPacket.ReadXorByte(mask[i][0], guidBytes[i][7]);
+ //recvPacket.ReadXorByte(mask[i][6], guidBytes[i][1]);
+ //recvPacket.ReadXorByte(mask[i][5], guidBytes[i][4]);
+ //guid = BitConverter::ToUInt64(guidBytes[i]);
switch (type)
{
@@ -1803,7 +1805,6 @@ void WorldSession::HandleRequestHotfix(WorldPacket& recvPacket)
}
delete[] guidBytes;
- delete[] mask;
}
void WorldSession::HandleUpdateMissileTrajectory(WorldPacket& recvPacket)
diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp
index 598dafb200a..57afc614545 100755
--- a/src/server/game/Handlers/MovementHandler.cpp
+++ b/src/server/game/Handlers/MovementHandler.cpp
@@ -192,22 +192,14 @@ void WorldSession::HandleMoveTeleportAck(WorldPacket& recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "CMSG_MOVE_TELEPORT_ACK");
- BitStream mask = recv_data.ReadBitStream(8);
+ recv_data.rfinish();
+ return;
uint32 flags, time;
recv_data >> flags >> time;
- ByteBuffer bytes(8, true);
- recv_data.ReadXorByte(mask[6], bytes[1]);
- recv_data.ReadXorByte(mask[0], bytes[3]);
- recv_data.ReadXorByte(mask[1], bytes[2]);
- recv_data.ReadXorByte(mask[7], bytes[0]);
- recv_data.ReadXorByte(mask[5], bytes[6]);
- recv_data.ReadXorByte(mask[3], bytes[4]);
- recv_data.ReadXorByte(mask[2], bytes[7]);
- recv_data.ReadXorByte(mask[4], bytes[5]);
- uint64 guid = BitConverter::ToUInt64(bytes);
+ uint64 guid = 0;
sLog->outStaticDebug("Guid " UI64FMTD, guid);
sLog->outStaticDebug("Flags %u, time %u", flags, time/IN_MILLISECONDS);
@@ -618,11 +610,8 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi)
if (sequence == NULL)
return;
- BytesGuid guid;
- BytesGuid tguid;
-
- guid.guid = 0;
- tguid.guid = 0;
+ ObjectGuid guid;
+ ObjectGuid tguid;
for (uint32 i = 0; i < MSE_COUNT; i++)
{
@@ -630,7 +619,7 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi)
if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
{
- data.ReadByteMask(guid.bytes[element - MSEGuidByte0]);
+ guid[element - MSEGuidByte0] = data.ReadBit();
continue;
}
@@ -638,13 +627,13 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi)
element <= MSETransportGuidByte7)
{
if (HaveTransportData)
- data.ReadByteMask(tguid.bytes[element - MSETransportGuidByte0]);
+ tguid[element - MSETransportGuidByte0] = data.ReadBit();
continue;
}
if (element >= MSEGuidByte0_2 && element <= MSEGuidByte7_2)
{
- data.ReadByteSeq(guid.bytes[element - MSEGuidByte0_2]);
+ data.ReadByteSeq(guid[element - MSEGuidByte0_2]);
continue;
}
@@ -652,7 +641,7 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi)
element <= MSETransportGuidByte7_2)
{
if (HaveTransportData)
- data.ReadByteSeq(tguid.bytes[element - MSETransportGuidByte0_2]);
+ data.ReadByteSeq(tguid[element - MSETransportGuidByte0_2]);
continue;
}
@@ -763,8 +752,8 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi)
}
}
- mi->guid = guid.guid;
- mi->t_guid = tguid.guid;
+ mi->guid = guid;
+ mi->t_guid = tguid;
if (HaveTransportData && mi->pos.m_positionX != mi->t_pos.m_positionX)
if (GetPlayer()->GetTransport())
@@ -866,7 +855,7 @@ void WorldSession::WriteMovementInfo(WorldPacket &data, MovementInfo* mi)
if (element >= MSEGuidByte0 && element <= MSEGuidByte7)
{
- data.WriteByteMask(guid[element - MSEGuidByte0]);
+ data.WriteBit(guid[element - MSEGuidByte0]);
continue;
}
@@ -874,7 +863,7 @@ void WorldSession::WriteMovementInfo(WorldPacket &data, MovementInfo* mi)
element <= MSETransportGuidByte7)
{
if (HaveTransportData)
- data.WriteByteMask(tguid[element - MSETransportGuidByte0]);
+ data.WriteBit(tguid[element - MSETransportGuidByte0]);
continue;
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 844aae93ad4..f458f5a73dd 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -381,7 +381,7 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(CMSG_LFG_TELEPORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLfgTeleportOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_LIST_INVENTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleListInventoryOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_LOAD_DANCES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
- //DEFINE_OPCODE_HANDLER(CMSG_LOAD_SCREEN, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode );
+ DEFINE_OPCODE_HANDLER(CMSG_LOAD_SCREEN, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleLoadScreenOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_LOGOUT_CANCEL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutCancelOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_LOGOUT_REQUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleLogoutRequestOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_LOG_DISCONNECT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_EarlyProccess );
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7495a57f399..5d7d6b2d775 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -84,12 +84,6 @@ struct AccountData
std::string Data;
};
-union BytesGuid
-{
- uint8 bytes[8];
- uint64 guid;
-};
-
enum PartyOperation
{
PARTY_OP_INVITE = 0,
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp
index 58aa2bd3aa0..ae69fc5f913 100755
--- a/src/server/shared/Database/PreparedStatement.cpp
+++ b/src/server/shared/Database/PreparedStatement.cpp
@@ -230,11 +230,16 @@ void MySQLPreparedStatement::ClearParameters()
}
}
+static bool ParementerIndexAssertFail(uint32 stmtIndex, uint8 index, uint32 paramCount)
+{
+ sLog->outError("Attempted to bind parameter %u%s on a PreparedStatement %u (statement has only %u parameters)", uint32(index) + 1, (index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "nd"))), stmtIndex, paramCount);
+ return false;
+}
+
//- Bind on mysql level
bool MySQLPreparedStatement::CheckValidIndex(uint8 index)
{
- if (index >= m_paramCount)
- return false;
+ ASSERT(index < m_paramCount || ParementerIndexAssertFail(m_stmt->m_index, index, m_paramCount));
if (m_paramsSet[index])
sLog->outSQLDriver("[WARNING] Prepared Statement (id: %u) trying to bind value on already bound index (%u).", m_stmt->m_index, index);
diff --git a/src/server/shared/Packets/ByteBuffer.cpp b/src/server/shared/Packets/ByteBuffer.cpp
deleted file mode 100644
index adb58936c75..00000000000
--- a/src/server/shared/Packets/ByteBuffer.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "ByteBuffer.h"
-
-void BitStream::Clear()
-{
- _data.clear();
- _rpos = _wpos = 0;
-}
-
-uint8 BitStream::GetBit(uint32 bit)
-{
- ASSERT(_data.size() > bit);
- return _data[bit];
-}
-
-uint8 BitStream::ReadBit()
-{
- ASSERT(_data.size() < _rpos);
- uint8 b = _data[_rpos];
- ++_rpos;
- return b;
-}
-
-void BitStream::WriteBit(uint32 bit)
-{
- _data.push_back(bit ? uint8(1) : uint8(0));
- ++_wpos;
-}
-
-template <typename T> void BitStream::WriteBits(T value, size_t bits)
-{
- for (int32 i = bits-1; i >= 0; --i)
- WriteBit((value >> i) & 1);
-}
-
-bool BitStream::Empty()
-{
- return _data.empty();
-}
-
-void BitStream::Reverse()
-{
- uint32 len = GetLength();
- std::vector<uint8> b = _data;
- Clear();
-
- for(uint32 i = len; i > 0; --i)
- WriteBit(b[i-1]);
-}
-
-void BitStream::Print()
-{
- if (!sLog->IsOutDebug())
- return;
- std::stringstream ss;
- ss << "BitStream: ";
- for (uint32 i = 0; i < GetLength(); ++i)
- ss << uint32(GetBit(i)) << " ";
-
- sLog->outDebug(LOG_FILTER_NETWORKIO, "%s", ss.str().c_str());
-}
-
-ByteBuffer::ByteBuffer(size_t res, bool init): _rpos(0), _wpos(0), _bitpos(8), _curbitval(0)
-{
- if (init)
- _storage.resize(res, 0);
- else
- _storage.reserve(res);
-}
diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h
index b78d78c69f2..c08f794c5fa 100755
--- a/src/server/shared/Packets/ByteBuffer.h
+++ b/src/server/shared/Packets/ByteBuffer.h
@@ -77,60 +77,21 @@ class ByteBufferSourceException : public ByteBufferException
}
};
-class BitStream
-{
- public:
- BitStream(): _rpos(0), _wpos(0) {}
-
- BitStream(uint32 val, size_t len): _rpos(0), _wpos(0)
- {
- WriteBits(val, len);
- }
-
- BitStream(BitStream const& bs) : _data(bs._data), _rpos(bs._rpos), _wpos(bs._wpos) {}
-
- void Clear();
- uint8 GetBit(uint32 bit);
- uint8 ReadBit();
- void WriteBit(uint32 bit);
- template <typename T> void WriteBits(T value, size_t bits);
- bool Empty();
- void Reverse();
- void Print();
-
- size_t GetLength() { return _data.size(); }
- uint32 GetReadPosition() { return _rpos; }
- uint32 GetWritePosition() { return _wpos; }
- void SetReadPos(uint32 pos) { _rpos = pos; }
-
- uint8 const& operator[](uint32 const pos) const
- {
- return _data[pos];
- }
-
- uint8& operator[] (uint32 const pos)
- {
- return _data[pos];
- }
-
- private:
- std::vector<uint8> _data;
- uint32 _rpos, _wpos;
-};
-
class ByteBuffer
{
public:
const static size_t DEFAULT_SIZE = 0x1000;
// constructor
- ByteBuffer(): _rpos(0), _wpos(0), _bitpos(8), _curbitval(0)
+ ByteBuffer() : _rpos(0), _wpos(0), _bitpos(8), _curbitval(0)
{
_storage.reserve(DEFAULT_SIZE);
}
- // constructor
- ByteBuffer(size_t res, bool init = false);
+ ByteBuffer(size_t reserve) : _rpos(0), _wpos(0), _bitpos(8), _curbitval(0)
+ {
+ _storage.reserve(reserve);
+ }
// copy constructor
ByteBuffer(const ByteBuffer &buf) : _rpos(buf._rpos), _wpos(buf._wpos),
@@ -205,43 +166,13 @@ class ByteBuffer
return value;
}
- BitStream ReadBitStream(uint32 len)
- {
- BitStream b;
- for (uint32 i = 0; i < len; ++i)
- b.WriteBit(ReadBit());
- return b;
- }
-
- void ReadByteMask(uint8& b)
- {
- b = ReadBit() ? 1 : 0;
- }
-
+ // Reads a byte (if needed) in-place
void ReadByteSeq(uint8& b)
{
if (b != 0)
b ^= read<uint8>();
}
- uint8 ReadXorByte()
- {
- return ReadUInt8() ^ 1;
- }
-
- void ReadXorByte(uint32 bit, uint8& byte)
- {
- if (!bit)
- byte = 0;
- else
- byte = uint8(ReadUInt8() ^ bit);
- }
-
- void WriteByteMask(uint8 b)
- {
- WriteBit(b);
- }
-
void WriteByteSeq(uint8 b)
{
if (b != 0)
@@ -505,69 +436,6 @@ class ByteBuffer
}
}
- uint8 ReadUInt8()
- {
- uint8 u = 0;
- (*this) >> u;
- return u;
- }
-
- uint16 ReadUInt16()
- {
- uint16 u = 0;
- (*this) >> u;
- return u;
- }
-
- uint32 ReadUInt32()
- {
- uint32 u = 0;
- (*this) >> u;
- return u;
- }
-
- uint64 ReadUInt64()
- {
- uint64 u = 0;
- (*this) >> u;
- return u;
- }
-
- int8 ReadInt8()
- {
- int8 u = 0;
- (*this) >> u;
- return u;
- }
-
- int16 ReadInt16()
- {
- int16 u = 0;
- (*this) >> u;
- return u;
- }
-
- int32 ReadInt32()
- {
- uint32 u = 0;
- (*this) >> u;
- return u;
- }
-
- int64 ReadInt64()
- {
- int64 u = 0;
- (*this) >> u;
- return u;
- }
-
- std::string ReadString()
- {
- std::string s;
- (*this) >> s;
- return s;
- }
-
std::string ReadString(uint32 length)
{
char* buffer = new char[length + 1];
@@ -578,20 +446,6 @@ class ByteBuffer
return retval;
}
- bool ReadBoolean()
- {
- uint8 b = 0;
- (*this) >> b;
- return b > 0 ? true : false;
- }
-
- float ReadSingle()
- {
- float f = 0;
- (*this) >> f;
- return f;
- }
-
const uint8 *contents() const { return &_storage[0]; }
size_t size() const { return _storage.size(); }
@@ -844,7 +698,6 @@ inline ByteBuffer &operator>>(ByteBuffer &b, std::map<K, V> &m)
return b;
}
-// TODO: Make a ByteBuffer.cpp and move all this inlining to it.
template<> inline std::string ByteBuffer::read<std::string>()
{
std::string tmp;
@@ -871,44 +724,5 @@ inline void ByteBuffer::read_skip<std::string>()
read_skip<char*>();
}
-class BitConverter
-{
- public:
- static uint8 ToUInt8(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<uint8>(start);
- }
-
- static uint16 ToUInt16(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<uint16>(start);
- }
-
- static uint32 ToUInt32(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<uint32>(start);
- }
-
- static uint64 ToUInt64(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<uint64>(start);
- }
-
- static int16 ToInt16(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<int16>(start);
- }
-
- static int32 ToInt32(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<int32>(start);
- }
-
- static int64 ToInt64(ByteBuffer const& buff, size_t start = 0)
- {
- return buff.read<int64>(start);
- }
-};
-
#endif