aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp40
-rw-r--r--src/server/game/Entities/Object/Updates/ViewerDependentValues.h29
2 files changed, 39 insertions, 30 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index 3bdf20610a7..9e9e0c4355e 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -38,7 +38,7 @@ namespace UF
void ObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Object const* owner, Player const* receiver) const
{
data << int32(EntryID);
- data << uint32(ViewerDependentValue<DynamicFlagsTag>::GetValue(DynamicFlags, owner, receiver));
+ data << uint32(ViewerDependentValue<DynamicFlagsTag>::GetValue(this, owner, receiver));
data << float(Scale);
}
@@ -60,7 +60,7 @@ void ObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ign
}
if (changesMask[2])
{
- data << uint32(ViewerDependentValue<DynamicFlagsTag>::GetValue(DynamicFlags, owner, receiver));
+ data << uint32(ViewerDependentValue<DynamicFlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[3])
{
@@ -932,10 +932,10 @@ bool PassiveSpellHistory::operator==(PassiveSpellHistory const& right) const
void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Unit const* owner, Player const* receiver) const
{
- data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(DisplayID, owner, receiver));
+ data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(this, owner, receiver));
for (std::size_t i = 0; i < 2; ++i)
{
- data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(NpcFlags[i], i, owner, receiver));
+ data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver));
}
data << uint32(StateSpellVisualID);
data << uint32(StateAnimID);
@@ -993,15 +993,15 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << int32(ScalingFactionGroup);
data << int32(ScalingHealthItemLevelCurveID);
data << int32(ScalingDamageItemLevelCurveID);
- data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(FactionTemplate, owner, receiver));
+ data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
for (std::size_t i = 0; i < 3; ++i)
{
VirtualItems[i].WriteCreate(data, owner, receiver);
}
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(Flags, owner, receiver));
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
data << uint32(Flags2);
data << uint32(Flags3);
- data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(AuraState, owner, receiver));
+ data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
for (std::size_t i = 0; i < 2; ++i)
{
data << uint32(AttackRoundBaseTime[i]);
@@ -1073,7 +1073,7 @@ void UnitData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi
data << int32(BaseHealth);
}
data << uint8(SheatheState);
- data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(PvpFlags, owner, receiver));
+ data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
data << uint8(PetFlags);
data << uint8(ShapeshiftForm);
if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner))
@@ -1232,7 +1232,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[5])
{
- data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(DisplayID, owner, receiver));
+ data << int32(ViewerDependentValue<DisplayIDTag>::GetValue(this, owner, receiver));
}
if (changesMask[6])
{
@@ -1379,11 +1379,11 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[42])
{
- data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(FactionTemplate, owner, receiver));
+ data << int32(ViewerDependentValue<FactionTemplateTag>::GetValue(this, owner, receiver));
}
if (changesMask[43])
{
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(Flags, owner, receiver));
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[44])
{
@@ -1395,7 +1395,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[46])
{
- data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(AuraState, owner, receiver));
+ data << uint32(ViewerDependentValue<AuraStateTag>::GetValue(this, owner, receiver));
}
if (changesMask[47])
{
@@ -1538,7 +1538,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
}
if (changesMask[82])
{
- data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(PvpFlags, owner, receiver));
+ data << uint8(ViewerDependentValue<PvpFlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[83])
{
@@ -1694,7 +1694,7 @@ void UnitData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor
{
if (changesMask[121 + i])
{
- data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(NpcFlags[i], i, owner, receiver));
+ data << uint32(ViewerDependentValue<NpcFlagsTag>::GetValue(this, i, owner, receiver));
}
}
}
@@ -4261,19 +4261,19 @@ void GameObjectData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fie
}
data << CreatedBy;
data << GuildGUID;
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(Flags, owner, receiver));
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
data << float(ParentRotation->x);
data << float(ParentRotation->y);
data << float(ParentRotation->z);
data << float(ParentRotation->w);
data << int32(FactionTemplate);
- data << int8(ViewerDependentValue<StateTag>::GetValue(State, owner, receiver));
+ data << int8(ViewerDependentValue<StateTag>::GetValue(this, owner, receiver));
data << int8(TypeID);
data << uint8(PercentHealth);
data << uint32(ArtKit);
data << uint32(EnableDoodadSets.size());
data << uint32(CustomParam);
- data << int32(ViewerDependentValue<LevelTag>::GetValue(Level, owner, receiver));
+ data << int32(ViewerDependentValue<LevelTag>::GetValue(this, owner, receiver));
data << uint32(AnimGroupInstance);
for (std::size_t i = 0; i < EnableDoodadSets.size(); ++i)
{
@@ -4359,7 +4359,7 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool
}
if (changesMask[11])
{
- data << uint32(ViewerDependentValue<FlagsTag>::GetValue(Flags, owner, receiver));
+ data << uint32(ViewerDependentValue<FlagsTag>::GetValue(this, owner, receiver));
}
if (changesMask[12])
{
@@ -4374,7 +4374,7 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool
}
if (changesMask[14])
{
- data << int8(ViewerDependentValue<StateTag>::GetValue(State, owner, receiver));
+ data << int8(ViewerDependentValue<StateTag>::GetValue(this, owner, receiver));
}
if (changesMask[15])
{
@@ -4394,7 +4394,7 @@ void GameObjectData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool
}
if (changesMask[19])
{
- data << int32(ViewerDependentValue<LevelTag>::GetValue(Level, owner, receiver));
+ data << int32(ViewerDependentValue<LevelTag>::GetValue(this, owner, receiver));
}
if (changesMask[20])
{
diff --git a/src/server/game/Entities/Object/Updates/ViewerDependentValues.h b/src/server/game/Entities/Object/Updates/ViewerDependentValues.h
index b60f95b5707..a2b20b2d216 100644
--- a/src/server/game/Entities/Object/Updates/ViewerDependentValues.h
+++ b/src/server/game/Entities/Object/Updates/ViewerDependentValues.h
@@ -40,8 +40,9 @@ class ViewerDependentValue<UF::ObjectData::DynamicFlagsTag>
public:
using value_type = UF::ObjectData::DynamicFlagsTag::value_type;
- static value_type GetValue(value_type dynamicFlags, Object const* object, Player const* receiver)
+ static value_type GetValue(UF::ObjectData const* objectData, Object const* object, Player const* receiver)
{
+ value_type dynamicFlags = objectData->DynamicFlags;
if (Unit const* unit = object->ToUnit())
{
dynamicFlags &= ~UNIT_DYNFLAG_TAPPED;
@@ -108,8 +109,9 @@ class ViewerDependentValue<UF::UnitData::DisplayIDTag>
public:
using value_type = UF::UnitData::DisplayIDTag::value_type;
- static value_type GetValue(value_type displayId, Unit const* unit, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* unitData, Unit const* unit, Player const* receiver)
{
+ value_type displayId = unitData->DisplayID;
if (unit->IsCreature())
{
CreatureTemplate const* cinfo = unit->ToCreature()->GetCreatureTemplate();
@@ -145,8 +147,9 @@ class ViewerDependentValue<UF::UnitData::FactionTemplateTag>
public:
using value_type = UF::UnitData::FactionTemplateTag::value_type;
- static value_type GetValue(value_type factionTemplate, Unit const* unit, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* unitData, Unit const* unit, Player const* receiver)
{
+ value_type factionTemplate = unitData->FactionTemplate;
if (unit->IsControlledByPlayer() && receiver != unit && sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && unit->IsInRaidWith(receiver))
{
FactionTemplateEntry const* ft1 = unit->GetFactionTemplateEntry();
@@ -166,8 +169,9 @@ class ViewerDependentValue<UF::UnitData::FlagsTag>
public:
using value_type = UF::UnitData::FlagsTag::value_type;
- static value_type GetValue(value_type flags, Unit const* /*unit*/, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* unitData, Unit const* /*unit*/, Player const* receiver)
{
+ value_type flags = unitData->Flags;
// Gamemasters should be always able to select units - remove not selectable flag
if (receiver->IsGameMaster())
flags &= ~UNIT_FLAG_NOT_SELECTABLE;
@@ -182,7 +186,7 @@ class ViewerDependentValue<UF::UnitData::AuraStateTag>
public:
using value_type = UF::UnitData::AuraStateTag::value_type;
- static value_type GetValue(value_type /*auraState*/, Unit const* unit, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* /*unitData*/, Unit const* unit, Player const* receiver)
{
// Check per caster aura states to not enable using a spell in client if specified aura is not by target
return unit->BuildAuraStateUpdateForTarget(receiver);
@@ -195,8 +199,9 @@ class ViewerDependentValue<UF::UnitData::PvpFlagsTag>
public:
using value_type = UF::UnitData::PvpFlagsTag::value_type;
- static value_type GetValue(value_type pvpFlags, Unit const* unit, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* unitData, Unit const* unit, Player const* receiver)
{
+ value_type pvpFlags = unitData->PvpFlags;
if (unit->IsControlledByPlayer() && receiver != unit && sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && unit->IsInRaidWith(receiver))
{
FactionTemplateEntry const* ft1 = unit->GetFactionTemplateEntry();
@@ -216,8 +221,9 @@ class ViewerDependentValue<UF::UnitData::NpcFlagsTag>
public:
using value_type = UF::UnitData::NpcFlagsTag::value_type;
- static value_type GetValue(value_type npcFlag, uint32 i, Unit const* unit, Player const* receiver)
+ static value_type GetValue(UF::UnitData const* unitData, uint32 i, Unit const* unit, Player const* receiver)
{
+ value_type npcFlag = unitData->NpcFlags[i];
if (i == 0 && unit->IsCreature() && !receiver->CanSeeSpellClickOn(unit->ToCreature()))
npcFlag &= ~UNIT_NPC_FLAG_SPELLCLICK;
@@ -231,8 +237,9 @@ class ViewerDependentValue<UF::GameObjectData::FlagsTag>
public:
using value_type = UF::GameObjectData::FlagsTag::value_type;
- static value_type GetValue(value_type flags, GameObject const* gameObject, Player const* receiver)
+ static value_type GetValue(UF::GameObjectData const* gameObjectData, GameObject const* gameObject, Player const* receiver)
{
+ value_type flags = gameObjectData->Flags;
if (gameObject->GetGoType() == GAMEOBJECT_TYPE_CHEST)
if (gameObject->GetGOInfo()->chest.usegrouplootrules && !gameObject->IsLootAllowedFor(receiver))
flags |= GO_FLAG_LOCKED | GO_FLAG_NOT_SELECTABLE;
@@ -247,8 +254,9 @@ class ViewerDependentValue<UF::GameObjectData::LevelTag>
public:
using value_type = UF::GameObjectData::LevelTag::value_type;
- static value_type GetValue(value_type level, GameObject const* gameObject, Player const* /*receiver*/)
+ static value_type GetValue(UF::GameObjectData const* gameObjectData, GameObject const* gameObject, Player const* /*receiver*/)
{
+ value_type level = gameObjectData->Level;
bool isStoppableTransport = gameObject->GetGoType() == GAMEOBJECT_TYPE_TRANSPORT && !gameObject->GetGOValue()->Transport.StopFrames->empty();
return isStoppableTransport ? gameObject->GetGOValue()->Transport.PathProgress : level;
}
@@ -260,8 +268,9 @@ class ViewerDependentValue<UF::GameObjectData::StateTag>
public:
using value_type = UF::GameObjectData::StateTag::value_type;
- static value_type GetValue(value_type state, GameObject const* gameObject, Player const* /*receiver*/)
+ static value_type GetValue(UF::GameObjectData const* gameObjectData, GameObject const* gameObject, Player const* /*receiver*/)
{
+ value_type state = gameObjectData->State;
bool isStoppableTransport = gameObject->GetGoType() == GAMEOBJECT_TYPE_TRANSPORT && !gameObject->GetGOValue()->Transport.StopFrames->empty();
if (isStoppableTransport && gameObject->GetGoState() == GO_STATE_TRANSPORT_ACTIVE)
if ((gameObject->GetGOValue()->Transport.StateUpdateTimer / 20000) & 1)