Skip to content

Commit 026ee32

Browse files
authored
Character Traits (#71)
1 parent b25222d commit 026ee32

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.4.13</PackageVersion>
16+
<PackageVersion>2.4.14</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
@@ -116,6 +116,7 @@ public class TableParser {
116116
private readonly XmlSerializer fameLimitSerializer;
117117
private readonly XmlSerializer fameLogSerializer;
118118
private readonly XmlSerializer famePickMethodSerializer;
119+
private readonly XmlSerializer characterAbilitySerializer;
119120

120121
private readonly string locale;
121122
private readonly string language;
@@ -226,6 +227,7 @@ public TableParser(M2dReader xmlReader, string language) {
226227
fameLimitSerializer = new XmlSerializer(typeof(FameLimitRoot));
227228
fameLogSerializer = new XmlSerializer(typeof(FameLogRoot));
228229
famePickMethodSerializer = new XmlSerializer(typeof(FamePickMethod));
230+
characterAbilitySerializer = new XmlSerializer(typeof(CharacterAbilityRoot));
229231

230232
locale = FeatureLocaleFilter.Locale.ToLower();
231233
this.language = language;
@@ -1733,4 +1735,15 @@ public IEnumerable<JobTableNew> ParseJobTableNew() {
17331735
yield return (pickMethod.type, pickMethod.repeatType, pickMethod);
17341736
}
17351737
}
1738+
1739+
public IEnumerable<(int Id, CharacterAbility Ability)> ParseCharacterAbility() {
1740+
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry($"table/characterability.xml")));
1741+
var reader = XmlReader.Create(new StringReader(xml));
1742+
var data = characterAbilitySerializer.Deserialize(reader) as CharacterAbilityRoot;
1743+
Debug.Assert(data != null);
1744+
1745+
foreach (CharacterAbility entry in data.ability) {
1746+
yield return (entry.id, entry);
1747+
}
1748+
}
17361749
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using System.Xml.Serialization;
2+
using M2dXmlGenerator;
3+
4+
namespace Maple2.File.Parser.Xml.Table;
5+
6+
// ./data/xml/table/characterability.xml
7+
[XmlRoot("ms2")]
8+
public class CharacterAbilityRoot {
9+
[XmlElement] public List<CharacterAbility> ability;
10+
}
11+
12+
public class CharacterAbility {
13+
[XmlAttribute] public int id;
14+
[XmlAttribute] public int categoryID;
15+
[XmlAttribute] public int requireLevel;
16+
[XmlAttribute] public int additionalEffectID;
17+
[XmlAttribute] public int additionalEffectLevel;
18+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,4 +836,11 @@ public void TestFamePickMethod() {
836836
continue;
837837
}
838838
}
839+
840+
[TestMethod]
841+
public void TestCharacterAbility() {
842+
foreach ((_, _) in _parser.ParseCharacterAbility()) {
843+
continue;
844+
}
845+
}
839846
}

0 commit comments

Comments
 (0)