Skip to content

Commit 042a4a7

Browse files
authored
Parse GuildQuestRewardFactor (#58)
1 parent 08f0515 commit 042a4a7

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.0</PackageVersion>
16+
<PackageVersion>2.4.1</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
@@ -33,6 +33,7 @@ public class TableParser {
3333
private readonly XmlSerializer guildHouseSerializer;
3434
private readonly XmlSerializer guildNpcSerializer;
3535
private readonly XmlSerializer guildPropertySerializer;
36+
private readonly XmlSerializer guildQuestRewardFactorSerializer;
3637
private readonly XmlSerializer instrumentCategoryInfoSerializer;
3738
private readonly XmlSerializer instrumentInfoSerializer;
3839
private readonly XmlSerializer interactObjectSerializer;
@@ -132,6 +133,7 @@ public TableParser(M2dReader xmlReader, string language) {
132133
guildHouseSerializer = new XmlSerializer(typeof(GuildHouseRoot));
133134
guildNpcSerializer = new XmlSerializer(typeof(GuildNpcRoot));
134135
guildPropertySerializer = new XmlSerializer(typeof(GuildPropertyRoot));
136+
guildQuestRewardFactorSerializer = new XmlSerializer(typeof(GuildQuestRewardFactorRoot));
135137
instrumentCategoryInfoSerializer = new XmlSerializer(typeof(InstrumentCategoryInfoRoot));
136138
instrumentInfoSerializer = new XmlSerializer(typeof(InstrumentInfoRoot));
137139
interactObjectSerializer = new XmlSerializer(typeof(InteractObjectRoot));
@@ -469,6 +471,16 @@ public IEnumerable<UnitedWeeklyReward> ParseUnitedWeeklyReward() {
469471
}
470472
}
471473

474+
public IEnumerable<(int Id, GuildQuestRewardFactor Factor)> ParseGuildQuestRewardFactor() {
475+
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/guildquestrewardfactor.xml"));
476+
var data = guildQuestRewardFactorSerializer.Deserialize(reader) as GuildQuestRewardFactorRoot;
477+
Debug.Assert(data != null);
478+
479+
foreach (GuildQuestRewardFactor factor in data.guildNpc) {
480+
yield return (factor.level, factor);
481+
}
482+
}
483+
472484
public IEnumerable<(int Id, InstrumentCategoryInfo Info)> ParseInstrumentCategoryInfo() {
473485
XmlReader reader = xmlReader.GetXmlReader(xmlReader.GetEntry("table/instrumentcategoryinfo.xml"));
474486
var data = instrumentCategoryInfoSerializer.Deserialize(reader) as InstrumentCategoryInfoRoot;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Xml.Serialization;
2+
using M2dXmlGenerator;
3+
4+
namespace Maple2.File.Parser.Xml.Table;
5+
6+
// ./data/xml/table/guildquestrewardfactor.xml
7+
[XmlRoot("ms2")]
8+
public partial class GuildQuestRewardFactorRoot {
9+
[M2dFeatureLocale(Selector = "level")] private IList<GuildQuestRewardFactor> _guildNpc;
10+
}
11+
12+
public partial class GuildQuestRewardFactor : IFeatureLocale {
13+
[XmlAttribute] public int level;
14+
[XmlAttribute] public float guildExpFactor;
15+
[XmlAttribute] public float userExpFactor;
16+
[XmlAttribute] public float guildFundFactor;
17+
[XmlAttribute] public float userMesoFactor;
18+
[XmlAttribute] public float GuildCoinFactor;
19+
}

Maple2.File.Tests/TableParserTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,13 @@ public void TestGuildProperty() {
191191
}
192192
}
193193

194+
[TestMethod]
195+
public void TestGuildQuestRewardFactor() {
196+
foreach ((_, _) in _parser.ParseGuildQuestRewardFactor()) {
197+
continue;
198+
}
199+
}
200+
194201
[TestMethod]
195202
public void TestParseInstrumentCategoryInfo() {
196203
foreach ((_, _) in _parser.ParseInstrumentCategoryInfo()) {

0 commit comments

Comments
 (0)