Load mod yaml via the virtual filesystem.

This commit is contained in:
Paul Chote
2016-01-21 17:36:06 +00:00
parent 45bae7e9b3
commit 4a12e7bafc
11 changed files with 31 additions and 19 deletions

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Graphics
static Dictionary<string, Sheet> cachedSheets;
static Dictionary<string, Dictionary<string, Sprite>> cachedSprites;
public static void Initialize(IEnumerable<string> chromeFiles)
public static void Initialize(ModData modData)
{
Deinitialize();
@@ -33,7 +33,9 @@ namespace OpenRA.Graphics
cachedSheets = new Dictionary<string, Sheet>();
cachedSprites = new Dictionary<string, Dictionary<string, Sprite>>();
var chrome = MiniYaml.Merge(chromeFiles.Select(MiniYaml.FromFile));
var chrome = MiniYaml.Merge(modData.Manifest.Chrome
.Select(s => MiniYaml.FromStream(modData.ModFiles.Open(s))));
foreach (var c in chrome)
LoadCollection(c.Key, c.Value);
}

View File

@@ -21,11 +21,12 @@ namespace OpenRA.Graphics
public CursorProvider(ModData modData)
{
var sequences = new MiniYaml(null, MiniYaml.Merge(modData.Manifest.Cursors.Select(MiniYaml.FromFile)));
var sequenceYaml = MiniYaml.Merge(modData.Manifest.Cursors.Select(
s => MiniYaml.FromStream(modData.ModFiles.Open(s))));
var shadowIndex = new int[] { };
var nodesDict = sequences.ToDictionary();
var nodesDict = new MiniYaml(null, sequenceYaml).ToDictionary();
if (nodesDict.ContainsKey("ShadowIndex"))
{
Array.Resize(ref shadowIndex, shadowIndex.Length + 1);

View File

@@ -123,7 +123,10 @@ namespace OpenRA.Graphics
Sequences Load(List<MiniYamlNode> sequenceNodes)
{
var nodes = MiniYaml.Merge(modData.Manifest.Sequences.Select(MiniYaml.FromFile).Append(sequenceNodes));
var nodes = MiniYaml.Merge(modData.Manifest.Sequences
.Select(s => MiniYaml.FromStream(modData.ModFiles.Open(s)))
.Append(sequenceNodes));
var items = new Dictionary<string, UnitSequences>();
foreach (var n in nodes)
{

View File

@@ -19,11 +19,13 @@ namespace OpenRA.Graphics
{
static Dictionary<string, Dictionary<string, Voxel>> units;
public static void Initialize(string[] voxelFiles, List<MiniYamlNode> voxelNodes)
public static void Initialize(ModData modData, string[] voxelFiles, List<MiniYamlNode> voxelNodes)
{
units = new Dictionary<string, Dictionary<string, Voxel>>();
var sequences = MiniYaml.Merge(voxelFiles.Select(MiniYaml.FromFile));
var sequences = MiniYaml.Merge(voxelFiles.Select(
s => MiniYaml.FromStream(modData.ModFiles.Open(s))));
foreach (var s in sequences)
LoadVoxelsForUnit(s.Key, s.Value);