Remove GlobalFilesystem.OpenWithExts. Closes #5272.
This commit is contained in:
@@ -164,45 +164,38 @@ namespace OpenRA.FileSystem
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Stream Open(string filename) { return OpenWithExts(filename, ""); }
|
||||
|
||||
public static Stream OpenWithExts(string filename, params string[] exts)
|
||||
public static Stream Open(string filename)
|
||||
{
|
||||
Stream s;
|
||||
if (!TryOpenWithExts(filename, exts, out s))
|
||||
if (!TryOpen(filename, out s))
|
||||
throw new FileNotFoundException("File not found: {0}".F(filename), filename);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
public static bool TryOpenWithExts(string filename, string[] exts, out Stream s)
|
||||
public static bool TryOpen(string filename, out Stream s)
|
||||
{
|
||||
// Check the cache for a quick lookup
|
||||
if (filename.IndexOfAny(new char[] { '/', '\\' }) == -1)
|
||||
{
|
||||
foreach (var ext in exts)
|
||||
{
|
||||
s = GetFromCache(PackageHashType.Classic, filename + ext);
|
||||
if (s != null)
|
||||
return true;
|
||||
s = GetFromCache(PackageHashType.Classic, filename);
|
||||
if (s != null)
|
||||
return true;
|
||||
|
||||
s = GetFromCache(PackageHashType.CRC32, filename + ext);
|
||||
if (s != null)
|
||||
return true;
|
||||
}
|
||||
s = GetFromCache(PackageHashType.CRC32, filename);
|
||||
if (s != null)
|
||||
return true;
|
||||
}
|
||||
|
||||
foreach (var ext in exts)
|
||||
{
|
||||
var possibleName = filename + ext;
|
||||
var folder = MountedFolders
|
||||
.Where(x => x.Exists(possibleName))
|
||||
.MaxByOrDefault(x => x.Priority);
|
||||
// Ask each package individually
|
||||
var folder = MountedFolders
|
||||
.Where(x => x.Exists(filename))
|
||||
.MaxByOrDefault(x => x.Priority);
|
||||
|
||||
if (folder != null)
|
||||
{
|
||||
s = folder.GetContent(possibleName);
|
||||
return true;
|
||||
}
|
||||
if (folder != null)
|
||||
{
|
||||
s = folder.GetContent(filename);
|
||||
return true;
|
||||
}
|
||||
|
||||
s = null;
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace OpenRA.Graphics
|
||||
|
||||
Palettes = palettes.AsReadOnly();
|
||||
|
||||
var frameCache = new FrameCache(modData.SpriteLoaders, new string[0]);
|
||||
var frameCache = new FrameCache(modData.SpriteLoaders);
|
||||
var cursors = new Dictionary<string, CursorSequence>();
|
||||
foreach (var s in nodesDict["Cursors"].Nodes)
|
||||
foreach (var sequence in s.Value.Nodes)
|
||||
|
||||
@@ -114,7 +114,7 @@ namespace OpenRA.Graphics
|
||||
this.tileSet = tileSet;
|
||||
|
||||
// Every time we load a tile set, we create a sequence cache for it
|
||||
spriteCache = Exts.Lazy(() => new SpriteCache(modData.SpriteLoaders, tileSet.Extensions, new SheetBuilder(SheetType.Indexed)));
|
||||
spriteCache = Exts.Lazy(() => new SpriteCache(modData.SpriteLoaders, new SheetBuilder(SheetType.Indexed)));
|
||||
}
|
||||
|
||||
public Sequences LoadSequences(Map map)
|
||||
|
||||
@@ -35,13 +35,11 @@ namespace OpenRA.Graphics
|
||||
public readonly SheetBuilder SheetBuilder;
|
||||
readonly Cache<string, Sprite[]> sprites;
|
||||
|
||||
public SpriteCache(ISpriteLoader[] loaders, string[] exts, SheetBuilder sheetBuilder)
|
||||
public SpriteCache(ISpriteLoader[] loaders, SheetBuilder sheetBuilder)
|
||||
{
|
||||
SheetBuilder = sheetBuilder;
|
||||
|
||||
// Include extension-less version
|
||||
exts = exts.Append("").ToArray();
|
||||
sprites = new Cache<string, Sprite[]>(filename => SpriteLoader.GetSprites(filename, exts, loaders, sheetBuilder));
|
||||
sprites = new Cache<string, Sprite[]>(filename => SpriteLoader.GetSprites(filename, loaders, sheetBuilder));
|
||||
}
|
||||
|
||||
public Sprite[] this[string filename] { get { return sprites[filename]; } }
|
||||
@@ -51,11 +49,9 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
readonly Cache<string, ISpriteFrame[]> frames;
|
||||
|
||||
public FrameCache(ISpriteLoader[] loaders, string[] exts)
|
||||
public FrameCache(ISpriteLoader[] loaders)
|
||||
{
|
||||
// Include extension-less version
|
||||
exts = exts.Append("").ToArray();
|
||||
frames = new Cache<string, ISpriteFrame[]>(filename => SpriteLoader.GetFrames(filename, exts, loaders));
|
||||
frames = new Cache<string, ISpriteFrame[]>(filename => SpriteLoader.GetFrames(filename, loaders));
|
||||
}
|
||||
|
||||
public ISpriteFrame[] this[string filename] { get { return frames[filename]; } }
|
||||
@@ -63,14 +59,14 @@ namespace OpenRA.Graphics
|
||||
|
||||
public static class SpriteLoader
|
||||
{
|
||||
public static Sprite[] GetSprites(string filename, string[] exts, ISpriteLoader[] loaders, SheetBuilder sheetBuilder)
|
||||
public static Sprite[] GetSprites(string filename, ISpriteLoader[] loaders, SheetBuilder sheetBuilder)
|
||||
{
|
||||
return GetFrames(filename, exts, loaders).Select(a => sheetBuilder.Add(a)).ToArray();
|
||||
return GetFrames(filename, loaders).Select(a => sheetBuilder.Add(a)).ToArray();
|
||||
}
|
||||
|
||||
public static ISpriteFrame[] GetFrames(string filename, string[] exts, ISpriteLoader[] loaders)
|
||||
public static ISpriteFrame[] GetFrames(string filename, ISpriteLoader[] loaders)
|
||||
{
|
||||
using (var stream = GlobalFileSystem.OpenWithExts(filename, exts))
|
||||
using (var stream = GlobalFileSystem.Open(filename))
|
||||
{
|
||||
ISpriteFrame[] frames;
|
||||
foreach (var loader in loaders)
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace OpenRA.Graphics
|
||||
sheetBuilder = new SheetBuilder(SheetType.Indexed, allocate);
|
||||
templates = new Dictionary<ushort, Sprite[]>();
|
||||
|
||||
var frameCache = new FrameCache(Game.ModData.SpriteLoaders, tileset.Extensions);
|
||||
var frameCache = new FrameCache(Game.ModData.SpriteLoaders);
|
||||
foreach (var t in tileset.Templates)
|
||||
{
|
||||
var allFrames = frameCache[t.Value.Image];
|
||||
|
||||
@@ -217,9 +217,9 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
VxlReader vxl;
|
||||
HvaReader hva;
|
||||
using (var s = GlobalFileSystem.OpenWithExts(files.First, ".vxl"))
|
||||
using (var s = GlobalFileSystem.Open(files.First + ".vxl"))
|
||||
vxl = new VxlReader(s);
|
||||
using (var s = GlobalFileSystem.OpenWithExts(files.Second, ".hva"))
|
||||
using (var s = GlobalFileSystem.Open(files.Second + ".hva"))
|
||||
hva = new HvaReader(s);
|
||||
return new Voxel(this, vxl, hva);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,6 @@ namespace OpenRA
|
||||
public readonly int SheetSize = 512;
|
||||
public readonly string Palette;
|
||||
public readonly string PlayerPalette;
|
||||
public readonly string[] Extensions;
|
||||
public readonly int WaterPaletteRotationBase = 0x60;
|
||||
public readonly byte MaxGroundHeight = 0;
|
||||
public readonly Color[] HeightDebugColors = new[] { Color.Red };
|
||||
@@ -222,12 +221,11 @@ namespace OpenRA
|
||||
.Select(y => new TerrainTemplateInfo(this, y)).ToDictionary(t => t.Id);
|
||||
}
|
||||
|
||||
public TileSet(string name, string id, string palette, string[] extensions, TerrainTypeInfo[] terrainInfo)
|
||||
public TileSet(string name, string id, string palette, TerrainTypeInfo[] terrainInfo)
|
||||
{
|
||||
Name = name;
|
||||
Id = id;
|
||||
Palette = palette;
|
||||
Extensions = extensions;
|
||||
TerrainInfo = terrainInfo;
|
||||
|
||||
if (TerrainInfo.Length >= byte.MaxValue)
|
||||
|
||||
Reference in New Issue
Block a user