示例#1
0
        void BuildValuesUpdateForPlayerWithMask(UpdateData data, UpdateMask requestedObjectMask, UpdateMask requestedItemMask, UpdateMask requestedAzeriteItemMask, Player target)
        {
            UpdateFieldFlag flags      = GetUpdateFieldFlagsFor(target);
            UpdateMask      valuesMask = new UpdateMask((int)TypeId.Max);

            if (requestedObjectMask.IsAnySet())
            {
                valuesMask.Set((int)TypeId.Object);
            }

            m_itemData.FilterDisallowedFieldsMaskForFlag(requestedItemMask, flags);
            if (requestedItemMask.IsAnySet())
            {
                valuesMask.Set((int)TypeId.Item);
            }

            m_azeriteItemData.FilterDisallowedFieldsMaskForFlag(requestedAzeriteItemMask, flags);
            if (requestedAzeriteItemMask.IsAnySet())
            {
                valuesMask.Set((int)TypeId.AzeriteItem);
            }

            WorldPacket buffer = new WorldPacket();

            buffer.WriteUInt32(valuesMask.GetBlock(0));

            if (valuesMask[(int)TypeId.Object])
            {
                m_objectData.WriteUpdate(buffer, requestedObjectMask, true, this, target);
            }

            if (valuesMask[(int)TypeId.Item])
            {
                m_itemData.WriteUpdate(buffer, requestedItemMask, true, this, target);
            }

            if (valuesMask[(int)TypeId.AzeriteItem])
            {
                m_azeriteItemData.WriteUpdate(buffer, requestedAzeriteItemMask, true, this, target);
            }

            WorldPacket buffer1 = new WorldPacket();

            buffer1.WriteUInt8((byte)UpdateType.Values);
            buffer1.WritePackedGuid(GetGUID());
            buffer1.WriteUInt32(buffer.GetSize());
            buffer1.WriteBytes(buffer.GetData());

            data.AddUpdateBlock(buffer1);
        }
示例#2
0
        void BuildValuesUpdateForPlayerWithMask(UpdateData data, UpdateMask requestedObjectMask, UpdateMask requestedDynamicObjectMask, Player target)
        {
            UpdateMask valuesMask = new UpdateMask((int)TypeId.Max);

            if (requestedObjectMask.IsAnySet())
            {
                valuesMask.Set((int)TypeId.Object);
            }

            if (requestedDynamicObjectMask.IsAnySet())
            {
                valuesMask.Set((int)TypeId.DynamicObject);
            }

            WorldPacket buffer = new WorldPacket();

            buffer.WriteUInt32(valuesMask.GetBlock(0));

            if (valuesMask[(int)TypeId.Object])
            {
                m_objectData.WriteUpdate(buffer, requestedObjectMask, true, this, target);
            }

            if (valuesMask[(int)TypeId.DynamicObject])
            {
                m_dynamicObjectData.WriteUpdate(buffer, requestedDynamicObjectMask, true, this, target);
            }

            WorldPacket buffer1 = new WorldPacket();

            buffer1.WriteUInt8((byte)UpdateType.Values);
            buffer1.WritePackedGuid(GetGUID());
            buffer1.WriteUInt32(buffer.GetSize());
            buffer1.WriteBytes(buffer.GetData());

            data.AddUpdateBlock(buffer1);
        }
示例#3
0
        public override void BuildValuesUpdateWithFlag(WorldPacket data, UpdateFieldFlag flags, Player target)
        {
            UpdateMask valuesMask = new UpdateMask(14);

            valuesMask.Set((int)TypeId.Item);
            valuesMask.Set((int)TypeId.AzeriteItem);

            WorldPacket buffer = new WorldPacket();

            buffer.WriteUInt32(valuesMask.GetBlock(0));

            UpdateMask mask = new UpdateMask(40);

            m_itemData.AppendAllowedFieldsMaskForFlag(mask, flags);
            m_itemData.WriteUpdate(buffer, mask, true, this, target);

            UpdateMask mask2 = new UpdateMask(9);

            m_azeriteItemData.AppendAllowedFieldsMaskForFlag(mask2, flags);
            m_azeriteItemData.WriteUpdate(buffer, mask2, true, this, target);

            data.WriteUInt32(buffer.GetSize());
            data.WriteBytes(buffer);
        }
示例#4
0
        public UpdateField <UU> ModifyValue <U, UU>(Expression <Func <U, UpdateField <UU> > > expression) where UU : new()
        {
            var fieldInfo = ((MemberExpression)expression.Body).Member as FieldInfo;

            if (fieldInfo == null)
            {
                throw new ArgumentException("The lambda expression 'property' should point to a valid Property");
            }

            var updateField = (UpdateField <UU>)fieldInfo.GetValue(this);

            _changesMask.Set(updateField.BlockBit);
            _changesMask.Set(updateField.Bit);
            return(updateField);
        }
示例#5
0
 public BaseUpdateData <T> ModifyValue <T>(BaseUpdateData <T> updateData)
 {
     _changesMask.Set(updateData.Bit);
     return(updateData);
 }
示例#6
0
 public DynamicUpdateField <U> ModifyValue <U>(DynamicUpdateField <U> updateField) where U : new()
 {
     _changesMask.Set(updateField.BlockBit);
     _changesMask.Set(updateField.Bit);
     return(updateField);
 }