Set yaml filename when loading from FileSystem.

This commit is contained in:
Paul Chote
2016-06-04 15:18:47 +01:00
parent 916f2ea2ea
commit b4d1517d0d
15 changed files with 17 additions and 17 deletions

View File

@@ -243,7 +243,7 @@ namespace OpenRA
{ {
var mapFiles = FieldLoader.GetValue<string[]>("value", mapRules.Value); var mapFiles = FieldLoader.GetValue<string[]>("value", mapRules.Value);
foreach (var f in mapFiles) foreach (var f in mapFiles)
if (AnyFlaggedTraits(modData, MiniYaml.FromStream(fileSystem.Open(f)))) if (AnyFlaggedTraits(modData, MiniYaml.FromStream(fileSystem.Open(f), f)))
return true; return true;
} }
} }

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Graphics
cachedSprites = new Dictionary<string, Dictionary<string, Sprite>>(); cachedSprites = new Dictionary<string, Dictionary<string, Sprite>>();
var chrome = MiniYaml.Merge(modData.Manifest.Chrome var chrome = MiniYaml.Merge(modData.Manifest.Chrome
.Select(s => MiniYaml.FromStream(fileSystem.Open(s)))); .Select(s => MiniYaml.FromStream(fileSystem.Open(s), s)));
foreach (var c in chrome) foreach (var c in chrome)
LoadCollection(c.Key, c.Value); LoadCollection(c.Key, c.Value);

View File

@@ -24,7 +24,7 @@ namespace OpenRA.Graphics
{ {
var fileSystem = modData.DefaultFileSystem; var fileSystem = modData.DefaultFileSystem;
var sequenceYaml = MiniYaml.Merge(modData.Manifest.Cursors.Select( var sequenceYaml = MiniYaml.Merge(modData.Manifest.Cursors.Select(
s => MiniYaml.FromStream(fileSystem.Open(s)))); s => MiniYaml.FromStream(fileSystem.Open(s), s)));
var shadowIndex = new int[] { }; var shadowIndex = new int[] { };

View File

@@ -64,7 +64,7 @@ namespace OpenRA
{ {
var package = ModMetadata.AllMods[modId].Package; var package = ModMetadata.AllMods[modId].Package;
yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"))).ToDictionary(); yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"), "mod.yaml")).ToDictionary();
Mod = FieldLoader.Load<ModMetadata>(yaml["Metadata"]); Mod = FieldLoader.Load<ModMetadata>(yaml["Metadata"]);
Mod.Id = modId; Mod.Id = modId;

View File

@@ -204,7 +204,7 @@ namespace OpenRA
public TileSet(IReadOnlyFileSystem fileSystem, string filepath) public TileSet(IReadOnlyFileSystem fileSystem, string filepath)
{ {
var yaml = MiniYaml.DictFromStream(fileSystem.Open(filepath)); var yaml = MiniYaml.DictFromStream(fileSystem.Open(filepath), filepath);
// General info // General info
FieldLoader.Load(this, yaml["General"]); FieldLoader.Load(this, yaml["General"]);

View File

@@ -236,9 +236,9 @@ namespace OpenRA
return FromFile(path).ToDictionary(x => x.Key, x => x.Value); return FromFile(path).ToDictionary(x => x.Key, x => x.Value);
} }
public static Dictionary<string, MiniYaml> DictFromStream(Stream stream) public static Dictionary<string, MiniYaml> DictFromStream(Stream stream, string fileName = "<no filename available>")
{ {
return FromStream(stream).ToDictionary(x => x.Key, x => x.Value); return FromStream(stream, fileName).ToDictionary(x => x.Key, x => x.Value);
} }
public static List<MiniYamlNode> FromFile(string path) public static List<MiniYamlNode> FromFile(string path)
@@ -385,7 +385,7 @@ namespace OpenRA
files = files.Append(mapFiles); files = files.Append(mapFiles);
} }
var yaml = files.Select(s => MiniYaml.FromStream(fileSystem.Open(s))); var yaml = files.Select(s => MiniYaml.FromStream(fileSystem.Open(s), s));
if (mapRules != null && mapRules.Nodes.Any()) if (mapRules != null && mapRules.Nodes.Any())
yaml = yaml.Append(mapRules.Nodes); yaml = yaml.Append(mapRules.Nodes);

View File

@@ -61,7 +61,7 @@ namespace OpenRA
continue; continue;
} }
var yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"))); var yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"), "mod.yaml"));
var nd = yaml.ToDictionary(); var nd = yaml.ToDictionary();
if (!nd.ContainsKey("Metadata")) if (!nd.ContainsKey("Metadata"))
{ {

View File

@@ -22,7 +22,7 @@ namespace OpenRA.Widgets
{ {
data = new Dictionary<string, string>(); data = new Dictionary<string, string>();
var metrics = MiniYaml.Merge(modData.Manifest.ChromeMetrics.Select( var metrics = MiniYaml.Merge(modData.Manifest.ChromeMetrics.Select(
y => MiniYaml.FromStream(modData.DefaultFileSystem.Open(y)))); y => MiniYaml.FromStream(modData.DefaultFileSystem.Open(y), y)));
foreach (var m in metrics) foreach (var m in metrics)
foreach (var n in m.Value.Nodes) foreach (var n in m.Value.Nodes)
data[n.Key] = n.Value.Value; data[n.Key] = n.Value.Value;

View File

@@ -25,7 +25,7 @@ namespace OpenRA
{ {
this.modData = modData; this.modData = modData;
foreach (var file in modData.Manifest.ChromeLayout.Select(a => MiniYaml.FromStream(modData.DefaultFileSystem.Open(a)))) foreach (var file in modData.Manifest.ChromeLayout.Select(a => MiniYaml.FromStream(modData.DefaultFileSystem.Open(a), a)))
foreach (var w in file) foreach (var w in file)
{ {
var key = w.Key.Substring(w.Key.IndexOf('@') + 1); var key = w.Key.Substring(w.Key.IndexOf('@') + 1);

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Lint
public void Run(Action<string> emitError, Action<string> emitWarning, ModData modData) public void Run(Action<string> emitError, Action<string> emitWarning, ModData modData)
{ {
foreach (var filename in modData.Manifest.ChromeLayout) foreach (var filename in modData.Manifest.ChromeLayout)
CheckInner(MiniYaml.FromStream(modData.DefaultFileSystem.Open(filename)), filename, emitError); CheckInner(MiniYaml.FromStream(modData.DefaultFileSystem.Open(filename), filename), filename, emitError);
} }
void CheckInner(List<MiniYamlNode> nodes, string filename, Action<string> emitError) void CheckInner(List<MiniYamlNode> nodes, string filename, Action<string> emitError)

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
var ts = new TileSet(modData.DefaultFileSystem, t); var ts = new TileSet(modData.DefaultFileSystem, t);
Console.WriteLine("Tileset: " + ts.Name); Console.WriteLine("Tileset: " + ts.Name);
var sc = new SpriteCache(modData.DefaultFileSystem, modData.SpriteLoaders, new SheetBuilder(SheetType.Indexed)); var sc = new SpriteCache(modData.DefaultFileSystem, modData.SpriteLoaders, new SheetBuilder(SheetType.Indexed));
var nodes = MiniYaml.Merge(modData.Manifest.Sequences.Select(s => MiniYaml.FromStream(modData.DefaultFileSystem.Open(s)))); var nodes = MiniYaml.Merge(modData.Manifest.Sequences.Select(s => MiniYaml.FromStream(modData.DefaultFileSystem.Open(s), s)));
foreach (var n in nodes) foreach (var n in nodes)
modData.SpriteSequenceLoader.ParseSequences(modData, ts, sc, n); modData.SpriteSequenceLoader.ParseSequences(modData, ts, sc, n);
} }

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{ {
include |= map.Package.Contains(f); include |= map.Package.Contains(f);
if (include) if (include)
nodes.AddRange(MiniYaml.FromStream(map.Open(f))); nodes.AddRange(MiniYaml.FromStream(map.Open(f), f));
else else
includes.Add(f); includes.Add(f);
} }

View File

@@ -37,7 +37,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
var files = FieldLoader.GetValue<string[]>("value", yaml.Value); var files = FieldLoader.GetValue<string[]>("value", yaml.Value);
foreach (var filename in files) foreach (var filename in files)
{ {
var fileNodes = MiniYaml.FromStream(map.Package.GetStream(filename)); var fileNodes = MiniYaml.FromStream(map.Package.GetStream(filename), filename);
processYaml(engineDate, ref fileNodes, null, 0); processYaml(engineDate, ref fileNodes, null, 0);
((IReadWritePackage)map.Package).Update(filename, Encoding.ASCII.GetBytes(fileNodes.WriteToString())); ((IReadWritePackage)map.Package).Update(filename, Encoding.ASCII.GetBytes(fileNodes.WriteToString()));
} }

View File

@@ -42,7 +42,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
continue; continue;
} }
var yaml = MiniYaml.FromStream(package.GetStream(name)); var yaml = MiniYaml.FromStream(package.GetStream(name), name);
processFile(engineDate, ref yaml, null, 0); processFile(engineDate, ref yaml, null, 0);
// Generate the on-disk path // Generate the on-disk path

View File

@@ -100,7 +100,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (modData.Manifest.Missions.Any()) if (modData.Manifest.Missions.Any())
{ {
var yaml = MiniYaml.Merge(modData.Manifest.Missions.Select( var yaml = MiniYaml.Merge(modData.Manifest.Missions.Select(
m => MiniYaml.FromStream(modData.DefaultFileSystem.Open(m)))); m => MiniYaml.FromStream(modData.DefaultFileSystem.Open(m), m)));
foreach (var kv in yaml) foreach (var kv in yaml)
{ {