Skip to content

Commit ba88efa

Browse files
authored
Parse Auto Action Table (#53)
* Parse Auto Action Table * tiny fix * formatting
1 parent 6c1973d commit ba88efa

4 files changed

Lines changed: 38 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.1</PackageVersion>
16+
<PackageVersion>2.3.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
@@ -101,6 +101,7 @@ public class TableParser {
101101
private readonly XmlSerializer smartPushSerializer;
102102
private readonly XmlSerializer seasonDataSerializer;
103103
private readonly XmlSerializer statStringSerializer;
104+
private readonly XmlSerializer autoActionPricePackageSerializer;
104105

105106
private readonly string locale;
106107
private readonly string language;
@@ -196,6 +197,7 @@ public TableParser(M2dReader xmlReader, string language) {
196197
smartPushSerializer = new XmlSerializer(typeof(SmartPushRoot));
197198
seasonDataSerializer = new XmlSerializer(typeof(SeasonDataRoot));
198199
statStringSerializer = new XmlSerializer(typeof(StatStringRoot));
200+
autoActionPricePackageSerializer = new XmlSerializer(typeof(AutoActionPricePackageRoot));
199201

200202
locale = FeatureLocaleFilter.Locale.ToLower();
201203
this.language = language;
@@ -1539,4 +1541,15 @@ public IEnumerable<JobTableNew> ParseJobTableNew() {
15391541
yield return (entry.id, entry);
15401542
}
15411543
}
1544+
1545+
public IEnumerable<(int Id, AutoActionPricePackage Data)> ParseAutoActionPricePackage() {
1546+
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry($"table/{locale}/autoactionpricepackage.xml")));
1547+
var reader = XmlReader.Create(new StringReader(xml));
1548+
var data = autoActionPricePackageSerializer.Deserialize(reader) as AutoActionPricePackageRoot;
1549+
Debug.Assert(data != null);
1550+
1551+
foreach (AutoActionPricePackage entry in data.package) {
1552+
yield return (entry.id, entry);
1553+
}
1554+
}
15421555
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System.Xml.Serialization;
2+
3+
namespace Maple2.File.Parser.Xml.Table;
4+
5+
// ./data/xml/table/{locale}/autoactionpricepackage.xml
6+
[XmlRoot("ms2")]
7+
public class AutoActionPricePackageRoot {
8+
[XmlElement] public List<AutoActionPricePackage> package;
9+
}
10+
11+
public class AutoActionPricePackage {
12+
[XmlAttribute] public string content = string.Empty;
13+
[XmlAttribute] public int id;
14+
[XmlAttribute] public int duration;
15+
[XmlAttribute] public long merat;
16+
[XmlAttribute] public long meso;
17+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,5 +718,12 @@ public void TestSeasonData() {
718718
continue;
719719
}
720720
}
721+
722+
[TestMethod]
723+
public void TestAutoActionPackage() {
724+
foreach ((_, _) in _parser.ParseAutoActionPricePackage()) {
725+
continue;
726+
}
727+
}
721728
}
722729

0 commit comments

Comments
 (0)