diff options
author | Shauren <shauren.trinity@gmail.com> | 2021-02-27 01:44:44 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-02-27 01:44:44 +0100 |
commit | ec9f5be6a657003a94f95b4e4067a37a9f113c7c (patch) | |
tree | a1c3117f4f9cf3a32975000e29855041c05cdeaf /src/server/game/Phasing/PhaseShift.cpp | |
parent | c9344c145ad1f981492c35d4aad7ca7a60e9f8f2 (diff) |
Core/Phasing: Implemented setting personal guid on PhaseShift
Diffstat (limited to 'src/server/game/Phasing/PhaseShift.cpp')
-rw-r--r-- | src/server/game/Phasing/PhaseShift.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/server/game/Phasing/PhaseShift.cpp b/src/server/game/Phasing/PhaseShift.cpp index 16ed9aaa5e8..c5c0bba5549 100644 --- a/src/server/game/Phasing/PhaseShift.cpp +++ b/src/server/game/Phasing/PhaseShift.cpp @@ -82,7 +82,6 @@ PhaseShift::EraseResult<PhaseShift::UiMapPhaseIdContainer> PhaseShift::RemoveUiM void PhaseShift::Clear() { ClearPhases(); - PersonalGuid.Clear(); VisibleMapIds.clear(); UiMapPhaseIds.clear(); } @@ -90,9 +89,11 @@ void PhaseShift::Clear() void PhaseShift::ClearPhases() { Flags &= PhaseShiftFlags::AlwaysVisible | PhaseShiftFlags::Inverse; + PersonalGuid.Clear(); Phases.clear(); NonCosmeticReferences = 0; CosmeticReferences = 0; + PersonalReferences = 0; DefaultReferences = 0; UpdateUnphasedFlag(); } @@ -126,12 +127,12 @@ bool PhaseShift::CanSee(PhaseShift const& other) const if (phaseShift.Flags.HasFlag(PhaseShiftFlags::Unphased) && !excludedPhaseShift.Flags.HasFlag(PhaseShiftFlags::InverseUnphased)) return true; - for (auto itr = phaseShift.Phases.begin(); itr != phaseShift.Phases.end(); ++itr) + for (PhaseRef const& phase : phaseShift.Phases) { - if (itr->Flags.HasFlag(excludePhasesWithFlag)) + if (phase.Flags.HasFlag(excludePhasesWithFlag)) continue; - auto itr2 = std::find(excludedPhaseShift.Phases.begin(), excludedPhaseShift.Phases.end(), *itr); + auto itr2 = std::find(excludedPhaseShift.Phases.begin(), excludedPhaseShift.Phases.end(), phase); if (itr2 == excludedPhaseShift.Phases.end() || itr2->Flags.HasFlag(excludePhasesWithFlag)) return true; } @@ -158,12 +159,16 @@ void PhaseShift::ModifyPhasesReferences(PhaseContainer::iterator itr, int32 refe else DefaultReferences += references; + if (itr->Flags.HasFlag(PhaseFlags::Personal)) + PersonalReferences += references; + if (CosmeticReferences) Flags |= PhaseShiftFlags::NoCosmetic; else Flags &= ~PhaseShiftFlags::NoCosmetic; UpdateUnphasedFlag(); + UpdatePersonalGuid(); } } @@ -176,3 +181,9 @@ void PhaseShift::UpdateUnphasedFlag() else Flags |= unphasedFlag; } + +void PhaseShift::UpdatePersonalGuid() +{ + if (!PersonalReferences) + PersonalGuid.Clear(); +} |