Exemplo n.º 1
0
		public byte[] GetByteArray(UpdateFieldId field)
		{
			return m_updateValues[field.RawId].ByteArray;
		}
Exemplo n.º 2
0
 public int GetInt(UpdateFieldId id)
 {
     return Values.GetInt32((uint)id.RawId);
 }
Exemplo n.º 3
0
 public byte GetByte(UpdateFieldId id)
 {
     var i = (uint)id.RawId * 4;
     if (Values.Length < i + 1)
     {
         return 0;
     }
     return Values[i];
 }
Exemplo n.º 4
0
		public void PushFieldUpdateToPlayer(Character character, UpdateFieldId field, byte[] value)
		{
			using (var packet = GetFieldUpdatePacket(field, value))
			{
				SendUpdatePacket(character, packet);
			}
		}
Exemplo n.º 5
0
 public ulong GetULong(UpdateFieldId id)
 {
     return Values.GetUInt64((uint)id.RawId);
 }
Exemplo n.º 6
0
		public void PushFieldUpdate(UpdateFieldId field, EntityId value)
		{
			if (!IsInWorld)
			{
				// set the value and don't push, we aren't in game so we'll get it on the next self full update
				SetEntityId(field, value);

				return;
			}

			using (var packet = GetFieldUpdatePacket(field, value))
			{
				SendUpdatePacket(this, packet);
			}
		}
Exemplo n.º 7
0
		protected UpdatePacket GetFieldUpdatePacket(UpdateFieldId field, byte[] value)
		{
			var blocks = (field.RawId >> 5) + 1;
			var emptyBlockSize = (blocks - 1) * 4;

			//UpdatePacket packet = new UpdatePacket(BufferManager.Small.CheckOut());
			var packet = new UpdatePacket { Position = 4 };

			packet.Write(1); // Update Count
			packet.Write((byte)UpdateType.Values);

			EntityId.WritePacked(packet);

			packet.Write((byte)blocks);

			//packet.TotalLength += emptyBlockSize;
			packet.Zero(emptyBlockSize);

			packet.Write(1 << (field.RawId & 31));
			packet.Write(value);

			return packet;
		}
Exemplo n.º 8
0
 public void SetUInt32(UpdateFieldId field, uint value)
 {
     SetUInt32(field.RawId, value);
 }
Exemplo n.º 9
0
 public void SetUInt64(UpdateFieldId field, ulong value)
 {
     SetUInt64(field.RawId, value);
 }
Exemplo n.º 10
0
 public void SetUInt16High(UpdateFieldId field, ushort value)
 {
     SetUInt16High(field.RawId, value);
 }
Exemplo n.º 11
0
 public float GetFloat(UpdateFieldId field)
 {
     return m_updateValues[field.RawId].Float;
 }
Exemplo n.º 12
0
 public void SetInt16Low(UpdateFieldId field, short value)
 {
     SetInt16Low(field.RawId, value);
 }
Exemplo n.º 13
0
 public void SetFloat(UpdateFieldId field, float value)
 {
     SetFloat(field.RawId, value);
 }
Exemplo n.º 14
0
 public byte GetByte(UpdateFieldId field, int index)
 {
     return m_updateValues[field.RawId].GetByte(index);
 }
Exemplo n.º 15
0
		/// <summary>
		/// Sends a manual update field refresh to all nearby characters.
		/// </summary>
		/// <param name="field">the field to refresh</param>
		public void SendFieldUpdateToArea(UpdateFieldId field)
		{
			if (IsAreaActive)
			{
				var value = GetUInt32(field.RawId);
				using (var packet = GetFieldUpdatePacket(field, value))
				{
					SendPacketToArea(packet);
				}
			}
		}
Exemplo n.º 16
0
 public void SetEntityId(UpdateFieldId field, EntityId id)
 {
     SetEntityId(field.RawId, id);
 }
Exemplo n.º 17
0
		/// <summary>
		/// Sends a manual update field refresh to all nearby characters.
		/// </summary>
		/// <param name="field">the field to refresh</param>
		public void SendFieldUpdateTo(IPacketReceiver rcv, UpdateFieldId field)
		{
			if (IsAreaActive)
			{
				var value = GetUInt32(field.RawId);
				using (var packet = GetFieldUpdatePacket(field, value))
				{
					rcv.Send(packet);
				}
			}
		}
Exemplo n.º 18
0
 public short GetInt16Low(UpdateFieldId field)
 {
     return m_updateValues[field.RawId].Int16Low;
 }
Exemplo n.º 19
0
		protected void WriteSpontaneousUpdate(UpdateMask mask, UpdatePacket packet, Character receiver, UpdateFieldId[] indices, bool visible)
		{
			// create mask
            for (var i = 0; i < indices.Length; i++)
            {
            	var index = indices[i].RawId;
            	var field = UpdateFieldMgr.Get(ObjectTypeId).Fields[index];
				for (var j = 0; j < field.Size; j++)
				{
					mask.SetBit(index + j);
				}
            }

			// write mask
			mask.WriteTo(packet);

			// write values
			for (var i = mask.m_lowestIndex; i <= mask.m_highestIndex; i++)
			{
				if (mask.GetBit(i))
				{
					if (visible)
					{
						WriteUpdateValue(packet, receiver, i);
					}
					else
					{
						packet.Write(0);
					}
				}
			}
		}
Exemplo n.º 20
0
 public void SetByteArray(UpdateFieldId field, byte[] value)
 {
     SetByteArray(field.RawId, value);
 }
Exemplo n.º 21
0
		protected UpdatePacket GetFieldUpdatePacket(UpdateFieldId field, EntityId value)
		{
			//UpdatePacket packet = new UpdatePacket(BufferManager.Small.CheckOut());
			var packet = new UpdatePacket(128) { Position = 4 };

			packet.Write(1); // Update Count
			packet.Write((byte)UpdateType.Values);

			EntityId.WritePacked(packet);

			var blocks = (byte)((field.RawId + 1) / 32 + 2);
			packet.Write(blocks);

			if (blocks > 1)
			{
				packet.Zero((blocks - 2) * 4);

				var updateBlocks = new int[blocks];

				updateBlocks[field.RawId << 5] = (1 << (field.RawId & 31));
				updateBlocks[field.RawId + 1 << 5] = (1 << (field.RawId + 1 & 31));

				packet.Write(updateBlocks[0]);
				packet.Write(updateBlocks[1]);
			}
			else
			{
				packet.Zero((blocks - 1) * 4);
				packet.Write((1 << (field.RawId & 31) | 1 << (field.RawId + 1 & 31)));
			}

			packet.Write(value);

			return packet;
		}
Exemplo n.º 22
0
 /// <summary>
 /// Sets a specified byte of an updatefield to the specified value
 /// </summary>
 /// <param name="field">The field to set</param>
 /// <param name="index">The index of the byte in the 4-byte field. (Ranges from 0-3)</param>
 /// <param name="value">The value to set</param>
 public void SetByte(UpdateFieldId field, int index, byte value)
 {
     SetByte(field.RawId, index, value);
 }
Exemplo n.º 23
0
 /// <summary>
 /// 16 Initial item slots
 /// </summary>
 public ContainerInventory(Container owner, UpdateFieldId baseField, int slots)
     : base(owner, baseField, slots)
 {
 }
Exemplo n.º 24
0
 /// <summary>
 /// Marks the given UpdateField for an Update.
 /// Marked UpdateFields will be re-sent to all surrounding Characters.
 /// </summary>
 protected internal void MarkUpdate(UpdateFieldId index)
 {
     MarkUpdate(index.RawId);
 }
Exemplo n.º 25
0
 public float GetFloat(UpdateFieldId id)
 {
     return Values.GetFloat((uint)id.RawId);
 }
Exemplo n.º 26
0
 public ushort GetUInt16High(UpdateFieldId field)
 {
     return m_updateValues[field.RawId].UInt16High;
 }
Exemplo n.º 27
0
 public ushort GetUShort(UpdateFieldId id)
 {
     return Values.GetUInt16((uint)id.RawId);
 }
Exemplo n.º 28
0
		/// <summary>
		/// Sends a manual update field change to all nearby characters.
		/// </summary>
		/// <param name="field">the field to update</param>
		/// <param name="value">the value to update it to</param>
		public void SendFieldUpdateToArea(UpdateFieldId field, uint value)
		{
			if (IsAreaActive)
			{
				using (var packet = GetFieldUpdatePacket(field, value))
				{
					SendPacketToArea(packet);
				}
			}
		}
Exemplo n.º 29
0
 public bool IsSet(UpdateFieldId id)
 {
     var i = (uint)id.RawId * 4;
     if (Values.Length < i + 1)
     {
         return false;
     }
     return SetIndices.Contains((uint)id.RawId);
 }
Exemplo n.º 30
0
 public EntityId GetEntityId(UpdateFieldId field)
 {
     return GetEntityId(field.RawId);
 }