aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Phasing/PhasingHandler.cpp
diff options
context:
space:
mode:
authorMatan Shukry <matanshukry@gmail.com>2021-12-28 14:24:10 +0200
committerGitHub <noreply@github.com>2021-12-28 13:24:10 +0100
commit8fabe5a3aacf7797f03d074ab8434f445be64955 (patch)
treedd3c977290be47d5a708947893c3544678045194 /src/server/game/Phasing/PhasingHandler.cpp
parent1aad7f8ddd486e60f76730d3baa36ec63711c7e8 (diff)
Core/Phasing: Implemented db spawns in personal phases (#26345)
Co-authored-by: Shauren <shauren.trinity@gmail.com>
Diffstat (limited to 'src/server/game/Phasing/PhasingHandler.cpp')
-rw-r--r--src/server/game/Phasing/PhasingHandler.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp
index e1432b49351..31a28010c71 100644
--- a/src/server/game/Phasing/PhasingHandler.cpp
+++ b/src/server/game/Phasing/PhasingHandler.cpp
@@ -496,6 +496,13 @@ void PhasingHandler::InitDbPhaseShift(PhaseShift& phaseShift, uint8 phaseUseFlag
phaseShift.Flags = flags;
}
+void PhasingHandler::InitDbPersonalOwnership(PhaseShift& phaseShift, ObjectGuid const& personalGuid)
+{
+ ASSERT(phaseShift.IsDbPhaseShift);
+ ASSERT(phaseShift.HasPersonalPhase());
+ phaseShift.PersonalGuid = personalGuid;
+}
+
void PhasingHandler::InitDbVisibleMapId(PhaseShift& phaseShift, int32 visibleMapId)
{
phaseShift.VisibleMapIds.clear();
@@ -551,9 +558,18 @@ void PhasingHandler::SetInversed(WorldObject* object, bool apply, bool updateVis
UpdateVisibilityIfNeeded(object, updateVisibility, true);
}
-void PhasingHandler::PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift)
+void PhasingHandler::PrintToChat(ChatHandler* chat, WorldObject const* target)
{
- chat->PSendSysMessage(LANG_PHASESHIFT_STATUS, phaseShift.Flags.AsUnderlyingType(), phaseShift.PersonalGuid.ToString().c_str());
+ PhaseShift const& phaseShift = target->GetPhaseShift();
+
+ std::string phaseOwnerName = "N/A";
+ if (phaseShift.HasPersonalPhase())
+ if (WorldObject* personalGuid = ObjectAccessor::GetWorldObject(*target, phaseShift.PersonalGuid))
+ phaseOwnerName = personalGuid->GetName();
+
+ chat->PSendSysMessage(LANG_PHASESHIFT_STATUS, phaseShift.Flags.AsUnderlyingType(),
+ phaseShift.PersonalGuid.ToString().c_str(), phaseOwnerName.c_str());
+
if (!phaseShift.Phases.empty())
{
std::ostringstream phases;
@@ -601,6 +617,14 @@ std::string PhasingHandler::FormatPhases(PhaseShift const& phaseShift)
return phases.str();
}
+bool PhasingHandler::IsPersonalPhase(uint32 phaseId)
+{
+ if (PhaseEntry const* phase = sPhaseStore.LookupEntry(phaseId))
+ return phase->GetFlags().HasFlag(PhaseEntryFlags::Personal);
+
+ return false;
+}
+
void PhasingHandler::UpdateVisibilityIfNeeded(WorldObject* object, bool updateVisibility, bool changed)
{
if (changed && object->IsInWorld())