Skip to content

Commit 2fe4dd0

Browse files
authored
Parse Feature Tables (#59)
* Parse Feature Tables * Update TableParserTest.cs
1 parent 042a4a7 commit 2fe4dd0

3 files changed

Lines changed: 36 additions & 1 deletion

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.4.1</PackageVersion>
16+
<PackageVersion>2.4.2</PackageVersion>
1717
<TargetFramework>net8.0</TargetFramework>
1818
<PackageReadmeFile>README.md</PackageReadmeFile>
1919
<ImplicitUsings>enable</ImplicitUsings>

Maple2.File.Parser/TableParser.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ namespace Maple2.File.Parser;
1212

1313
public class TableParser {
1414
private readonly M2dReader xmlReader;
15+
private readonly XmlSerializer featureSettingSerializer;
16+
private readonly XmlSerializer featureSerializer;
1517
private readonly XmlSerializer nameSerializer;
1618
private readonly XmlSerializer bankTypeSerializer;
1719
private readonly XmlSerializer chatStickerSerializer;
@@ -112,6 +114,8 @@ public class TableParser {
112114

113115
public TableParser(M2dReader xmlReader, string language) {
114116
this.xmlReader = xmlReader;
117+
featureSettingSerializer = new XmlSerializer(typeof(FeatureSetting));
118+
featureSerializer = new XmlSerializer(typeof(FeatureRoot));
115119
nameSerializer = new XmlSerializer(typeof(StringMapping));
116120
bankTypeSerializer = new XmlSerializer(typeof(BankTypeRoot));
117121
chatStickerSerializer = new XmlSerializer(typeof(ChatStickerRoot));
@@ -219,6 +223,26 @@ public TableParser(M2dReader xmlReader, string language) {
219223
// };
220224
}
221225

226+
public IEnumerable<(string Type, Setting Setting)> ParseFeatureSetting() {
227+
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/feature_setting.xml"));
228+
var data = featureSettingSerializer.Deserialize(reader) as FeatureSetting;
229+
Debug.Assert(data != null);
230+
231+
foreach (Setting setting in data.setting) {
232+
yield return (setting.type, setting);
233+
}
234+
}
235+
236+
public IEnumerable<(string Name, Feature Feature)> ParseFeature() {
237+
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/feature.xml"));
238+
var data = featureSerializer.Deserialize(reader) as FeatureRoot;
239+
Debug.Assert(data != null);
240+
241+
foreach (Feature feature in data.feature) {
242+
yield return (feature.name, feature);
243+
}
244+
}
245+
222246
public IEnumerable<(int Id, BankType BankType)> ParseBankType() {
223247
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/banktype.xml"));
224248
var data = bankTypeSerializer.Deserialize(reader) as BankTypeRoot;

Maple2.File.Tests/TableParserTest.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ public static void ClassInit(TestContext context) {
1616
_parser = new TableParser(TestUtils.XmlReader, "en");
1717
}
1818

19+
[TestMethod]
20+
public void TestFeatureParser() {
21+
foreach ((_, _) in _parser.ParseFeatureSetting()) {
22+
continue;
23+
}
24+
25+
foreach ((_, _) in _parser.ParseFeature()) {
26+
continue;
27+
}
28+
}
29+
1930

2031
[TestMethod]
2132
public void TestColorPaletteParser() {

0 commit comments

Comments
 (0)