/// <inheritdoc /> /// <exception cref="ArgumentNullException">Thrown if <paramref name="builder"/> is <see langword="null"/>.</exception> public sealed override void Write(IPacketBuilder builder) { Guard.NotNull(() => builder, builder); int bitCount = Bits.Length; int numberCount = bitCount / IntBitCount; var numbers = new uint[numberCount]; int numberIndex = 0; for (int i = 0; i < bitCount; i++) { if (i > 0 && i % IntBitCount == 0) { numberIndex++; } else { // TODO: Actually figure out if this is how they're packed. numbers[numberIndex] <<= 1; } numbers[numberIndex] |= Convert.ToUInt32(Bits[i]); } for (int i = 0; i < numberCount; i++) { builder.WriteInt32(numbers[i]); } }
/// <inheritdoc /> /// <exception cref="ArgumentNullException">Thrown if <paramref name="builder"/> is <see langword="null"/>.</exception> public override sealed void Write(IPacketBuilder builder) { Guard.NotNull(() => builder, builder); int bitCount = this.Bits.Length; int numberCount = bitCount / IntBitCount; var numbers = new uint[numberCount]; int numberIndex = 0; for (int i = 0; i < bitCount; i++) { if (i > 0 && i % IntBitCount == 0) { numberIndex++; } else { // TODO: Actually figure out if this is how they're packed. numbers[numberIndex] <<= 1; } numbers[numberIndex] |= Convert.ToUInt32(this.Bits[i]); } for (int i = 0; i < numberCount; i++) { builder.WriteInt32(numbers[i]); } }
/// <summary> /// Writes an <see cref="Int32" /> from the <see cref="PacketValueAttribute" /> value of the specified enum value. /// </summary> /// <param name="builder">The <see cref="IPacketBuilder">packet builder</see> to use.</param> /// <param name="enumValue">An enum value decorated with <see cref="PacketValueAttribute" />.</param> /// <inheritdoc cref="PacketValueExtensions.ToPacketValue(Enum)" select="exception[@cref='ArgumentException']" /> /// <inheritdoc cref="PacketValueExtensions.ToPacketValue(Enum)" select="exception[@cref='ArgumentOutOfRangeException']" /> /// <inheritdoc cref="PacketBuilder.WriteInt32(int)" select="exception[@cref='ObjectDisposedException']" /> public static void WriteInt32(this IPacketBuilder builder, Enum enumValue) { Guard.NotNull(() => builder, builder); builder.WriteInt32(enumValue.ToPacketValue()); }