|
17 | 17 | using Unbroken.LaunchBox.Plugins; |
18 | 18 | using Unbroken.LaunchBox.Plugins.Data; |
19 | 19 | using PegasusExportPlugin.Extensions; |
| 20 | +using Unbroken.LaunchBox; |
20 | 21 |
|
21 | 22 | namespace PegasusExportPlugin |
22 | 23 | { |
@@ -184,28 +185,70 @@ await Task.Run(() => |
184 | 185 |
|
185 | 186 | if (!string.IsNullOrWhiteSpace(game.ApplicationPath)) |
186 | 187 | { |
187 | | - string file; |
| 188 | + var files = new HashSet<string>(); |
| 189 | + var additionalApplications = game.GetAllAdditionalApplications(); |
188 | 190 | if (copyApplication) |
189 | 191 | { |
190 | | - file = Path.GetFileName(game.ApplicationPath); |
| 192 | + files.Add(Path.GetFileName(game.ApplicationPath)); |
| 193 | + foreach (var application in additionalApplications) |
| 194 | + { |
| 195 | + var fileName = Path.GetFileName(application.ApplicationPath); |
| 196 | + if (!files.Contains(fileName)) |
| 197 | + { |
| 198 | + files.Add(fileName); |
| 199 | + } |
| 200 | + } |
191 | 201 | } |
192 | 202 | else |
193 | 203 | { |
194 | 204 | if(applicationAbsolutePath) |
195 | 205 | { |
196 | | - file = Path.GetFullPath(game.ApplicationPath); |
| 206 | + files.Add(Path.GetFullPath(game.ApplicationPath)); |
| 207 | + foreach (var application in additionalApplications) |
| 208 | + { |
| 209 | + var fileName = Path.GetFullPath(application.ApplicationPath); |
| 210 | + if (!files.Contains(fileName)) |
| 211 | + { |
| 212 | + files.Add(fileName); |
| 213 | + } |
| 214 | + } |
197 | 215 | } |
198 | 216 | else |
199 | 217 | { |
200 | | - file = GetRelativePath(platformPath, game.ApplicationPath); |
| 218 | + files.Add(GetRelativePath(platformPath, game.ApplicationPath)); |
| 219 | + foreach (var application in additionalApplications) |
| 220 | + { |
| 221 | + var fileName = GetRelativePath(platformPath, application.ApplicationPath); |
| 222 | + if (!files.Contains(fileName)) |
| 223 | + { |
| 224 | + files.Add(fileName); |
| 225 | + } |
| 226 | + } |
201 | 227 | } |
202 | 228 | } |
203 | | - gameMetadataBuilder.AppendLine($"file: {file}"); |
204 | 229 |
|
205 | | - var fileExtension = Path.GetExtension(file).Replace(".", ""); |
206 | | - if (!fileExtensions.Contains(fileExtension)) |
| 230 | + if (files.Count > 1) |
207 | 231 | { |
208 | | - fileExtensions.Add(fileExtension); |
| 232 | + gameMetadataBuilder.AppendLine($"files:"); |
| 233 | + foreach (var file in files) |
| 234 | + { |
| 235 | + gameMetadataBuilder.AppendLine($" {file}"); |
| 236 | + var fileExtension = Path.GetExtension(file).Replace(".", ""); |
| 237 | + if (!fileExtensions.Contains(fileExtension)) |
| 238 | + { |
| 239 | + fileExtensions.Add(fileExtension); |
| 240 | + } |
| 241 | + } |
| 242 | + } |
| 243 | + else if (files.Count > 0) |
| 244 | + { |
| 245 | + var file = files.First(); |
| 246 | + gameMetadataBuilder.AppendLine($"file: {file}"); |
| 247 | + var fileExtension = Path.GetExtension(file).Replace(".", ""); |
| 248 | + if (!fileExtensions.Contains(fileExtension)) |
| 249 | + { |
| 250 | + fileExtensions.Add(fileExtension); |
| 251 | + } |
209 | 252 | } |
210 | 253 | } |
211 | 254 |
|
@@ -346,6 +389,22 @@ await Task.Run(() => |
346 | 389 | //Export Roms |
347 | 390 | if (copyApplication && exportApplication) |
348 | 391 | { |
| 392 | + var additionalApplications = game.GetAllAdditionalApplications(); |
| 393 | + |
| 394 | + foreach (var additionalApplication in additionalApplications) |
| 395 | + { |
| 396 | + if (!string.IsNullOrWhiteSpace(additionalApplication.ApplicationPath) && File.Exists(additionalApplication.ApplicationPath)) |
| 397 | + { |
| 398 | + File.Copy(additionalApplication.ApplicationPath, |
| 399 | + Path.Combine(platformPath, Path.GetFileName(additionalApplication.ApplicationPath)), true); |
| 400 | + var fileExtension = Path.GetExtension(additionalApplication.ApplicationPath).Replace(".", ""); |
| 401 | + if (!fileExtensions.Contains(fileExtension)) |
| 402 | + { |
| 403 | + fileExtensions.Add(fileExtension); |
| 404 | + } |
| 405 | + } |
| 406 | + } |
| 407 | + |
349 | 408 | if (!string.IsNullOrWhiteSpace(game.ApplicationPath) && File.Exists(game.ApplicationPath)) |
350 | 409 | { |
351 | 410 | File.Copy(game.ApplicationPath, |
|
0 commit comments