From 22f456ea7f9414c5ec8d46c3a26109e9278fd2f4 Mon Sep 17 00:00:00 2001 From: Zin <62830952+Zintixx@users.noreply.github.com> Date: Thu, 6 Mar 2025 09:46:51 -0800 Subject: [PATCH 1/2] SmartPush --- Maple2.File.Parser/TableParser.cs | 13 +++++++++++++ Maple2.File.Parser/Xml/Table/SmartPush.cs | 20 ++++++++++++++++++++ Maple2.File.Tests/TableParserTest.cs | 9 +++++++++ 3 files changed, 42 insertions(+) create mode 100644 Maple2.File.Parser/Xml/Table/SmartPush.cs diff --git a/Maple2.File.Parser/TableParser.cs b/Maple2.File.Parser/TableParser.cs index 55dca0c..3a4da61 100644 --- a/Maple2.File.Parser/TableParser.cs +++ b/Maple2.File.Parser/TableParser.cs @@ -94,6 +94,7 @@ public class TableParser { private readonly XmlSerializer weddingPackageSerializer; private readonly XmlSerializer weddingRewardSerializer; private readonly XmlSerializer weddingSkillSerializer; + private readonly XmlSerializer smartPushSerializer; public TableParser(M2dReader xmlReader) { this.xmlReader = xmlReader; @@ -180,6 +181,7 @@ public TableParser(M2dReader xmlReader) { weddingPackageSerializer = new XmlSerializer(typeof(WeddingPackageRoot)); weddingRewardSerializer = new XmlSerializer(typeof(WeddingRewardRoot)); weddingSkillSerializer = new XmlSerializer(typeof(WeddingSkillRoot)); + smartPushSerializer = new XmlSerializer(typeof(SmartPushRoot)); // var seen = new HashSet(); // this.bankTypeSerializer.UnknownAttribute += (sender, args) => { @@ -1303,4 +1305,15 @@ public IEnumerable ParseJobTable() { yield return (entry.id, entry); } } + + public IEnumerable<(int Id, SmartPush Button)> ParseSmartPush() { + string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/na/smartpush.xml"))); + var reader = XmlReader.Create(new StringReader(xml)); + var data = smartPushSerializer.Deserialize(reader) as SmartPushRoot; + Debug.Assert(data != null); + + foreach (SmartPush entry in data.push) { + yield return (entry.id, entry); + } + } } diff --git a/Maple2.File.Parser/Xml/Table/SmartPush.cs b/Maple2.File.Parser/Xml/Table/SmartPush.cs new file mode 100644 index 0000000..7f9beba --- /dev/null +++ b/Maple2.File.Parser/Xml/Table/SmartPush.cs @@ -0,0 +1,20 @@ +using System.Xml.Serialization; +using M2dXmlGenerator; + +namespace Maple2.File.Parser.Xml.Table; + +// ./data/xml/table/na/smartpush.xml +[XmlRoot("ms2")] +public partial class SmartPushRoot { + [M2dFeatureLocale(Selector = "id")] private IList _push; +} + +public partial class SmartPush : IFeatureLocale { + [XmlAttribute] public int id; + [XmlAttribute] public string content = string.Empty; + [XmlAttribute] public string actionType = string.Empty; + [XmlAttribute] public int actionValue; + [XmlAttribute] public long requireMeret; + [XmlAttribute] public string[] requiredItem = Array.Empty(); + [XmlAttribute] public string imgPath = string.Empty; +} diff --git a/Maple2.File.Tests/TableParserTest.cs b/Maple2.File.Tests/TableParserTest.cs index 111e597..e15fa34 100644 --- a/Maple2.File.Tests/TableParserTest.cs +++ b/Maple2.File.Tests/TableParserTest.cs @@ -826,4 +826,13 @@ public void TestWeddingReward() { continue; } } + + [TestMethod] + public void TestSmartPush() { + var parser = new TableParser(TestUtils.XmlReader); + + foreach ((_, _) in parser.ParseSmartPush()) { + continue; + } + } } From 0bd2c2f162a92256698651ebc9238d2bc924c2aa Mon Sep 17 00:00:00 2001 From: Zin <62830952+Zintixx@users.noreply.github.com> Date: Thu, 6 Mar 2025 09:46:58 -0800 Subject: [PATCH 2/2] version up --- Maple2.File.Parser/Maple2.File.Parser.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Maple2.File.Parser/Maple2.File.Parser.csproj b/Maple2.File.Parser/Maple2.File.Parser.csproj index 5d775f0..cad8c65 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.4 + 2.2.5 net8.0 README.md enable