aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Phasing/PhaseShift.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-02-27 01:44:44 +0100
committerShauren <shauren.trinity@gmail.com>2021-02-27 01:44:44 +0100
commitec9f5be6a657003a94f95b4e4067a37a9f113c7c (patch)
treea1c3117f4f9cf3a32975000e29855041c05cdeaf /src/server/game/Phasing/PhaseShift.cpp
parentc9344c145ad1f981492c35d4aad7ca7a60e9f8f2 (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.cpp19
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();
+}