Skip to content

Commit bf6f46d

Browse files
committed
Merge remote-tracking branch 'origin/master' into housing
2 parents aa104bb + f6636bf commit bf6f46d

28 files changed

+668
-106
lines changed

WowPacketParser.Tests/Misc/ExtensionsTest.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,18 +93,18 @@ public void TestSetCulture()
9393
[Test]
9494
public void TestFlattenIEnumerable()
9595
{
96-
object[] arr = { 1, 2, new object[] { 3, new object[] {4} }, 5 };
96+
object[] arr = [1, 2, new object[] { 3, new object[] {4} }, 5];
9797

9898
Assert.That(new object[] { 1, 2, 3, 4, 5 }, Is.EqualTo(arr.Flatten()));
9999

100-
var list = new List<object> { "a", new[] {"b", "c"}, 2 };
100+
var list = new List<object> { "aa", new[] { "bb", "cc" }, 2, new object[] { null } };
101101

102-
Assert.That(new object[] { "a", "b", "c", 2}, Is.EqualTo(list.Flatten()));
102+
Assert.That(new object[] { "aa", "bb", "cc", 2, null }, Is.EqualTo(list.Flatten()));
103103

104-
int[] simple = {1, 2, 3};
104+
int[] simple = [1, 2, 3];
105105
Assert.That(new[] { 1, 2, 3 }, Is.EqualTo(simple.Flatten()));
106106

107-
int[] empty = {};
107+
int[] empty = [];
108108
Assert.That(new int[] {}, Is.EqualTo(empty.Flatten()));
109109
}
110110
}

WowPacketParser.Tests/Misc/UtilitiesTest.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,6 @@ public void TestGetUnixtimeFromDateTime()
2828
Assert.That(1337076610, Is.EqualTo(Utilities.GetUnixTimeFromDateTime(new DateTime(2012, 5, 15, 10, 10, 10))));
2929
}
3030

31-
[Test]
32-
public void TestHexStringToBinary()
33-
{
34-
Assert.That(new byte[0], Is.EqualTo(Utilities.HexStringToBinary(string.Empty)));
35-
Assert.That(new byte[] {1, 2, 3, 4}, Is.EqualTo(Utilities.HexStringToBinary("01020304")));
36-
Assert.That(new byte[] {255, 0}, Is.EqualTo(Utilities.HexStringToBinary("FF00")));
37-
38-
Assert.Throws<ArgumentOutOfRangeException>(() => Utilities.HexStringToBinary("B"));
39-
}
40-
4131
[Test]
4232
public void TestGetDateTimeFromGameTime()
4333
{

WowPacketParser/Misc/Extensions.cs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Concurrent;
32
using System.Collections.Generic;
43
using System.Diagnostics.Contracts;
54
using System.Globalization;
@@ -129,13 +128,6 @@ public static string ToFormattedString(this TimeSpan span)
129128
return $"{span.Hours:00}:{span.Minutes:00}:{span.Seconds:00}.{span.Milliseconds:000}";
130129
}
131130

132-
public static void Clear<T>(this ConcurrentBag<T> bag)
133-
{
134-
T t;
135-
while (bag.Count > 0)
136-
bag.TryTake(out t);
137-
}
138-
139131
/// <summary>
140132
/// Compare two dictionaries
141133
/// </summary>
@@ -240,7 +232,7 @@ public static void UpdateData(this UpdateValuesObjectDataFields fields, IObjectD
240232
fields.Scale = data.Scale;
241233
fields.DynamicFlags = data.DynamicFlags;
242234
}
243-
235+
244236
public static void UpdateData(this UpdateValuesObjectDataFields fields, IGameObjectData data)
245237
{
246238
var go = fields.Gameobject ??= new();
@@ -326,34 +318,34 @@ public static void UpdateData(this UpdateValuesObjectDataFields fields, IUnitDat
326318
unit.NpcFlags.Reserve(data.NpcFlags.Length);
327319
for (int i = 0; i < data.NpcFlags.Length; ++i)
328320
unit.NpcFlags[i] = data.NpcFlags[i].ToProto();
329-
321+
330322
unit.Power.Reserve(data.Power.Length);
331323
for (int i = 0; i < data.Power.Length; ++i)
332324
unit.Power[i] = data.Power[i].ToProto();
333-
325+
334326
unit.MaxPower.Reserve(data.MaxPower.Length);
335327
for (int i = 0; i < data.MaxPower.Length; ++i)
336328
unit.MaxPower[i] = data.MaxPower[i].ToProto();
337-
329+
338330
unit.AttackRoundBaseTime.Reserve(data.AttackRoundBaseTime.Length);
339331
for (int i = 0; i < data.AttackRoundBaseTime.Length; ++i)
340332
unit.AttackRoundBaseTime[i] = data.AttackRoundBaseTime[i].ToProto();
341-
333+
342334
unit.Resistances.Reserve(data.Resistances.Length);
343335
for (int i = 0; i < data.Resistances.Length; ++i)
344336
unit.Resistances[i] = data.Resistances[i].ToProto();
345-
337+
346338
unit.VirtualItems.Reserve(data.VirtualItems.Length);
347339
for (int i = 0; i < data.VirtualItems.Length; ++i)
348340
if (data.VirtualItems[i] != null)
349341
unit.VirtualItems[i] = data.VirtualItems[i].ToProto();
350342
}
351-
343+
352344
public static UInt32ValueWrapper ToProto(this uint? value)
353345
{
354346
return new UInt32ValueWrapper() { Value = value };
355347
}
356-
348+
357349
public static Int32ValueWrapper ToProto(this int? value)
358350
{
359351
return new Int32ValueWrapper() { Value = value };

WowPacketParser/Misc/Utilities.cs

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
44
using System.Diagnostics;
5-
using System.Globalization;
65
using System.IO;
76
using System.Linq;
87
using System.Reflection;
@@ -34,17 +33,6 @@ public static long GetUnixTimeFromDateTime(DateTime time)
3433
return ((DateTimeOffset)DateTime.SpecifyKind(time, DateTimeKind.Utc)).ToUnixTimeSeconds();
3534
}
3635

37-
public static byte[] HexStringToBinary(string data)
38-
{
39-
var bytes = new List<byte>();
40-
byte result;
41-
for (var i = 0; i < data.Length; i += 2)
42-
if (Byte.TryParse(data.Substring(i, 2), NumberStyles.HexNumber, null, out result))
43-
bytes.Add(result);
44-
45-
return bytes.ToArray();
46-
}
47-
4836
public static string ByteArrayToHexTable(byte[] data, bool sh0rt = false, int offset = 0, bool noOffsetFirstLine = true)
4937
{
5038
var n = Environment.NewLine;

WowPacketParserModule.V11_0_0_55666/Parsers/UpdateFieldsHandler1127.cs

Lines changed: 22 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5928,13 +5928,7 @@ public static IGameObjectAssistActionData ReadCreateGameObjectAssistActionData(P
59285928
data.Time = packet.ReadInt64("Time", indexes);
59295929
data.DelveTier = packet.ReadInt32("DelveTier", indexes);
59305930
data.PlayerName = packet.ReadWoWString("PlayerName", data.PlayerName.Length, indexes);
5931-
if (data.MonsterName.Length > 1)
5932-
{
5933-
data.MonsterName = packet.ReadWoWString("MonsterName", data.MonsterName.Length - 1, indexes);
5934-
packet.ReadByte();
5935-
}
5936-
else
5937-
data.MonsterName = string.Empty;
5931+
data.MonsterName = packet.ReadDynamicString("MonsterName", data.MonsterName.Length, indexes);
59385932
return data;
59395933
}
59405934

@@ -5949,13 +5943,7 @@ public static IGameObjectAssistActionData ReadUpdateGameObjectAssistActionData(P
59495943
data.Time = packet.ReadInt64("Time", indexes);
59505944
data.DelveTier = packet.ReadInt32("DelveTier", indexes);
59515945
data.PlayerName = packet.ReadWoWString("PlayerName", data.PlayerName.Length, indexes);
5952-
if (data.MonsterName.Length > 1)
5953-
{
5954-
data.MonsterName = packet.ReadWoWString("MonsterName", data.MonsterName.Length - 1, indexes);
5955-
packet.ReadByte();
5956-
}
5957-
else
5958-
data.MonsterName = string.Empty;
5946+
data.MonsterName = packet.ReadDynamicString("MonsterName", data.MonsterName.Length, indexes);
59595947
return data;
59605948
}
59615949

@@ -6446,7 +6434,7 @@ public static IForceSetAreaTriggerPositionAndRotation ReadCreateForceSetAreaTrig
64466434
var data = new ForceSetAreaTriggerPositionAndRotation();
64476435
packet.ResetBitReader();
64486436
data.TriggerGUID = packet.ReadPackedGuid128("TriggerGUID", indexes);
6449-
data.Position = packet.ReadVector3("Position", indexes);
6437+
data.Pos = packet.ReadVector3("Pos", indexes);
64506438
data.Rotation = packet.ReadQuaternion("Rotation", indexes);
64516439
return data;
64526440
}
@@ -6456,7 +6444,7 @@ public static IForceSetAreaTriggerPositionAndRotation ReadUpdateForceSetAreaTrig
64566444
var data = new ForceSetAreaTriggerPositionAndRotation();
64576445
packet.ResetBitReader();
64586446
data.TriggerGUID = packet.ReadPackedGuid128("TriggerGUID", indexes);
6459-
data.Position = packet.ReadVector3("Position", indexes);
6447+
data.Pos = packet.ReadVector3("Pos", indexes);
64606448
data.Rotation = packet.ReadQuaternion("Rotation", indexes);
64616449
return data;
64626450
}
@@ -7508,28 +7496,25 @@ public static IDecorStoragePersistedData ReadUpdateDecorStoragePersistedData(Pac
75087496
var data = new DecorStoragePersistedData();
75097497
packet.ResetBitReader();
75107498
var rawChangesMask = new int[1];
7511-
rawChangesMask[0] = (int)packet.ReadBits(4);
7499+
rawChangesMask[0] = (int)packet.ReadBits(3);
75127500
var changesMask = new BitArray(rawChangesMask);
75137501

75147502
var hasDyes = false;
75157503
packet.ResetBitReader();
75167504
if (changesMask[0])
75177505
{
7518-
if (changesMask[1])
7519-
{
7520-
data.HouseGUID = packet.ReadPackedGuid128("HouseGUID", indexes);
7521-
}
7522-
if (changesMask[3])
7523-
{
7524-
data.Field_20 = packet.ReadByte("Field_20", indexes);
7525-
}
7526-
hasDyes = packet.ReadBit("HasDyes", indexes);
7527-
if (changesMask[2])
7506+
data.HouseGUID = packet.ReadPackedGuid128("HouseGUID", indexes);
7507+
}
7508+
if (changesMask[2])
7509+
{
7510+
data.Field_20 = packet.ReadByte("Field_20", indexes);
7511+
}
7512+
hasDyes = packet.ReadBit("HasDyes", indexes);
7513+
if (changesMask[1])
7514+
{
7515+
if (hasDyes)
75287516
{
7529-
if (hasDyes)
7530-
{
7531-
data.Dyes = ReadUpdateDecorStoragePersistedDataDyes(packet, indexes, "Dyes");
7532-
}
7517+
data.Dyes = ReadUpdateDecorStoragePersistedDataDyes(packet, indexes, "Dyes");
75337518
}
75347519
}
75357520
return data;
@@ -7543,7 +7528,7 @@ public override IHousingDecorData ReadCreateHousingDecorData(Packet packet, Upda
75437528
data.DecorGUID = packet.ReadPackedGuid128("DecorGUID", indexes);
75447529
data.AttachParentGUID = packet.ReadPackedGuid128("AttachParentGUID", indexes);
75457530
data.Flags = packet.ReadByte("Flags", indexes);
7546-
data.Field_68 = packet.ReadPackedGuid128("Field_68", indexes);
7531+
data.TargetGameObjectGUID = packet.ReadPackedGuid128("TargetGameObjectGUID", indexes);
75477532
hasPersistedData = packet.ReadBit("HasPersistedData", indexes);
75487533
if (hasPersistedData)
75497534
{
@@ -7578,7 +7563,7 @@ public override IHousingDecorData ReadUpdateHousingDecorData(Packet packet, para
75787563
}
75797564
if (changesMask[5])
75807565
{
7581-
data.Field_68 = packet.ReadPackedGuid128("Field_68", indexes);
7566+
data.TargetGameObjectGUID = packet.ReadPackedGuid128("TargetGameObjectGUID", indexes);
75827567
}
75837568
hasPersistedData = packet.ReadBit("HasPersistedData", indexes);
75847569
if (changesMask[4])
@@ -7969,13 +7954,7 @@ public override INeighborhoodMirrorData ReadCreateNeighborhoodMirrorData(Packet
79697954
data.OwnerGUID = packet.ReadPackedGuid128("OwnerGUID", indexes);
79707955
data.Houses.Resize(packet.ReadUInt32());
79717956
data.Managers.Resize(packet.ReadUInt32());
7972-
if (data.Name.Length > 1)
7973-
{
7974-
data.Name = packet.ReadWoWString("Name", data.Name.Length - 1, indexes);
7975-
packet.ReadByte();
7976-
}
7977-
else
7978-
data.Name = string.Empty;
7957+
data.Name = packet.ReadDynamicString("Name", data.Name.Length, indexes);
79797958
for (var i = 0; i < data.Houses.Count; ++i)
79807959
{
79817960
data.Houses[i] = ReadCreatePlayerHouseInfo(packet, indexes, "Houses", i);
@@ -8043,13 +8022,7 @@ public override INeighborhoodMirrorData ReadUpdateNeighborhoodMirrorData(Packet
80438022
}
80448023
if (changesMask[3])
80458024
{
8046-
if (data.Name.Length > 1)
8047-
{
8048-
data.Name = packet.ReadWoWString("Name", data.Name.Length - 1, indexes);
8049-
packet.ReadByte();
8050-
}
8051-
else
8052-
data.Name = string.Empty;
8025+
data.Name = packet.ReadDynamicString("Name", data.Name.Length, indexes);
80538026
}
80548027
}
80558028
return data;
@@ -8181,13 +8154,7 @@ public static INeighborhoodCharter ReadCreateNeighborhoodCharter(Packet packet,
81818154
data.Signatures[i] = ReadCreateNeighborhoodCharterSignature(packet, indexes, "Signatures", i);
81828155
}
81838156
data.Name = new string('*', (int)packet.ReadBits(8));
8184-
if (data.Name.Length > 1)
8185-
{
8186-
data.Name = packet.ReadWoWString("Name", data.Name.Length - 1, indexes);
8187-
packet.ReadByte();
8188-
}
8189-
else
8190-
data.Name = string.Empty;
8157+
data.Name = packet.ReadDynamicString("Name", data.Name.Length, indexes);
81918158
return data;
81928159
}
81938160

@@ -8204,13 +8171,7 @@ public static INeighborhoodCharter ReadUpdateNeighborhoodCharter(Packet packet,
82048171
}
82058172
packet.ResetBitReader();
82068173
data.Name = new string('*', (int)packet.ReadBits(8));
8207-
if (data.Name.Length > 1)
8208-
{
8209-
data.Name = packet.ReadWoWString("Name", data.Name.Length - 1, indexes);
8210-
packet.ReadByte();
8211-
}
8212-
else
8213-
data.Name = string.Empty;
8174+
data.Name = packet.ReadDynamicString("Name", data.Name.Length, indexes);
82148175
return data;
82158176
}
82168177

WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_2_7_64632/ForceSetAreaTriggerPositionAndRotation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace WowPacketParserModule.V11_0_0_55666.UpdateFields.V11_2_7_64632
1212
public class ForceSetAreaTriggerPositionAndRotation : IForceSetAreaTriggerPositionAndRotation
1313
{
1414
public WowGuid TriggerGUID { get; set; }
15-
public Vector3 Position { get; set; }
15+
public Vector3 Pos { get; set; }
1616
public Quaternion Rotation { get; set; }
1717
}
1818
}

WowPacketParserModule.V11_0_0_55666/UpdateFields/V11_2_7_64632/HousingDecorData.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class HousingDecorData : IHousingDecorData
1515
public WowGuid AttachParentGUID { get; set; }
1616
public System.Nullable<byte> Flags { get; set; }
1717
public IDecorStoragePersistedData PersistedData { get; set; }
18-
public WowGuid Field_68 { get; set; }
18+
public WowGuid TargetGameObjectGUID { get; set; }
1919
}
2020
}
2121

WowPacketParserModule.V5_5_0_61735/Parsers/AccountDataHandler.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,37 @@ public static void HandleAccountItemCollectionData(Packet packet)
118118
packet.ReadBit("Unknown1110_2");
119119
}
120120

121+
[Parser(Opcode.CMSG_REQUEST_ACCOUNT_DATA)]
122+
public static void HandleRequestAccountData(Packet packet)
123+
{
124+
packet.ReadPackedGuid128("Guid");
125+
packet.ReadInt32E<AccountDataType>("DataType");
126+
}
127+
128+
[Parser(Opcode.CMSG_UPDATE_ACCOUNT_DATA)]
129+
public static void HandleClientUpdateAccountData(Packet packet)
130+
{
131+
packet.ReadTime64("Time");
132+
133+
var decompCount = packet.ReadInt32();
134+
packet.ReadPackedGuid128("Guid");
135+
packet.ReadInt32E<AccountDataType>("DataType");
136+
var compCount = packet.ReadInt32();
137+
138+
var pkt = packet.Inflate(compCount, decompCount, false);
139+
var data = pkt.ReadWoWString(decompCount);
140+
141+
packet.AddValue("CompressedData", data);
142+
}
143+
144+
[Parser(Opcode.CMSG_ACCOUNT_NOTIFICATION_ACKNOWLEDGED)]
145+
public static void HandleAccountNotificationAckknowledged(Packet packet)
146+
{
147+
packet.ReadUInt64("InstanceID");
148+
packet.ReadUInt32("OpenSeconds");
149+
packet.ReadUInt32("ReadSeconds");
150+
}
151+
121152
[Parser(Opcode.SMSG_LOGOUT_CANCEL_ACK)]
122153
public static void HandleAccountNull(Packet packet)
123154
{

WowPacketParserModule.V5_5_0_61735/Parsers/AuctionHandler.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,13 @@ public static void HandleAuctionSellCommodity(Packet packet)
661661
ReadAuctionItemForSale(packet, i);
662662
}
663663

664+
[Parser(Opcode.CMSG_AUCTION_SET_FAVORITE_ITEM)]
665+
public static void HandleAuctionSetFavoriteItem(Packet packet)
666+
{
667+
packet.ReadBit("IsNotFavorite");
668+
ReadAuctionFavoriteInfo(packet, "FavoriteInfo");
669+
}
670+
664671
[Parser(Opcode.CMSG_AUCTION_LIST_PENDING_SALES)]
665672
public static void HandleAuctionZero(Packet packet)
666673
{

WowPacketParserModule.V5_5_0_61735/Parsers/BattlegroundHandler.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,13 @@ public static void HandleRequestCrowdControlSpell(Packet packet)
572572
packet.ReadPackedGuid128("PlayerGuid");
573573
}
574574

575+
[Parser(Opcode.CMSG_ARENA_TEAM_ROSTER)]
576+
[Parser(Opcode.CMSG_ARENA_TEAM_LEAVE)]
577+
public static void HandleArenaTeamQuery(Packet packet)
578+
{
579+
packet.ReadUInt32("TeamID");
580+
}
581+
575582
[Parser(Opcode.SMSG_BATTLEFIELD_PORT_DENIED)]
576583
[Parser(Opcode.SMSG_BATTLEGROUND_INFO_THROTTLED)]
577584
[Parser(Opcode.CMSG_BATTLEFIELD_LEAVE)]

0 commit comments

Comments
 (0)