Skip to content

Commit 42197f8

Browse files
committed
ModAPI.Common: add Dependencies and DependenciesVersions to ModConfiguration
1 parent a3eb4f9 commit 42197f8

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

ModAPI.Common/InstalledMods.cs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33

44
using System.IO;
5+
using System.Linq;
56
using System.Xml;
67

78
namespace ModAPI.Common
@@ -55,6 +56,8 @@ public class ModConfiguration : IEquatable<ModConfiguration>
5556
public Version Version;
5657
public string DisplayName;
5758
public string ConfiguratorPath;
59+
public string[] Dependencies;
60+
public Version[] DependenciesVersions;
5861
public List<InstalledFile> InstalledFiles = new List<InstalledFile>();
5962

6063
public ModConfiguration(string name, string unique)
@@ -106,6 +109,20 @@ public void Save(XmlDocument document, XmlElement parent)
106109
element.Attributes.Append(versionAttribute);
107110
}
108111

112+
if (Dependencies != null && Dependencies.Length > 0)
113+
{
114+
var dependenciesAttribute = document.CreateAttribute("dependencies");
115+
dependenciesAttribute.Value = String.Join("?", Dependencies);
116+
element.Attributes.Append(dependenciesAttribute);
117+
}
118+
119+
if (DependenciesVersions != null && DependenciesVersions.Length > 0)
120+
{
121+
var dependenciesVersionsAttribute = document.CreateAttribute("dependenciesVersions");
122+
dependenciesVersionsAttribute.Value = String.Join("?", DependenciesVersions.Select(x => x.ToString()));
123+
element.Attributes.Append(dependenciesVersionsAttribute);
124+
}
125+
109126
if (this.ConfiguratorPath != null)
110127
{
111128
attribute = document.CreateAttribute("configurator");
@@ -151,6 +168,35 @@ public void Load(XmlNode node)
151168
Version = null;
152169
}
153170

171+
var dependenciesAttribute = node.Attributes.GetNamedItem("dependencies");
172+
if (dependenciesAttribute != null)
173+
{
174+
Dependencies = dependenciesAttribute.Value.Split('?');
175+
}
176+
177+
var dependenciesVersionsAttribute = node.Attributes.GetNamedItem("dependenciesVersions");
178+
if (dependenciesVersionsAttribute != null)
179+
{
180+
List<Version> versions = new List<Version>();
181+
foreach (string version in dependenciesVersionsAttribute.Value.Split('?'))
182+
{
183+
if (Version.TryParse(version, out Version parsedDependencyVersion))
184+
{
185+
versions.Add(parsedDependencyVersion);
186+
}
187+
else
188+
{
189+
versions.Clear();
190+
break;
191+
}
192+
}
193+
194+
if (versions.Count() != 0)
195+
{
196+
DependenciesVersions = versions.ToArray();
197+
}
198+
}
199+
154200
var displayNameAttribute = node.Attributes.GetNamedItem("displayName");
155201
if (displayNameAttribute != null)
156202
this.DisplayName = displayNameAttribute.Value;

0 commit comments

Comments
 (0)