Skip to content

Commit 328356c

Browse files
authored
Parse Constants (#54)
1 parent ba88efa commit 328356c

3 files changed

Lines changed: 34 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.3.2</PackageVersion>
16+
<PackageVersion>2.3.3</PackageVersion>
1717
<TargetFramework>net8.0</TargetFramework>
1818
<PackageReadmeFile>README.md</PackageReadmeFile>
1919
<ImplicitUsings>enable</ImplicitUsings>

Maple2.File.Parser/ServerTableParser.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,17 @@
44
using Maple2.File.IO;
55
using Maple2.File.Parser.Enum;
66
using Maple2.File.Parser.Tools;
7+
using Maple2.File.Parser.Xml.Table;
78
using Maple2.File.Parser.Xml.Table.Server;
9+
using Fish = Maple2.File.Parser.Xml.Table.Server.Fish;
10+
using FishingSpot = Maple2.File.Parser.Xml.Table.Server.FishingSpot;
11+
using FishingSpotRoot = Maple2.File.Parser.Xml.Table.Server.FishingSpotRoot;
12+
using FishRoot = Maple2.File.Parser.Xml.Table.Server.FishRoot;
13+
using IndividualItemDrop = Maple2.File.Parser.Xml.Table.Server.IndividualItemDrop;
14+
using IndividualItemDropRoot = Maple2.File.Parser.Xml.Table.Server.IndividualItemDropRoot;
15+
using ItemMergeOptionRoot = Maple2.File.Parser.Xml.Table.Server.ItemMergeOptionRoot;
16+
using ItemOptionVariation = Maple2.File.Parser.Xml.Table.Server.ItemOptionVariation;
17+
using MergeOption = Maple2.File.Parser.Xml.Table.Server.MergeOption;
818

919
namespace Maple2.File.Parser;
1020

@@ -48,6 +58,7 @@ public class ServerTableParser {
4858
private readonly XmlSerializer itemOptionProbabilitySerializer;
4959
private readonly XmlSerializer itemOptionVariationSerializer;
5060
private readonly XmlSerializer itemOptionRandomSerializer;
61+
private readonly XmlSerializer constantsSerializer;
5162

5263
public ServerTableParser(M2dReader xmlReader) {
5364
this.xmlReader = xmlReader;
@@ -89,6 +100,7 @@ public ServerTableParser(M2dReader xmlReader) {
89100
itemOptionProbabilitySerializer = new XmlSerializer(typeof(ItemOptionProbabilityRoot));
90101
itemOptionVariationSerializer = new XmlSerializer(typeof(ItemOptionVariationRoot));
91102
itemOptionRandomSerializer = new XmlSerializer(typeof(ItemOptionRandomRoot));
103+
constantsSerializer = new XmlSerializer(typeof(Constants));
92104

93105
// var seen = new HashSet<string>();
94106
// this.bankTypeSerializer.UnknownAttribute += (sender, args) => {
@@ -679,4 +691,15 @@ public ServerTableParser(M2dReader xmlReader) {
679691
yield return (option.code, option);
680692
}
681693
}
694+
695+
public IEnumerable<(string Key, Constants.Key key)> ParseConstants() {
696+
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/Server/constants.xml")));
697+
var reader = XmlReader.Create(new StringReader(xml));
698+
var data = constantsSerializer.Deserialize(reader) as Constants;
699+
Debug.Assert(data != null);
700+
701+
foreach (Constants.Key key in data.v) {
702+
yield return (key.key, key);
703+
}
704+
}
682705
}

Maple2.File.Tests/ServerTableParserTest.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Maple2.File.Parser;
2+
using Maple2.File.Parser.Xml.Table;
23
using Microsoft.VisualStudio.TestTools.UnitTesting;
34

45
namespace Maple2.File.Tests;
@@ -435,5 +436,14 @@ public void TestItemOptionRandom() {
435436
continue;
436437
}
437438
}
439+
440+
[TestMethod]
441+
public void TestConstants() {
442+
var parser = new ServerTableParser(TestUtils.ServerReader);
443+
444+
foreach ((_, _) in parser.ParseConstants()) {
445+
continue;
446+
}
447+
}
438448
}
439449

0 commit comments

Comments
 (0)