Skip to content

Commit 9e5b75d

Browse files
authored
Parse Club Buff (#60)
* Parse Club Buff * Update TableParserTest.cs
1 parent 2fe4dd0 commit 9e5b75d

4 files changed

Lines changed: 36 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.4.2</PackageVersion>
16+
<PackageVersion>2.4.3</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
@@ -108,6 +108,7 @@ public class TableParser {
108108
private readonly XmlSerializer pvpRankingDuelModeSerializer;
109109
private readonly XmlSerializer questGroupSerializer;
110110
private readonly XmlSerializer darkStreamSerializer;
111+
private readonly XmlSerializer clubBuffSerializer;
111112

112113
private readonly string locale;
113114
private readonly string language;
@@ -210,6 +211,7 @@ public TableParser(M2dReader xmlReader, string language) {
210211
pvpRankingDuelModeSerializer = new XmlSerializer(typeof(PvpRankingDuelModeRoot));
211212
questGroupSerializer = new XmlSerializer(typeof(QuestGroupRoot));
212213
darkStreamSerializer = new XmlSerializer(typeof(DarkStreamRoot));
214+
clubBuffSerializer = new XmlSerializer(typeof(ClubBuffRoot));
213215

214216
locale = FeatureLocaleFilter.Locale.ToLower();
215217
this.language = language;
@@ -1623,4 +1625,15 @@ public IEnumerable<JobTableNew> ParseJobTableNew() {
16231625
yield return (entry.round, entry);
16241626
}
16251627
}
1628+
1629+
public IEnumerable<(int Id, ClubBuff Buff)> ParseClubBuff() {
1630+
string xml = Sanitizer.RemoveSpaces(xmlReader.GetString(xmlReader.GetEntry("table/clubbuff.xml")));
1631+
var reader = XmlReader.Create(new StringReader(xml));
1632+
var data = clubBuffSerializer.Deserialize(reader) as ClubBuffRoot;
1633+
Debug.Assert(data != null);
1634+
1635+
foreach (ClubBuff entry in data.clubBuff) {
1636+
yield return (entry.id, entry);
1637+
}
1638+
}
16261639
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System.Xml.Serialization;
2+
3+
namespace Maple2.File.Parser.Xml.Table;
4+
5+
// ./data/xml/table/clubbuff.xml
6+
[XmlRoot("ms2")]
7+
public class ClubBuffRoot {
8+
[XmlElement] public List<ClubBuff> clubBuff;
9+
}
10+
11+
public partial class ClubBuff {
12+
[XmlAttribute] public int id;
13+
[XmlAttribute] public int additionalEffectId;
14+
[XmlAttribute] public int additionalEffectLevel;
15+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,4 +780,11 @@ public void TestDarkStream() {
780780
Assert.AreEqual(70000, results[30].meso);
781781
Assert.AreEqual(2300, results[30].habi);
782782
}
783+
784+
[TestMethod]
785+
public void TestClubBuff() {
786+
foreach ((_, _) in _parser.ParseClubBuff()) {
787+
continue;
788+
}
789+
}
783790
}

0 commit comments

Comments
 (0)