fix(core): Converts virtual hair packets (#388)

- [X] Converts virtual hair packets
This commit is contained in:
Kamron Batman 2021-01-05 22:14:54 -08:00 • committed by GitHub
parent 30ef0761cb
commit 0912876f7c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 214 additions and 86 deletions

View file

@ -1,7 +1,4 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Linq;
using Server.Gumps;
using Server.Network;
using Xunit;

View file

@ -1,5 +1,4 @@
using System;
using System.Buffers;
using Server.Network;
using Xunit;

View file

@ -590,7 +590,7 @@ namespace Server.Tests.Network
itemID |= 0x8000;
}
Stream.Write(HairInfo.FakeSerial(beheld));
Stream.Write(HairInfo.FakeSerial(beheld.Serial));
Stream.Write((ushort)itemID);
Stream.Write((byte)Layer.Hair);
@ -621,7 +621,7 @@ namespace Server.Tests.Network
itemID |= 0x8000;
}
Stream.Write(FacialHairInfo.FakeSerial(beheld));
Stream.Write(FacialHairInfo.FakeSerial(beheld.Serial));
Stream.Write((ushort)itemID);
Stream.Write((byte)Layer.FacialHair);

View file

@ -1,5 +1,4 @@
using System;
using System.Buffers;
using Server.HuePickers;
using Server.Network;
using Xunit;

View file

@ -1,7 +1,5 @@
using System;
using System.Buffers;
using System.Collections.Generic;
using System.Linq;
using Server.Network;
using Xunit;

View file

@ -0,0 +1,40 @@
using System;
using Server.Network;
using Server.Tests.Network;
using Xunit;
namespace Server.Tests
{
public class VirtualHairPacketTests: IClassFixture<ServerFixture>
{
[Fact]
public void TestSendVirtualHairUpdate()
{
var m = new Mobile(0x1024u);
m.DefaultMobileInit();
var expected = new HairEquipUpdate(m).Compile();
using var ns = PacketTestUtilities.CreateTestNetState();
ns.SendHairEquipUpdatePacket(m, HairInfo.FakeSerial(m.Serial), Layer.Hair);
var result = ns.SendPipe.Reader.TryRead();
AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
[Fact]
public void TestSendRemoveVirtualHair()
{
var m = new Mobile(0x1024u);
m.DefaultMobileInit();
var expected = new RemoveHair(m).Compile();
using var ns = PacketTestUtilities.CreateTestNetState();
ns.SendRemoveHairPacket(HairInfo.FakeSerial(m.Serial));
var result = ns.SendPipe.Reader.TryRead();
AssertThat.Equal(result.Buffer[0].AsSpan(0), expected);
}
}
}

View file

@ -0,0 +1,52 @@
namespace Server.Network
{
public sealed class HairEquipUpdate : Packet
{
public HairEquipUpdate(Mobile parent)
: base(0x2E, 15)
{
var hue = parent.SolidHueOverride >= 0 ? parent.SolidHueOverride : parent.HairHue;
Stream.Write(HairInfo.FakeSerial(parent.Serial));
Stream.Write((short)parent.HairItemID);
Stream.Write((byte)0);
Stream.Write((byte)Layer.Hair);
Stream.Write(parent.Serial);
Stream.Write((short)hue);
}
}
public sealed class FacialHairEquipUpdate : Packet
{
public FacialHairEquipUpdate(Mobile parent)
: base(0x2E, 15)
{
var hue = parent.SolidHueOverride >= 0 ? parent.SolidHueOverride : parent.FacialHairHue;
Stream.Write(FacialHairInfo.FakeSerial(parent.Serial));
Stream.Write((short)parent.FacialHairItemID);
Stream.Write((byte)0);
Stream.Write((byte)Layer.FacialHair);
Stream.Write(parent.Serial);
Stream.Write((short)hue);
}
}
public sealed class RemoveHair : Packet
{
public RemoveHair(Mobile parent)
: base(0x1D, 5)
{
Stream.Write(HairInfo.FakeSerial(parent.Serial));
}
}
public sealed class RemoveFacialHair : Packet
{
public RemoveFacialHair(Mobile parent)
: base(0x1D, 5)
{
Stream.Write(FacialHairInfo.FakeSerial(parent.Serial));
}
}
}