Skip to content

Commit 43a7656

Browse files
committed
Add default parsing format for QuestXQuestLineId
1 parent 4057e21 commit 43a7656

6 files changed

Lines changed: 27 additions & 46 deletions

File tree

WowPacketParser/Enums/StoreNameType.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public enum StoreNameType
3434
QuestObjective = 28,
3535
Sound = 29,
3636
PhaseId = 30,
37+
QuestXQuestLine = 31,
3738
}
3839

3940
public static class StoreName
@@ -76,6 +77,8 @@ public static StoreNameType ToEnum<T>() where T : IId
7677
return StoreNameType.Zone;
7778
if (typeof(T) == typeof(PhaseId))
7879
return StoreNameType.PhaseId;
80+
if (typeof(T) == typeof(QuestXQuestLineId))
81+
return StoreNameType.QuestXQuestLine;
7982

8083
throw new ArgumentOutOfRangeException(typeof(T).ToString());
8184
}
@@ -96,6 +99,7 @@ public struct ItemId : IId { }
9699
public struct LFGDungeonId : IId { }
97100
public struct MapId : IId { }
98101
public struct QuestId : IId { }
102+
public struct QuestXQuestLineId : IId { }
99103
public struct SoundId : IId { }
100104
public struct SpellId : IId { }
101105
public struct UnitId : IId { }

WowPacketParser/Misc/StoreGetters.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ public static string GetName(StoreNameType type, int entry, bool withEntry = tru
6767
if (DBC.DBC.Phase.TryGetValue(entry, out var phase))
6868
name = ((DBCPhaseFlags)phase.Flags).ToString();
6969
break;
70+
case StoreNameType.QuestXQuestLine:
71+
if (DBC.DBC.QuestLineXQuest.TryGetValue(entry, out var questXQuestLine))
72+
name = $"QuestID: {questXQuestLine.QuestID} QuestLineID: {questXQuestLine.QuestLineID}";
73+
break;
7074
}
7175
if (name != string.Empty)
7276
{

WowPacketParser/SQL/Builders/QuestMisc.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using WowPacketParser.Enums;
1+
using System.Linq;
2+
using WowPacketParser.Enums;
23
using WowPacketParser.Misc;
34
using WowPacketParser.Store;
45
using WowPacketParser.Store.Objects;
@@ -188,12 +189,20 @@ public static string UIMapQuestLines()
188189
if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.quest_template))
189190
return string.Empty;
190191

191-
if (Storage.UIMapQuestLines.IsEmpty())
192+
var filteredUiMapQuestLines = Storage.UIMapQuestLines.Where(ui =>
193+
{
194+
if (DBC.DBC.QuestLineXQuest.TryGetValue((int)ui.Item1.QuestXQuestLineID, out var questLineXQuest))
195+
ui.Item1.QuestLineId = questLineXQuest.QuestLineID;
196+
197+
return ui.Item1.QuestLineId != null;
198+
}).ToList();
199+
200+
if (filteredUiMapQuestLines.Count == 0)
192201
return string.Empty;
193202

194-
var templatesDb = SQLDatabase.Get(Storage.UIMapQuestLines);
203+
var templatesDb = SQLDatabase.Get(filteredUiMapQuestLines);
195204

196-
return SQLUtil.Compare(Storage.UIMapQuestLines, templatesDb, StoreNameType.None);
205+
return SQLUtil.Compare(filteredUiMapQuestLines, templatesDb, StoreNameType.None);
197206
}
198207

199208
[BuilderMethod]

WowPacketParser/Store/Objects/UIMapQuestLine.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,7 @@ public sealed record UIMapQuestLine : IDataModel
1515

1616
[DBFieldName("VerifiedBuild")]
1717
public int? VerifiedBuild = ClientVersion.BuildInt;
18+
19+
public uint QuestXQuestLineID;
1820
}
1921
}

WowPacketParserModule.V10_0_0_46181/Parsers/QuestHandler.cs

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -348,27 +348,8 @@ public static void HandleUiMapQuestLinesResponse(Packet packet)
348348

349349
for (int i = 0; i < questLineXQuestCount; i++)
350350
{
351-
var questLineXQuestId = packet.ReadUInt32();
352-
353-
if (Settings.UseDBC && DBC.QuestLineXQuest.ContainsKey((int)questLineXQuestId))
354-
{
355-
if (DBC.QuestLineXQuest.TryGetValue((int)questLineXQuestId, out var questLineXQuest))
356-
{
357-
var questLineId = questLineXQuest.QuestLineID;
358-
var questId = questLineXQuest.QuestID;
359-
360-
UIMapQuestLine uiMapQuestLine = new()
361-
{
362-
UIMapId = (uint)uiMap,
363-
QuestLineId = questLineId
364-
};
365-
Storage.UIMapQuestLines.Add(uiMapQuestLine, packet.TimeSpan);
366-
367-
packet.WriteLine($"[{i}] QuestLineXQuestID: {questLineXQuestId} (QuestID: {questId} QuestLineID: {questLineId})");
368-
}
369-
}
370-
else
371-
packet.AddValue($"QuestLineXQuestID", questLineXQuestId, i);
351+
var questLineXQuestId = packet.ReadUInt32<QuestXQuestLineId>("QuestLineXQuestID", i);
352+
Storage.UIMapQuestLines.Add(new() { UIMapId = (uint)uiMap, QuestXQuestLineID = questLineXQuestId }, packet.TimeSpan);
372353
}
373354

374355
for (int i = 0; i < questCount; i++)

WowPacketParserModule.V11_0_0_55666/Parsers/QuestHandler.cs

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -388,27 +388,8 @@ public static void HandleUiMapQuestLinesResponse(Packet packet)
388388

389389
for (int i = 0; i < questLineXQuestCount; i++)
390390
{
391-
var questLineXQuestId = packet.ReadUInt32();
392-
393-
if (Settings.UseDBC && DBC.QuestLineXQuest.ContainsKey((int)questLineXQuestId))
394-
{
395-
if (DBC.QuestLineXQuest.TryGetValue((int)questLineXQuestId, out var questLineXQuest))
396-
{
397-
var questLineId = questLineXQuest.QuestLineID;
398-
var questId = questLineXQuest.QuestID;
399-
400-
UIMapQuestLine uiMapQuestLine = new()
401-
{
402-
UIMapId = (uint)uiMap,
403-
QuestLineId = questLineId
404-
};
405-
Storage.UIMapQuestLines.Add(uiMapQuestLine, packet.TimeSpan);
406-
407-
packet.WriteLine($"[{i}] QuestLineXQuestID: {questLineXQuestId} (QuestID: {questId} QuestLineID: {questLineId})");
408-
}
409-
}
410-
else
411-
packet.AddValue($"QuestLineXQuestID", questLineXQuestId, i);
391+
var questLineXQuestId = packet.ReadUInt32<QuestXQuestLineId>("QuestLineXQuestID", i);
392+
Storage.UIMapQuestLines.Add(new() { UIMapId = (uint)uiMap, QuestXQuestLineID = questLineXQuestId }, packet.TimeSpan);
412393
}
413394

414395
for (int i = 0; i < questCount; i++)

0 commit comments

Comments
 (0)