From 9d2291660f1bf06374319cde0d4cb48597df9663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Sat, 8 Feb 2025 21:17:34 -0300 Subject: [PATCH 1/3] Parse Ugc Housing Point Reward --- Maple2.File.Parser/Maple2.File.Parser.csproj | 2 +- Maple2.File.Parser/TableParser.cs | 13 +++++++++++++ .../Xml/Table/UgcHousingPointReward.cs | 14 ++++++++++++++ Maple2.File.Tests/TableParserTest.cs | 9 +++++++++ 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs diff --git a/Maple2.File.Parser/Maple2.File.Parser.csproj b/Maple2.File.Parser/Maple2.File.Parser.csproj index 0d82b0d..214b7f3 100644 --- a/Maple2.File.Parser/Maple2.File.Parser.csproj +++ b/Maple2.File.Parser/Maple2.File.Parser.csproj @@ -13,7 +13,7 @@ MapleStory2, File, Parser, m2d, xml true - 2.2.2 + 2.2.3 net8.0 README.md enable diff --git a/Maple2.File.Parser/TableParser.cs b/Maple2.File.Parser/TableParser.cs index bfc6b57..55dca0c 100644 --- a/Maple2.File.Parser/TableParser.cs +++ b/Maple2.File.Parser/TableParser.cs @@ -71,6 +71,7 @@ public class TableParser { private readonly XmlSerializer adventureLevelRewardSerializer; private readonly XmlSerializer ugcDesignSerializer; private readonly XmlSerializer masteryUgcHousingSerializer; + private readonly XmlSerializer ugcHousingPointRewardSerializer; private readonly XmlSerializer bannerSerializer; private readonly XmlSerializer nameTagSymbolSerializer; private readonly XmlSerializer commonExpSerializer; @@ -156,6 +157,7 @@ public TableParser(M2dReader xmlReader) { adventureLevelRewardSerializer = new XmlSerializer(typeof(AdventureLevelRewardRoot)); ugcDesignSerializer = new XmlSerializer(typeof(UgcDesignRoot)); masteryUgcHousingSerializer = new XmlSerializer(typeof(MasteryUgcHousingRoot)); + ugcHousingPointRewardSerializer = new XmlSerializer(typeof(UgcHousingPointRewardRoot)); bannerSerializer = new XmlSerializer(typeof(BannerRoot)); nameTagSymbolSerializer = new XmlSerializer(typeof(NameTagSymbolRoot)); commonExpSerializer = new XmlSerializer(typeof(CommonExpRoot)); @@ -1019,6 +1021,17 @@ public IEnumerable ParseJobTable() { } } + public IEnumerable<(int Id, UgcHousingPointReward)> ParseUgcHousingPointReward() { + string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/ugchousingpointreward.xml"))); + var reader = XmlReader.Create(new StringReader(xml)); + var data = ugcHousingPointRewardSerializer.Deserialize(reader) as UgcHousingPointRewardRoot; + Debug.Assert(data != null); + + foreach (UgcHousingPointReward entry in data.Entries) { + yield return (entry.housingPoint, 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)); diff --git a/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs new file mode 100644 index 0000000..7ec3fc9 --- /dev/null +++ b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs @@ -0,0 +1,14 @@ +using System.Xml.Serialization; + +namespace Maple2.File.Parser.Xml.Table; + +// ./data/xml/table/ugchousingpointreward.xml +[XmlRoot("ms2")] +public partial class UgcHousingPointRewardRoot { + [XmlElement("v")] public List Entries; +} + +public partial class UgcHousingPointReward { + [XmlAttribute] public int housingPoint; + [XmlAttribute] public int individualDropBoxId; +} diff --git a/Maple2.File.Tests/TableParserTest.cs b/Maple2.File.Tests/TableParserTest.cs index fc539ad..111e597 100644 --- a/Maple2.File.Tests/TableParserTest.cs +++ b/Maple2.File.Tests/TableParserTest.cs @@ -606,6 +606,15 @@ public void TestMasteryUgcHousing() { } } + [TestMethod] + public void TestUgcHousingPointReward() { + var parser = new TableParser(TestUtils.XmlReader); + + foreach ((_, _) in parser.ParseUgcHousingPointReward()) { + continue; + } + } + [TestMethod] public void TestBanner() { var parser = new TableParser(TestUtils.XmlReader); From e4effb34e6f2463eb28b010edb6f0bee16f1423d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Sat, 8 Feb 2025 21:22:14 -0300 Subject: [PATCH 2/3] Update UgcHousingPointReward.cs --- Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs index 7ec3fc9..c889ff7 100644 --- a/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs +++ b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs @@ -11,4 +11,6 @@ public partial class UgcHousingPointRewardRoot { public partial class UgcHousingPointReward { [XmlAttribute] public int housingPoint; [XmlAttribute] public int individualDropBoxId; + [XmlAttribute] public string icon; + [XmlAttribute] public string stringKey; } From 6eee2e1ee4d65df89a2d72458b82a32f5a705053 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=82ngelo=20Tadeucci?= Date: Sat, 8 Feb 2025 21:28:00 -0300 Subject: [PATCH 3/3] Update Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs Co-authored-by: Zin <62830952+Zintixx@users.noreply.github.com> --- Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs index c889ff7..90c2505 100644 --- a/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs +++ b/Maple2.File.Parser/Xml/Table/UgcHousingPointReward.cs @@ -11,6 +11,6 @@ public partial class UgcHousingPointRewardRoot { public partial class UgcHousingPointReward { [XmlAttribute] public int housingPoint; [XmlAttribute] public int individualDropBoxId; - [XmlAttribute] public string icon; - [XmlAttribute] public string stringKey; + [XmlAttribute] public string icon = string.Empty; + [XmlAttribute] public string stringKey = string.Empty; }