Skip to content

Commit 5b94c22

Browse files
Parse Home Decoration Exp (#43)
* Parse Home Decoration Exp * Update TableParser.cs
1 parent 857db80 commit 5b94c22

4 files changed

Lines changed: 45 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.2.1</PackageVersion>
16+
<PackageVersion>2.2.2</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
@@ -70,6 +70,7 @@ public class TableParser {
7070
private readonly XmlSerializer adventureLevelMissionSerializer;
7171
private readonly XmlSerializer adventureLevelRewardSerializer;
7272
private readonly XmlSerializer ugcDesignSerializer;
73+
private readonly XmlSerializer masteryUgcHousingSerializer;
7374
private readonly XmlSerializer bannerSerializer;
7475
private readonly XmlSerializer nameTagSymbolSerializer;
7576
private readonly XmlSerializer commonExpSerializer;
@@ -154,6 +155,7 @@ public TableParser(M2dReader xmlReader) {
154155
adventureLevelMissionSerializer = new XmlSerializer(typeof(AdventureLevelMissionRoot));
155156
adventureLevelRewardSerializer = new XmlSerializer(typeof(AdventureLevelRewardRoot));
156157
ugcDesignSerializer = new XmlSerializer(typeof(UgcDesignRoot));
158+
masteryUgcHousingSerializer = new XmlSerializer(typeof(MasteryUgcHousingRoot));
157159
bannerSerializer = new XmlSerializer(typeof(BannerRoot));
158160
nameTagSymbolSerializer = new XmlSerializer(typeof(NameTagSymbolRoot));
159161
commonExpSerializer = new XmlSerializer(typeof(CommonExpRoot));
@@ -1006,6 +1008,17 @@ public IEnumerable<JobTable> ParseJobTable() {
10061008
}
10071009
}
10081010

1011+
public IEnumerable<(int Id, MasteryUgcHousing)> ParseMasteryUgcHousing() {
1012+
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/masteryugchousing.xml")));
1013+
var reader = XmlReader.Create(new StringReader(xml));
1014+
var data = masteryUgcHousingSerializer.Deserialize(reader) as MasteryUgcHousingRoot;
1015+
Debug.Assert(data != null);
1016+
1017+
foreach (MasteryUgcHousing entry in data.MasteryUgcHousing.Entries) {
1018+
yield return (entry.grade, entry);
1019+
}
1020+
}
1021+
10091022
public IEnumerable<(int Id, Banner Banner)> ParseBanner() {
10101023
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/na/banner.xml")));
10111024
var reader = XmlReader.Create(new StringReader(xml));
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
using System.Xml.Serialization;
2+
using M2dXmlGenerator;
3+
4+
namespace Maple2.File.Parser.Xml.Table;
5+
6+
// ./data/xml/table/masteryugchousing.xml
7+
[XmlRoot("ms2")]
8+
public partial class MasteryUgcHousingRoot {
9+
[XmlElement("masteryUGCHousing")] public MasteryUgcHousingList MasteryUgcHousing;
10+
}
11+
12+
public partial class MasteryUgcHousingList {
13+
[XmlElement("v")] public List<MasteryUgcHousing> Entries;
14+
}
15+
16+
public partial class MasteryUgcHousing {
17+
[XmlAttribute] public int grade;
18+
[XmlAttribute] public int value;
19+
[XmlAttribute] public int rewardJobItemID;
20+
[XmlAttribute] public int rewardJobItemRank;
21+
[XmlAttribute] public int rewardJobItemCount;
22+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,15 @@ public void TestUgcDesign() {
597597
}
598598
}
599599

600+
[TestMethod]
601+
public void TestMasteryUgcHousing() {
602+
var parser = new TableParser(TestUtils.XmlReader);
603+
604+
foreach ((_, _) in parser.ParseMasteryUgcHousing()) {
605+
continue;
606+
}
607+
}
608+
600609
[TestMethod]
601610
public void TestBanner() {
602611
var parser = new TableParser(TestUtils.XmlReader);

0 commit comments

Comments
 (0)