Skip to content

Commit

Permalink
Parse Home Decoration Exp
Browse files Browse the repository at this point in the history
  • Loading branch information
AngeloTadeucci committed Feb 7, 2025
1 parent 857db80 commit 251b75e
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Maple2.File.Parser/Maple2.File.Parser.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<PackageTags>MapleStory2, File, Parser, m2d, xml</PackageTags>
<!-- Use following lines to write the generated files to disk. -->
<EmitCompilerGeneratedFiles Condition=" '$(Configuration)' == 'Debug' ">true</EmitCompilerGeneratedFiles>
<PackageVersion>2.2.1</PackageVersion>
<PackageVersion>2.2.2</PackageVersion>
<TargetFramework>net8.0</TargetFramework>
<PackageReadmeFile>README.md</PackageReadmeFile>
<ImplicitUsings>enable</ImplicitUsings>
Expand Down
13 changes: 13 additions & 0 deletions Maple2.File.Parser/TableParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ public class TableParser {
private readonly XmlSerializer adventureLevelMissionSerializer;
private readonly XmlSerializer adventureLevelRewardSerializer;
private readonly XmlSerializer ugcDesignSerializer;
private readonly XmlSerializer masteryUgcHousingSerializer;
private readonly XmlSerializer bannerSerializer;
private readonly XmlSerializer nameTagSymbolSerializer;
private readonly XmlSerializer commonExpSerializer;
Expand Down Expand Up @@ -154,6 +155,7 @@ public TableParser(M2dReader xmlReader) {
adventureLevelMissionSerializer = new XmlSerializer(typeof(AdventureLevelMissionRoot));
adventureLevelRewardSerializer = new XmlSerializer(typeof(AdventureLevelRewardRoot));
ugcDesignSerializer = new XmlSerializer(typeof(UgcDesignRoot));
masteryUgcHousingSerializer = new XmlSerializer(typeof(MasteryUgcHousingRoot));
bannerSerializer = new XmlSerializer(typeof(BannerRoot));
nameTagSymbolSerializer = new XmlSerializer(typeof(NameTagSymbolRoot));
commonExpSerializer = new XmlSerializer(typeof(CommonExpRoot));
Expand Down Expand Up @@ -1006,6 +1008,17 @@ public IEnumerable<JobTable> ParseJobTable() {
}
}

public IEnumerable<(int Id, MasteryUgcHousing)> ParseMasteryUgcHousing() {
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/masteryugchousing.xml")));
var reader = XmlReader.Create(new StringReader(xml));
var data = masteryUgcHousingSerializer.Deserialize(reader) as MasteryUgcHousingRoot;
Debug.Assert(data != null);

foreach (MasteryUgcHousing entry in data.MasteryUgcHousing.Entries) {
yield return (entry.grade, entry);
}
}

public IEnumerable<(int Id, Banner Banner)> ParseBanner() {
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/na/banner.xml")));
var reader = XmlReader.Create(new StringReader(xml));
Expand Down
22 changes: 22 additions & 0 deletions Maple2.File.Parser/Xml/Table/MasteryUgcHousingRoot.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using System.Xml.Serialization;
using M2dXmlGenerator;

namespace Maple2.File.Parser.Xml.Table;

// ./data/xml/table/masteryugchousing.xml
[XmlRoot("ms2")]
public partial class MasteryUgcHousingRoot {
[XmlElement("masteryUGCHousing")] public MasteryUgcHousingList MasteryUgcHousing;
}

public partial class MasteryUgcHousingList {
[XmlElement("v")] public List<MasteryUgcHousing> Entries;
}

public partial class MasteryUgcHousing {
[XmlAttribute] public int grade;
[XmlAttribute] public int value;
[XmlAttribute] public int rewardJobItemID;
[XmlAttribute] public int rewardJobItemRank;
[XmlAttribute] public int rewardJobItemCount;
}
9 changes: 9 additions & 0 deletions Maple2.File.Tests/TableParserTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -597,6 +597,15 @@ public void TestUgcDesign() {
}
}

[TestMethod]
public void TestMasteryUgcHousing() {
var parser = new TableParser(TestUtils.XmlReader);

foreach ((_, _) in parser.ParseMasteryUgcHousing()) {
continue;
}
}

[TestMethod]
public void TestBanner() {
var parser = new TableParser(TestUtils.XmlReader);
Expand Down

0 comments on commit 251b75e

Please sign in to comment.