forked from MonoGame/MonoGame
-
Notifications
You must be signed in to change notification settings - Fork 1
/
SourceFileCollection.cs
74 lines (62 loc) · 2.26 KB
/
SourceFileCollection.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using Microsoft.Xna.Framework.Content.Pipeline;
using Microsoft.Xna.Framework.Graphics;
namespace MonoGame.Content.Builder
{
[XmlRoot(ElementName = "SourceFileCollection")]
public sealed class SourceFileCollection
{
public GraphicsProfile Profile { get; set; }
public TargetPlatform Platform { get; set; }
public string Config { get; set; }
[XmlArrayItem("File")]
public List<string> SourceFiles { get; set; }
[XmlArrayItem("File")]
public List<string> DestFiles { get; set; }
public SourceFileCollection()
{
SourceFiles = new List<string>();
DestFiles = new List<string>();
Config = string.Empty;
}
static public SourceFileCollection Read(string filePath)
{
var deserializer = new XmlSerializer(typeof(SourceFileCollection));
try
{
using (var textReader = new StreamReader(filePath))
return (SourceFileCollection)deserializer.Deserialize(textReader);
}
catch (Exception)
{
}
return new SourceFileCollection();
}
public void Write(string filePath)
{
var serializer = new XmlSerializer(typeof(SourceFileCollection));
using (var textWriter = new StreamWriter(filePath, false, new UTF8Encoding(false)))
serializer.Serialize(textWriter, this);
}
public void Merge(SourceFileCollection other)
{
foreach (var sourceFile in other.SourceFiles)
{
var inContent = SourceFiles.Any(e => string.Equals(e, sourceFile, StringComparison.InvariantCultureIgnoreCase));
if (!inContent)
SourceFiles.Add(sourceFile);
}
foreach (var destFile in other.DestFiles)
{
var inContent = DestFiles.Any(e => string.Equals(e, destFile, StringComparison.InvariantCultureIgnoreCase));
if (!inContent)
DestFiles.Add(destFile);
}
}
}
}