Core/Phases: do not send phase ids of phases without flag PHASE_FLAG_SEND_TO_CLIENT
This commit is contained in:
1 parent
af23b9a123
commit
21a8f028b0
3 files changed
+16
-9
No files matched your search
@@ -470,9 +470,10 @@ enum MountCapabilityFlags
|
||||
|
||||
enum PhaseEntryFlags : uint16
|
||||
{
|
||||
PHASE_FLAG_NORMAL = 0x08,
|
||||
PHASE_FLAG_COSMETIC = 0x10,
|
||||
PHASE_FLAG_PERSONAL = 0x20
|
||||
PHASE_FLAG_SEND_TO_CLIENT = 0x04,
|
||||
PHASE_FLAG_NORMAL = 0x08,
|
||||
PHASE_FLAG_COSMETIC = 0x10,
|
||||
PHASE_FLAG_PERSONAL = 0x20
|
||||
};
|
||||
|
||||
// PhaseUseFlags fields in different DBCs
|
||||
|
||||
@@ -43,9 +43,10 @@ enum class PhaseShiftFlags : uint32
|
||||
|
||||
enum class PhaseFlags : uint16
|
||||
{
|
||||
None = 0x0,
|
||||
Cosmetic = 0x1,
|
||||
Personal = 0x2
|
||||
None = 0x0,
|
||||
Cosmetic = 0x1,
|
||||
Personal = 0x2,
|
||||
SendToClient = 0x4
|
||||
};
|
||||
|
||||
class TC_GAME_API PhaseShift
|
||||
|
||||
@@ -36,6 +36,9 @@ inline PhaseFlags GetPhaseFlags(uint32 phaseId)
|
||||
{
|
||||
if (PhaseEntry const* phase = sPhaseStore.LookupEntry(phaseId))
|
||||
{
|
||||
if (phase->Flags & PHASE_FLAG_SEND_TO_CLIENT)
|
||||
return PhaseFlags::SendToClient;
|
||||
|
||||
if (phase->Flags & PHASE_FLAG_COSMETIC)
|
||||
return PhaseFlags::Cosmetic;
|
||||
|
||||
@@ -398,9 +401,11 @@ void PhasingHandler::SendToPlayer(Player const* player, PhaseShift const& phaseS
|
||||
WorldPackets::Misc::PhaseShiftChange phaseShiftChange;
|
||||
phaseShiftChange.Client = player->GetGUID();
|
||||
phaseShiftChange.Phaseshift.PhaseShiftFlags = phaseShift.Flags.AsUnderlyingType();
|
||||
phaseShiftChange.Phaseshift.Phases.reserve(phaseShift.Phases.size());
|
||||
std::transform(phaseShift.Phases.begin(), phaseShift.Phases.end(), std::back_inserter(phaseShiftChange.Phaseshift.Phases),
|
||||
[](PhaseShift::PhaseRef const& phase) -> uint16 { return phase.Id; });
|
||||
|
||||
for (auto phase : phaseShift.Phases)
|
||||
if (phase.Flags.HasFlag(PhaseFlags::SendToClient))
|
||||
phaseShiftChange.Phaseshift.Phases.push_back(phase.Id);
|
||||
|
||||
phaseShiftChange.VisibleMapIDs.reserve(phaseShift.VisibleMapIds.size());
|
||||
std::transform(phaseShift.VisibleMapIds.begin(), phaseShift.VisibleMapIds.end(), std::back_inserter(phaseShiftChange.VisibleMapIDs),
|
||||
[](PhaseShift::VisibleMapIdContainer::value_type const& visibleMapId) { return visibleMapId.first; });
|
||||
|
||||
Reference in new issue
Block a user