Skip to content

Commit

Permalink
Survival Skin (#21)
Browse files Browse the repository at this point in the history
  • Loading branch information
Zintixx authored Jun 10, 2024
1 parent 3da83c3 commit ff52af9
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 1 deletion.
7 changes: 7 additions & 0 deletions Maple2.File.Parser/Enum/SurvivalSkinType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Maple2.File.Parser.Enum;

public enum SurvivalSkinType {
effectTail,
riding,
gliding,
}
2 changes: 1 addition & 1 deletion Maple2.File.Parser/Maple2.File.Parser.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<PackageTags>MapleStory2, File, Parser, m2d, xml</PackageTags>
<!-- Use following lines to write the generated files to disk. -->
<EmitCompilerGeneratedFiles Condition=" '$(Configuration)' == 'Debug' ">true</EmitCompilerGeneratedFiles>
<PackageVersion>2.1.17</PackageVersion>
<PackageVersion>2.1.18</PackageVersion>
<TargetFramework>net8.0</TargetFramework>
<PackageReadmeFile>README.md</PackageReadmeFile>
<ImplicitUsings>enable</ImplicitUsings>
Expand Down
13 changes: 13 additions & 0 deletions Maple2.File.Parser/TableParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ public class TableParser {
private readonly XmlSerializer changeJobSerializer;
private readonly XmlSerializer fieldMissionSerializer;
private readonly XmlSerializer worldMapSerializer;
private readonly XmlSerializer mapleSurvivalSkinInfoSerializer;

public TableParser(M2dReader xmlReader) {
this.xmlReader = xmlReader;
Expand Down Expand Up @@ -164,6 +165,7 @@ public TableParser(M2dReader xmlReader) {
changeJobSerializer = new XmlSerializer(typeof(ChangeJobRoot));
fieldMissionSerializer = new XmlSerializer(typeof(FieldMissionRoot));
worldMapSerializer = new XmlSerializer(typeof(WorldMapRoot));
mapleSurvivalSkinInfoSerializer = new XmlSerializer(typeof(MapleSurvivalSkinInfoRoot));

// var seen = new HashSet<string>();
// this.bankTypeSerializer.UnknownAttribute += (sender, args) => {
Expand Down Expand Up @@ -1188,4 +1190,15 @@ public IEnumerable<JobTable> ParseJobTable() {
yield return (entry.Feature, entry.map);
}
}

public IEnumerable<(int Id, MapleSurvivalSkinInfo Info)> ParseMapleSurvivalSkinInfo() {
string xml = Sanitizer.RemoveEmpty(xmlReader.GetString(xmlReader.GetEntry("table/maplesurvivalskininfo.xml")));
var reader = XmlReader.Create(new StringReader(xml));
var data = mapleSurvivalSkinInfoSerializer.Deserialize(reader) as MapleSurvivalSkinInfoRoot;
Debug.Assert(data != null);

foreach (MapleSurvivalSkinInfo entry in data.skinInfo) {
yield return (entry.id, entry);
}
}
}
20 changes: 20 additions & 0 deletions Maple2.File.Parser/Xml/Table/MapleSurvivalSkinInfo.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System.Xml.Serialization;
using M2dXmlGenerator;
using Maple2.File.Parser.Enum;

namespace Maple2.File.Parser.Xml.Table;

// ./data/xml/table/maplesurvivalskininfo.xml
[XmlRoot("ms2")]
public partial class MapleSurvivalSkinInfoRoot {
[M2dFeatureLocale(Selector = "id")] private IList<MapleSurvivalSkinInfo> _skinInfo;
}

public partial class MapleSurvivalSkinInfo : IFeatureLocale {
[XmlAttribute] public int id;
[M2dEnum] public SurvivalSkinType type;
[XmlAttribute] public string imagePath = string.Empty;
[XmlAttribute] public string mainImagePath = string.Empty;
[XmlAttribute] public int value1;
[XmlAttribute] public int value2;
}
9 changes: 9 additions & 0 deletions Maple2.File.Tests/TableParserTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -745,4 +745,13 @@ public void TestWorldMap() {
continue;
}
}

[TestMethod]
public void TestMapleSurvivalSkinInfo() {
var parser = new TableParser(TestUtils.XmlReader);

foreach ((_, _) in parser.ParseMapleSurvivalSkinInfo()) {
continue;
}
}
}

0 comments on commit ff52af9

Please sign in to comment.