mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
[9551] Add and use PackedGuid wrapper.
Also * use more wide bytebuff << >> operators for objects * use at read packet faisl alsways exception way instead some time used bool results.
This commit is contained in:
parent
ad9243ebd0
commit
c8fd454a79
26 changed files with 351 additions and 340 deletions
|
|
@ -73,25 +73,6 @@ static bool isNonTriggerAura[TOTAL_AURAS];
|
|||
// Prepare lists
|
||||
static bool procPrepared = InitTriggerAuraData();
|
||||
|
||||
MovementInfo::MovementInfo(WorldPacket &data)
|
||||
{
|
||||
// Init fields
|
||||
moveFlags = MOVEFLAG_NONE;
|
||||
moveFlags2 = MOVEFLAG2_NONE;
|
||||
time = 0;
|
||||
t_guid = 0;
|
||||
t_time = 0;
|
||||
t_seat = -1;
|
||||
t_time2 = 0;
|
||||
s_pitch = 0.0f;
|
||||
fallTime = 0;
|
||||
j_velocity = j_sinAngle = j_cosAngle = j_xyspeed = 0.0f;
|
||||
u_unk1 = 0.0f;
|
||||
|
||||
// Read actual data
|
||||
Read(data);
|
||||
}
|
||||
|
||||
void MovementInfo::Read(ByteBuffer &data)
|
||||
{
|
||||
data >> moveFlags;
|
||||
|
|
@ -104,9 +85,7 @@ void MovementInfo::Read(ByteBuffer &data)
|
|||
|
||||
if(HasMovementFlag(MOVEFLAG_ONTRANSPORT))
|
||||
{
|
||||
if(!data.readPackGUID(t_guid))
|
||||
return;
|
||||
|
||||
data >> t_guid.ReadAsPacked();
|
||||
data >> t_pos.x;
|
||||
data >> t_pos.y;
|
||||
data >> t_pos.z;
|
||||
|
|
@ -139,7 +118,7 @@ void MovementInfo::Read(ByteBuffer &data)
|
|||
}
|
||||
}
|
||||
|
||||
void MovementInfo::Write(ByteBuffer &data)
|
||||
void MovementInfo::Write(ByteBuffer &data) const
|
||||
{
|
||||
data << moveFlags;
|
||||
data << moveFlags2;
|
||||
|
|
@ -151,8 +130,7 @@ void MovementInfo::Write(ByteBuffer &data)
|
|||
|
||||
if(HasMovementFlag(MOVEFLAG_ONTRANSPORT))
|
||||
{
|
||||
data.appendPackGUID(t_guid);
|
||||
|
||||
data << t_guid.WriteAsPacked();
|
||||
data << t_pos.x;
|
||||
data << t_pos.y;
|
||||
data << t_pos.z;
|
||||
|
|
@ -370,7 +348,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy
|
|||
float moveTime = (float)Time;
|
||||
|
||||
WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) );
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint8(0); // new in 3.1
|
||||
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
||||
data << uint32(getMSTime());
|
||||
|
|
@ -418,7 +396,7 @@ void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, Spl
|
|||
uint32 pathSize = end - start;
|
||||
|
||||
WorldPacket data( SMSG_MONSTER_MOVE, (GetPackGUID().size()+1+4+4+4+4+1+4+4+4+pathSize*4*3) );
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint8(0);
|
||||
data << GetPositionX();
|
||||
data << GetPositionY();
|
||||
|
|
@ -459,7 +437,7 @@ void Unit::BuildHeartBeatMsg(WorldPacket *data) const
|
|||
: MOVEFLAG_NONE;
|
||||
|
||||
data->Initialize(MSG_MOVE_HEARTBEAT, 32);
|
||||
data->append(GetPackGUID());
|
||||
*data << GetPackGUID();
|
||||
*data << uint32(move_flags); // movement flags
|
||||
*data << uint16(0); // 2.3.0
|
||||
*data << uint32(getMSTime()); // time
|
||||
|
|
@ -2651,8 +2629,8 @@ void Unit::SendMeleeAttackStop(Unit* victim)
|
|||
return;
|
||||
|
||||
WorldPacket data( SMSG_ATTACKSTOP, (4+16) ); // we guess size
|
||||
data.append(GetPackGUID());
|
||||
data.append(victim->GetPackGUID()); // can be 0x00...
|
||||
data << GetPackGUID();
|
||||
data << victim->GetPackGUID(); // can be 0x00...
|
||||
data << uint32(0); // can be 0x1
|
||||
SendMessageToSet(&data, true);
|
||||
sLog.outDetail("%s %u stopped attacking %s %u", (GetTypeId()==TYPEID_PLAYER ? "player" : "creature"), GetGUIDLow(), (victim->GetTypeId()==TYPEID_PLAYER ? "player" : "creature"),victim->GetGUIDLow());
|
||||
|
|
@ -4772,8 +4750,8 @@ void Unit::RemoveAllGameObjects()
|
|||
void Unit::SendSpellNonMeleeDamageLog(SpellNonMeleeDamage *log)
|
||||
{
|
||||
WorldPacket data(SMSG_SPELLNONMELEEDAMAGELOG, (16+4+4+4+1+4+4+1+1+4+4+1)); // we guess size
|
||||
data.append(log->target->GetPackGUID());
|
||||
data.append(log->attacker->GetPackGUID());
|
||||
data << log->target->GetPackGUID();
|
||||
data << log->attacker->GetPackGUID();
|
||||
data << uint32(log->SpellID);
|
||||
data << uint32(log->damage); // damage amount
|
||||
data << uint32(log->overkill); // overkill
|
||||
|
|
@ -4808,7 +4786,7 @@ void Unit::SendPeriodicAuraLog(SpellPeriodicAuraLogInfo *pInfo)
|
|||
Modifier *mod = aura->GetModifier();
|
||||
|
||||
WorldPacket data(SMSG_PERIODICAURALOG, 30);
|
||||
data.append(aura->GetTarget()->GetPackGUID());
|
||||
data << aura->GetTarget()->GetPackGUID();
|
||||
data.appendPackGUID(aura->GetCasterGUID());
|
||||
data << uint32(aura->GetId()); // spellId
|
||||
data << uint32(1); // count
|
||||
|
|
@ -4880,8 +4858,8 @@ void Unit::SendAttackStateUpdate(CalcDamageInfo *damageInfo)
|
|||
uint32 count = 1;
|
||||
WorldPacket data(SMSG_ATTACKERSTATEUPDATE, 16 + 45); // we guess size
|
||||
data << uint32(damageInfo->HitInfo);
|
||||
data.append(damageInfo->attacker->GetPackGUID());
|
||||
data.append(damageInfo->target->GetPackGUID());
|
||||
data << damageInfo->attacker->GetPackGUID();
|
||||
data << damageInfo->target->GetPackGUID();
|
||||
data << uint32(damageInfo->damage); // Full damage
|
||||
data << uint32(0); // overkill value
|
||||
data << uint8(count); // Sub damage count
|
||||
|
|
@ -8830,8 +8808,8 @@ void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, uint32
|
|||
{
|
||||
// we guess size
|
||||
WorldPacket data(SMSG_SPELLHEALLOG, (8+8+4+4+1));
|
||||
data.append(pVictim->GetPackGUID());
|
||||
data.append(GetPackGUID());
|
||||
data << pVictim->GetPackGUID();
|
||||
data << GetPackGUID();
|
||||
data << uint32(SpellID);
|
||||
data << uint32(Damage);
|
||||
data << uint32(OverHeal);
|
||||
|
|
@ -8843,8 +8821,8 @@ void Unit::SendHealSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, uint32
|
|||
void Unit::SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage, Powers powertype)
|
||||
{
|
||||
WorldPacket data(SMSG_SPELLENERGIZELOG, (8+8+4+4+4+1));
|
||||
data.append(pVictim->GetPackGUID());
|
||||
data.append(GetPackGUID());
|
||||
data << pVictim->GetPackGUID();
|
||||
data << GetPackGUID();
|
||||
data << uint32(SpellID);
|
||||
data << uint32(powertype);
|
||||
data << uint32(Damage);
|
||||
|
|
@ -10920,7 +10898,7 @@ void Unit::SetSpeedRate(UnitMoveType mtype, float rate, bool forced)
|
|||
return;
|
||||
}
|
||||
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint32(0); // movement flags
|
||||
data << uint16(0); // unk flags
|
||||
data << uint32(getMSTime());
|
||||
|
|
@ -10974,7 +10952,7 @@ void Unit::SetSpeedRate(UnitMoveType mtype, float rate, bool forced)
|
|||
sLog.outError("Unit::SetSpeedRate: Unsupported move type (%d), data not sent to client.",mtype);
|
||||
return;
|
||||
}
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << (uint32)0; // moveEvent, NUM_PMOVE_EVTS = 0x39
|
||||
if (mtype == MOVE_RUN)
|
||||
data << uint8(0); // new 2.1.0
|
||||
|
|
@ -11765,7 +11743,7 @@ void Unit::SetPower(Powers power, uint32 val)
|
|||
SetStatInt32Value(UNIT_FIELD_POWER1 + power, val);
|
||||
|
||||
WorldPacket data(SMSG_POWER_UPDATE);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint8(power);
|
||||
data << uint32(val);
|
||||
SendMessageToSet(&data, GetTypeId() == TYPEID_PLAYER ? true : false);
|
||||
|
|
@ -13515,7 +13493,7 @@ void Unit::KnockBackFrom(Unit* target, float horizontalSpeed, float verticalSpee
|
|||
if(GetTypeId()==TYPEID_PLAYER)
|
||||
{
|
||||
WorldPacket data(SMSG_MOVE_KNOCK_BACK, 8+4+4+4+4+4);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint32(0); // Sequence
|
||||
data << float(vcos); // x direction
|
||||
data << float(vsin); // y direction
|
||||
|
|
@ -13580,7 +13558,7 @@ void Unit::SendThreatUpdate()
|
|||
{
|
||||
sLog.outDebug( "WORLD: Send SMSG_THREAT_UPDATE Message" );
|
||||
WorldPacket data(SMSG_THREAT_UPDATE, 8 + count * 8);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data << uint32(count);
|
||||
for (ThreatList::const_iterator itr = tlist.begin(); itr != tlist.end(); ++itr)
|
||||
{
|
||||
|
|
@ -13598,7 +13576,7 @@ void Unit::SendHighestThreatUpdate(HostileReference* pHostilReference)
|
|||
{
|
||||
sLog.outDebug( "WORLD: Send SMSG_HIGHEST_THREAT_UPDATE Message" );
|
||||
WorldPacket data(SMSG_HIGHEST_THREAT_UPDATE, 8 + 8 + count * 8);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data.appendPackGUID(pHostilReference->getUnitGuid());
|
||||
data << uint32(count);
|
||||
for (ThreatList::const_iterator itr = tlist.begin(); itr != tlist.end(); ++itr)
|
||||
|
|
@ -13614,7 +13592,7 @@ void Unit::SendThreatClear()
|
|||
{
|
||||
sLog.outDebug( "WORLD: Send SMSG_THREAT_CLEAR Message" );
|
||||
WorldPacket data(SMSG_THREAT_CLEAR, 8);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
SendMessageToSet(&data, false);
|
||||
}
|
||||
|
||||
|
|
@ -13622,7 +13600,7 @@ void Unit::SendThreatRemove(HostileReference* pHostileReference)
|
|||
{
|
||||
sLog.outDebug( "WORLD: Send SMSG_THREAT_REMOVE Message" );
|
||||
WorldPacket data(SMSG_THREAT_REMOVE, 8 + 8);
|
||||
data.append(GetPackGUID());
|
||||
data << GetPackGUID();
|
||||
data.appendPackGUID(pHostileReference->getUnitGuid());
|
||||
SendMessageToSet(&data, false);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue