|
2 | 2 | using System.Collections.Generic; |
3 | 3 |
|
4 | 4 | using System.IO; |
| 5 | +using System.Linq; |
5 | 6 | using System.Xml; |
6 | 7 |
|
7 | 8 | namespace ModAPI.Common |
@@ -55,6 +56,8 @@ public class ModConfiguration : IEquatable<ModConfiguration> |
55 | 56 | public Version Version; |
56 | 57 | public string DisplayName; |
57 | 58 | public string ConfiguratorPath; |
| 59 | + public string[] Dependencies; |
| 60 | + public Version[] DependenciesVersions; |
58 | 61 | public List<InstalledFile> InstalledFiles = new List<InstalledFile>(); |
59 | 62 |
|
60 | 63 | public ModConfiguration(string name, string unique) |
@@ -106,6 +109,20 @@ public void Save(XmlDocument document, XmlElement parent) |
106 | 109 | element.Attributes.Append(versionAttribute); |
107 | 110 | } |
108 | 111 |
|
| 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 | + |
109 | 126 | if (this.ConfiguratorPath != null) |
110 | 127 | { |
111 | 128 | attribute = document.CreateAttribute("configurator"); |
@@ -151,6 +168,35 @@ public void Load(XmlNode node) |
151 | 168 | Version = null; |
152 | 169 | } |
153 | 170 |
|
| 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 | + |
154 | 200 | var displayNameAttribute = node.Attributes.GetNamedItem("displayName"); |
155 | 201 | if (displayNameAttribute != null) |
156 | 202 | this.DisplayName = displayNameAttribute.Value; |
|
0 commit comments