Core/Objects: Added helper structures to allow using customized updatefield sending packet functions with Trinity::MessageDistDeliverer
Port From (https://github.com/TrinityCore/TrinityCore/commit/ee835671b4f572f92f79c9b302764ee591c6de11)
This commit is contained in:
@@ -660,15 +660,15 @@ namespace Game.Entities
|
|||||||
switch (action.TargetType)
|
switch (action.TargetType)
|
||||||
{
|
{
|
||||||
case AreaTriggerActionUserTypes.Friend:
|
case AreaTriggerActionUserTypes.Friend:
|
||||||
return caster.IsValidAssistTarget(unit, Global.SpellMgr.GetSpellInfo(action.Param, caster.GetMap().GetDifficultyID()));
|
return caster.IsValidAssistTarget(unit, Global.SpellMgr.GetSpellInfo(action.Param, caster.GetMap().GetDifficultyID()));
|
||||||
case AreaTriggerActionUserTypes.Enemy:
|
case AreaTriggerActionUserTypes.Enemy:
|
||||||
return caster.IsValidAttackTarget(unit, Global.SpellMgr.GetSpellInfo(action.Param, caster.GetMap().GetDifficultyID()));
|
return caster.IsValidAttackTarget(unit, Global.SpellMgr.GetSpellInfo(action.Param, caster.GetMap().GetDifficultyID()));
|
||||||
case AreaTriggerActionUserTypes.Raid:
|
case AreaTriggerActionUserTypes.Raid:
|
||||||
return caster.IsInRaidWith(unit);
|
return caster.IsInRaidWith(unit);
|
||||||
case AreaTriggerActionUserTypes.Party:
|
case AreaTriggerActionUserTypes.Party:
|
||||||
return caster.IsInPartyWith(unit);
|
return caster.IsInPartyWith(unit);
|
||||||
case AreaTriggerActionUserTypes.Caster:
|
case AreaTriggerActionUserTypes.Caster:
|
||||||
return unit.GetGUID() == caster.GetGUID();
|
return unit.GetGUID() == caster.GetGUID();
|
||||||
case AreaTriggerActionUserTypes.Any:
|
case AreaTriggerActionUserTypes.Any:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -996,7 +996,7 @@ namespace Game.Entities
|
|||||||
data.WriteBytes(buffer);
|
data.WriteBytes(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BuildValuesUpdateForPlayerWithMask(UpdateData data, UpdateMask requestedObjectMask, UpdateMask requestedAreaTriggerMask, Player target)
|
public void BuildValuesUpdateForPlayerWithMask(UpdateData data, UpdateMask requestedObjectMask, UpdateMask requestedAreaTriggerMask, Player target)
|
||||||
{
|
{
|
||||||
UpdateMask valuesMask = new((int)TypeId.Max);
|
UpdateMask valuesMask = new((int)TypeId.Max);
|
||||||
if (requestedObjectMask.IsAnySet())
|
if (requestedObjectMask.IsAnySet())
|
||||||
@@ -1112,5 +1112,27 @@ namespace Game.Entities
|
|||||||
List<ObjectGuid> _insideUnits = new();
|
List<ObjectGuid> _insideUnits = new();
|
||||||
|
|
||||||
AreaTriggerAI _ai;
|
AreaTriggerAI _ai;
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
AreaTrigger Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
AreaTriggerFieldData AreaTriggerMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(AreaTrigger owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), AreaTriggerMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject updateObject);
|
||||||
|
player.SendPacket(updateObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ using Framework.Constants;
|
|||||||
using Game.DataStorage;
|
using Game.DataStorage;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
using Game.Networking;
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
using Game.Spells;
|
using Game.Spells;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -326,5 +327,27 @@ namespace Game.Entities
|
|||||||
|
|
||||||
Dictionary<(Locale locale, uint lineId), TimeSpan> _lineStartTimes = new();
|
Dictionary<(Locale locale, uint lineId), TimeSpan> _lineStartTimes = new();
|
||||||
TimeSpan[] _lastLineEndTimes = new TimeSpan[(int)Locale.Total];
|
TimeSpan[] _lastLineEndTimes = new TimeSpan[(int)Locale.Total];
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Conversation Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
ConversationData ConversationMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Conversation owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), ConversationMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,15 +15,16 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
using Framework.Collections;
|
||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Framework.Database;
|
using Framework.Database;
|
||||||
using Game.DataStorage;
|
using Game.DataStorage;
|
||||||
using Game.Loots;
|
using Game.Loots;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Framework.Collections;
|
|
||||||
using Game.Networking;
|
|
||||||
|
|
||||||
namespace Game.Entities
|
namespace Game.Entities
|
||||||
{
|
{
|
||||||
@@ -168,7 +169,7 @@ namespace Game.Entities
|
|||||||
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
// 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||||
// SELECT posX, posY, posZ, orientation, mapId, displayId, itemCache, race, class, gender, flags, dynFlags, time, corpseType, instanceId, guid FROM corpse WHERE mapId = ? AND instanceId = ?
|
// SELECT posX, posY, posZ, orientation, mapId, displayId, itemCache, race, class, gender, flags, dynFlags, time, corpseType, instanceId, guid FROM corpse WHERE mapId = ? AND instanceId = ?
|
||||||
|
|
||||||
float posX = field.Read<float>(0);
|
float posX = field.Read<float>(0);
|
||||||
float posY = field.Read<float>(1);
|
float posY = field.Read<float>(1);
|
||||||
float posZ = field.Read<float>(2);
|
float posZ = field.Read<float>(2);
|
||||||
float o = field.Read<float>(3);
|
float o = field.Read<float>(3);
|
||||||
@@ -328,5 +329,27 @@ namespace Game.Entities
|
|||||||
CorpseType m_type;
|
CorpseType m_type;
|
||||||
long m_time;
|
long m_time;
|
||||||
CellCoord _cellCoord; // gride for corpse position for fast search
|
CellCoord _cellCoord; // gride for corpse position for fast search
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Corpse Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
CorpseData CorpseMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Corpse owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), CorpseMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Game.Spells;
|
|
||||||
using Game.Networking;
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
|
using Game.Spells;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Game.Entities
|
namespace Game.Entities
|
||||||
{
|
{
|
||||||
@@ -323,6 +325,28 @@ namespace Game.Entities
|
|||||||
Unit _caster;
|
Unit _caster;
|
||||||
int _duration; // for non-aura dynobjects
|
int _duration; // for non-aura dynobjects
|
||||||
bool _isViewpoint;
|
bool _isViewpoint;
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
DynamicObject Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
DynamicObjectData DynamicObjectMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(DynamicObject owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), DynamicObjectMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DynamicObjectType
|
public enum DynamicObjectType
|
||||||
|
|||||||
@@ -3110,6 +3110,28 @@ namespace Game.Entities
|
|||||||
|
|
||||||
ObjectGuid m_linkedTrap;
|
ObjectGuid m_linkedTrap;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
GameObject Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
GameObjectFieldData GameObjectMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(GameObject owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), GameObjectMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class GameObjectModelOwnerImpl : GameObjectModelOwnerBase
|
class GameObjectModelOwnerImpl : GameObjectModelOwnerBase
|
||||||
|
|||||||
@@ -15,11 +15,12 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Game.Networking;
|
|
||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Framework.Database;
|
using Framework.Database;
|
||||||
using Game.DataStorage;
|
using Game.DataStorage;
|
||||||
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace Game.Entities
|
namespace Game.Entities
|
||||||
@@ -241,9 +242,33 @@ namespace Game.Entities
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int GetMaxAzeritePowerTier() { return m_maxTier; }
|
public int GetMaxAzeritePowerTier() { return m_maxTier; }
|
||||||
|
|
||||||
public uint GetSelectedAzeritePower(int tier)
|
public uint GetSelectedAzeritePower(int tier)
|
||||||
{
|
{
|
||||||
return (uint)m_azeriteEmpoweredItemData.Selections[tier];
|
return (uint)m_azeriteEmpoweredItemData.Selections[tier];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
AzeriteEmpoweredItem Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
ItemData ItemMask = new();
|
||||||
|
AzeriteEmpoweredItemData AzeriteEmpoweredItemMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(AzeriteEmpoweredItem owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), ItemMask.GetUpdateMask(), AzeriteEmpoweredItemMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -541,6 +541,29 @@ namespace Game.Entities
|
|||||||
hasPreviousMilestone = false;
|
hasPreviousMilestone = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
AzeriteItem Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
ItemData ItemMask = new();
|
||||||
|
AzeriteItemData AzeriteItemMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(AzeriteItem owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), ItemMask.GetUpdateMask(), AzeriteItemMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AzeriteItemSelectedEssencesData
|
public class AzeriteItemSelectedEssencesData
|
||||||
|
|||||||
@@ -18,6 +18,8 @@
|
|||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Framework.Database;
|
using Framework.Database;
|
||||||
using Game.Networking;
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Game.Entities
|
namespace Game.Entities
|
||||||
{
|
{
|
||||||
@@ -280,5 +282,28 @@ namespace Game.Entities
|
|||||||
|
|
||||||
ContainerData m_containerData;
|
ContainerData m_containerData;
|
||||||
Item[] m_bagslot = new Item[36];
|
Item[] m_bagslot = new Item[36];
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Bag Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
ItemData ItemMask = new();
|
||||||
|
ContainerData ContainerMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Bag owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), ItemMask.GetUpdateMask(), ContainerMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2737,6 +2737,28 @@ namespace Game.Entities
|
|||||||
Dictionary<uint, ushort> m_artifactPowerIdToIndex = new();
|
Dictionary<uint, ushort> m_artifactPowerIdToIndex = new();
|
||||||
Array<uint> m_gemScalingLevels = new(ItemConst.MaxGemSockets);
|
Array<uint> m_gemScalingLevels = new(ItemConst.MaxGemSockets);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Item Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
ItemData ItemMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Item owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), ItemMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ItemPosCount
|
public class ItemPosCount
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Framework.Dynamic;
|
|
||||||
using Game.Achievements;
|
using Game.Achievements;
|
||||||
using Game.BattleGrounds;
|
using Game.BattleGrounds;
|
||||||
using Game.Chat;
|
using Game.Chat;
|
||||||
@@ -26,6 +25,7 @@ using Game.Groups;
|
|||||||
using Game.Mails;
|
using Game.Mails;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
using Game.Misc;
|
using Game.Misc;
|
||||||
|
using Game.Networking.Packets;
|
||||||
using Game.Spells;
|
using Game.Spells;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -259,6 +259,30 @@ namespace Game.Entities
|
|||||||
uint m_ingametime;
|
uint m_ingametime;
|
||||||
|
|
||||||
PlayerCommandStates _activeCheats;
|
PlayerCommandStates _activeCheats;
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Player Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
UnitData UnitMask = new();
|
||||||
|
PlayerData PlayerMask = new();
|
||||||
|
ActivePlayerData ActivePlayerMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Player owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), UnitMask.GetUpdateMask(), PlayerMask.GetUpdateMask(), ActivePlayerMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlayerInfo
|
public class PlayerInfo
|
||||||
|
|||||||
@@ -18,7 +18,9 @@
|
|||||||
using Framework.Constants;
|
using Framework.Constants;
|
||||||
using Game.Maps;
|
using Game.Maps;
|
||||||
using Game.Networking;
|
using Game.Networking;
|
||||||
|
using Game.Networking.Packets;
|
||||||
using Game.Spells;
|
using Game.Spells;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Game.Entities
|
namespace Game.Entities
|
||||||
{
|
{
|
||||||
@@ -26,7 +28,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
SceneObjectData m_sceneObjectData;
|
SceneObjectData m_sceneObjectData;
|
||||||
|
|
||||||
Position _stationaryPosition;
|
Position _stationaryPosition = new();
|
||||||
ObjectGuid _createdBySpellCast;
|
ObjectGuid _createdBySpellCast;
|
||||||
|
|
||||||
public SceneObject() : base(false)
|
public SceneObject() : base(false)
|
||||||
@@ -36,6 +38,9 @@ namespace Game.Entities
|
|||||||
|
|
||||||
m_updateFlag.Stationary = true;
|
m_updateFlag.Stationary = true;
|
||||||
m_updateFlag.SceneObject = true;
|
m_updateFlag.SceneObject = true;
|
||||||
|
|
||||||
|
m_sceneObjectData = new();
|
||||||
|
_stationaryPosition = new();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddToWorld()
|
public override void AddToWorld()
|
||||||
@@ -204,5 +209,27 @@ namespace Game.Entities
|
|||||||
void RelocateStationaryPosition(Position pos) { _stationaryPosition.Relocate(pos); }
|
void RelocateStationaryPosition(Position pos) { _stationaryPosition.Relocate(pos); }
|
||||||
|
|
||||||
public void SetCreatedBySpellCast(ObjectGuid castId) { _createdBySpellCast = castId; }
|
public void SetCreatedBySpellCast(ObjectGuid castId) { _createdBySpellCast = castId; }
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
SceneObject Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
SceneObjectData SceneObjectMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(SceneObject owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), SceneObjectMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,6 +137,28 @@ namespace Game.Entities
|
|||||||
ushort _aiAnimKitId;
|
ushort _aiAnimKitId;
|
||||||
ushort _movementAnimKitId;
|
ushort _movementAnimKitId;
|
||||||
ushort _meleeAnimKitId;
|
ushort _meleeAnimKitId;
|
||||||
|
|
||||||
|
class ValuesUpdateForPlayerWithMaskSender : IDoWork<Player>
|
||||||
|
{
|
||||||
|
Unit Owner;
|
||||||
|
ObjectFieldData ObjectMask = new();
|
||||||
|
UnitData UnitMask = new();
|
||||||
|
|
||||||
|
public ValuesUpdateForPlayerWithMaskSender(Unit owner)
|
||||||
|
{
|
||||||
|
Owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Invoke(Player player)
|
||||||
|
{
|
||||||
|
UpdateData udata = new(Owner.GetMapId());
|
||||||
|
|
||||||
|
Owner.BuildValuesUpdateForPlayerWithMask(udata, ObjectMask.GetUpdateMask(), UnitMask.GetUpdateMask(), player);
|
||||||
|
|
||||||
|
udata.BuildPacket(out UpdateObject packet);
|
||||||
|
player.SendPacket(packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct DiminishingReturn
|
public struct DiminishingReturn
|
||||||
|
|||||||
Reference in New Issue
Block a user