public byte[] GetByteArray(UpdateFieldId field) { return m_updateValues[field.RawId].ByteArray; }
public int GetInt(UpdateFieldId id) { return Values.GetInt32((uint)id.RawId); }
public byte GetByte(UpdateFieldId id) { var i = (uint)id.RawId * 4; if (Values.Length < i + 1) { return 0; } return Values[i]; }
public void PushFieldUpdateToPlayer(Character character, UpdateFieldId field, byte[] value) { using (var packet = GetFieldUpdatePacket(field, value)) { SendUpdatePacket(character, packet); } }
public ulong GetULong(UpdateFieldId id) { return Values.GetUInt64((uint)id.RawId); }
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); } }
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; }
public void SetUInt32(UpdateFieldId field, uint value) { SetUInt32(field.RawId, value); }
public void SetUInt64(UpdateFieldId field, ulong value) { SetUInt64(field.RawId, value); }
public void SetUInt16High(UpdateFieldId field, ushort value) { SetUInt16High(field.RawId, value); }
public float GetFloat(UpdateFieldId field) { return m_updateValues[field.RawId].Float; }
public void SetInt16Low(UpdateFieldId field, short value) { SetInt16Low(field.RawId, value); }
public void SetFloat(UpdateFieldId field, float value) { SetFloat(field.RawId, value); }
public byte GetByte(UpdateFieldId field, int index) { return m_updateValues[field.RawId].GetByte(index); }
/// <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); } } }
public void SetEntityId(UpdateFieldId field, EntityId id) { SetEntityId(field.RawId, id); }
/// <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); } } }
public short GetInt16Low(UpdateFieldId field) { return m_updateValues[field.RawId].Int16Low; }
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); } } } }
public void SetByteArray(UpdateFieldId field, byte[] value) { SetByteArray(field.RawId, value); }
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; }
/// <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); }
/// <summary> /// 16 Initial item slots /// </summary> public ContainerInventory(Container owner, UpdateFieldId baseField, int slots) : base(owner, baseField, slots) { }
/// <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); }
public float GetFloat(UpdateFieldId id) { return Values.GetFloat((uint)id.RawId); }
public ushort GetUInt16High(UpdateFieldId field) { return m_updateValues[field.RawId].UInt16High; }
public ushort GetUShort(UpdateFieldId id) { return Values.GetUInt16((uint)id.RawId); }
/// <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); } } }
public bool IsSet(UpdateFieldId id) { var i = (uint)id.RawId * 4; if (Values.Length < i + 1) { return false; } return SetIndices.Contains((uint)id.RawId); }
public EntityId GetEntityId(UpdateFieldId field) { return GetEntityId(field.RawId); }