Skip to content

Commit 6e0ed1d

Browse files
Add PvP ranking duel mode parser and model
1 parent 4d330b9 commit 6e0ed1d

4 files changed

Lines changed: 39 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.4</PackageVersion>
16+
<PackageVersion>2.3.5</PackageVersion>
1717
<TargetFramework>net8.0</TargetFramework>
1818
<PackageReadmeFile>README.md</PackageReadmeFile>
1919
<ImplicitUsings>enable</ImplicitUsings>

Maple2.File.Parser/TableParser.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public class TableParser {
102102
private readonly XmlSerializer seasonDataSerializer;
103103
private readonly XmlSerializer statStringSerializer;
104104
private readonly XmlSerializer autoActionPricePackageSerializer;
105+
private readonly XmlSerializer pvpRankingDuelModeSerializer;
105106

106107
private readonly string locale;
107108
private readonly string language;
@@ -198,6 +199,7 @@ public TableParser(M2dReader xmlReader, string language) {
198199
seasonDataSerializer = new XmlSerializer(typeof(SeasonDataRoot));
199200
statStringSerializer = new XmlSerializer(typeof(StatStringRoot));
200201
autoActionPricePackageSerializer = new XmlSerializer(typeof(AutoActionPricePackageRoot));
202+
pvpRankingDuelModeSerializer = new XmlSerializer(typeof(PvpRankingDuelModeRoot));
201203

202204
locale = FeatureLocaleFilter.Locale.ToLower();
203205
this.language = language;
@@ -1552,4 +1554,14 @@ public IEnumerable<JobTableNew> ParseJobTableNew() {
15521554
yield return (entry.id, entry);
15531555
}
15541556
}
1557+
1558+
public IEnumerable<(int Grade, PvpRankingDuelMode Data)> ParsePvpRankingDuelMode() {
1559+
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/pvprankingduelmode.xml"));
1560+
var data = pvpRankingDuelModeSerializer.Deserialize(reader) as PvpRankingDuelModeRoot;
1561+
Debug.Assert(data != null);
1562+
1563+
foreach (PvpRankingDuelMode entry in data.gradeInfo) {
1564+
yield return (entry.grade, entry);
1565+
}
1566+
}
15551567
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Xml.Serialization;
2+
3+
namespace Maple2.File.Parser.Xml.Table;
4+
5+
// ./data/xml/table/pvprankingduelmode.xml
6+
[XmlRoot("ms2")]
7+
public class PvpRankingDuelModeRoot {
8+
[XmlElement] public List<PvpRankingDuelMode> gradeInfo;
9+
}
10+
11+
public partial class PvpRankingDuelMode {
12+
[XmlAttribute] public int grade;
13+
[XmlAttribute] public int gradeRating;
14+
[XmlAttribute] public int winnerReward;
15+
[XmlAttribute] public int loserReward;
16+
[XmlAttribute] public int weeklyRewardMax;
17+
[XmlAttribute] public int winnerRating;
18+
[XmlAttribute] public int loserRating;
19+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,5 +725,12 @@ public void TestAutoActionPackage() {
725725
continue;
726726
}
727727
}
728+
729+
[TestMethod]
730+
public void TestPvpRankingDuelMode() {
731+
foreach ((_, _) in _parser.ParsePvpRankingDuelMode()) {
732+
continue;
733+
}
734+
}
728735
}
729736

0 commit comments

Comments
 (0)