Skip to content

Commit d58b548

Browse files
authored
Quest Group (#56)
* quest group * cleanup
1 parent 78983ee commit d58b548

4 files changed

Lines changed: 37 additions & 2 deletions

File tree

Maple2.File.Parser/Maple2.File.Parser.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<PackageTags>MapleStory2, File, Parser, m2d, xml</PackageTags>
1414
<!-- Use following lines to write the generated files to disk. -->
1515
<EmitCompilerGeneratedFiles Condition=" '$(Configuration)' == 'Debug' ">true</EmitCompilerGeneratedFiles>
16-
<PackageVersion>2.3.6</PackageVersion>
16+
<PackageVersion>2.3.7</PackageVersion>
1717
<TargetFramework>net8.0</TargetFramework>
1818
<PackageReadmeFile>README.md</PackageReadmeFile>
1919
<ImplicitUsings>enable</ImplicitUsings>

Maple2.File.Parser/TableParser.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public class TableParser {
103103
private readonly XmlSerializer statStringSerializer;
104104
private readonly XmlSerializer autoActionPricePackageSerializer;
105105
private readonly XmlSerializer pvpRankingDuelModeSerializer;
106+
private readonly XmlSerializer questGroupSerializer;
106107

107108
private readonly string locale;
108109
private readonly string language;
@@ -200,6 +201,7 @@ public TableParser(M2dReader xmlReader, string language) {
200201
statStringSerializer = new XmlSerializer(typeof(StatStringRoot));
201202
autoActionPricePackageSerializer = new XmlSerializer(typeof(AutoActionPricePackageRoot));
202203
pvpRankingDuelModeSerializer = new XmlSerializer(typeof(PvpRankingDuelModeRoot));
204+
questGroupSerializer = new XmlSerializer(typeof(QuestGroupRoot));
203205

204206
locale = FeatureLocaleFilter.Locale.ToLower();
205207
this.language = language;
@@ -1562,4 +1564,15 @@ public IEnumerable<JobTableNew> ParseJobTableNew() {
15621564
yield return (entry.grade, entry);
15631565
}
15641566
}
1567+
1568+
public IEnumerable<(int Id, QuestGroup Data)> ParseQuestGroup() {
1569+
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/questgrouptable.xml")));
1570+
var reader = XmlReader.Create(new StringReader(xml));
1571+
var data = questGroupSerializer.Deserialize(reader) as QuestGroupRoot;
1572+
Debug.Assert(data != null);
1573+
1574+
foreach (QuestGroup entry in data.group) {
1575+
yield return (entry.id, entry);
1576+
}
1577+
}
15651578
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System.Xml.Serialization;
2+
using M2dXmlGenerator;
3+
4+
namespace Maple2.File.Parser.Xml.Table;
5+
6+
// ./data/xml/table/questgrouptable.xml
7+
[XmlRoot("ms2")]
8+
public class QuestGroupRoot {
9+
[XmlElement] public List<QuestGroup> group;
10+
}
11+
12+
public class QuestGroup {
13+
[XmlAttribute] public int id;
14+
[XmlAttribute] public int pickCount;
15+
[XmlAttribute] public string dependency;
16+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -732,5 +732,11 @@ public void TestPvpRankingDuelMode() {
732732
continue;
733733
}
734734
}
735-
}
736735

736+
[TestMethod]
737+
public void TestQuestGroup() {
738+
foreach ((_, _) in _parser.ParseQuestGroup()) {
739+
continue;
740+
}
741+
}
742+
}

0 commit comments

Comments
 (0)