beginnings of removing rampant ../../../ from sources
git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1318 993157c7-ee19-0410-b2c4-bb4e9862e678
This commit is contained in:
@@ -5,7 +5,12 @@ using System.IO;
|
||||
|
||||
namespace OpenRa.FileFormats
|
||||
{
|
||||
public class Package
|
||||
public interface IFolder
|
||||
{
|
||||
Stream GetContent(string filename);
|
||||
}
|
||||
|
||||
public class Package : IFolder
|
||||
{
|
||||
readonly string filename;
|
||||
readonly List<PackageEntry> index;
|
||||
|
||||
40
OpenRa.Game/FileSystem.cs
Normal file
40
OpenRa.Game/FileSystem.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using OpenRa.FileFormats;
|
||||
|
||||
namespace OpenRa.Game
|
||||
{
|
||||
class Folder : IFolder
|
||||
{
|
||||
readonly string path;
|
||||
|
||||
public Folder(string path) { this.path = path; }
|
||||
|
||||
public Stream GetContent(string filename)
|
||||
{
|
||||
try { return File.OpenRead(path + filename); }
|
||||
catch { throw new FileNotFoundException("File not found", filename); }
|
||||
}
|
||||
}
|
||||
|
||||
static class FileSystem
|
||||
{
|
||||
static List<IFolder> mountedFolders = new List<IFolder>();
|
||||
|
||||
public static void Mount(IFolder folder)
|
||||
{
|
||||
mountedFolders.Add(folder);
|
||||
}
|
||||
|
||||
public static Stream Open(string filename)
|
||||
{
|
||||
foreach (IFolder folder in mountedFolders)
|
||||
try { return folder.GetContent(filename); }
|
||||
catch { }
|
||||
|
||||
throw new FileNotFoundException("File not found", filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,12 +23,12 @@ namespace OpenRa.Game
|
||||
{
|
||||
this.device = device;
|
||||
|
||||
Palette pal = new Palette(File.OpenRead("../../../" + map.Theater + ".pal"));
|
||||
Palette pal = new Palette(FileSystem.Open(map.Theater + ".pal"));
|
||||
AddPalette(pal);
|
||||
|
||||
foreach (string remap in new string[] { "blue", "red", "orange", "teal", "salmon", "green", "gray" })
|
||||
AddPalette(new Palette(pal, new PaletteRemap(
|
||||
File.OpenRead("../../../" + remap + ".rem"))));
|
||||
FileSystem.Open( remap + ".rem" ))));
|
||||
}
|
||||
|
||||
void Resolve()
|
||||
|
||||
@@ -33,6 +33,10 @@ namespace OpenRa.Game
|
||||
|
||||
public MainWindow(Settings settings)
|
||||
{
|
||||
FileSystem.Mount(new Folder("../../../"));
|
||||
FileSystem.Mount(new Package("../../../conquer.mix"));
|
||||
FileSystem.Mount(new Package("../../../hires.mix"));
|
||||
|
||||
FormBorderStyle = FormBorderStyle.None;
|
||||
BackColor = Color.Black;
|
||||
StartPosition = FormStartPosition.Manual;
|
||||
@@ -42,14 +46,11 @@ namespace OpenRa.Game
|
||||
bool windowed = !settings.GetValue("fullscreeen", false);
|
||||
|
||||
renderer = new Renderer(this, GetResolution(settings), windowed);
|
||||
|
||||
map = new Map(new IniFile(File.OpenRead("../../../" + settings.GetValue("map", "scm12ea.ini"))));
|
||||
|
||||
map = new Map(new IniFile(FileSystem.Open(settings.GetValue("map", "scm12ea.ini"))));
|
||||
viewport = new Viewport(new float2(ClientSize), new float2(map.Size), renderer);
|
||||
|
||||
SheetBuilder.Initialize(renderer.Device);
|
||||
|
||||
TileMix = new Package("../../../" + map.Theater + ".mix");
|
||||
FileSystem.Mount(TileMix = new Package("../../../" + map.Theater + ".mix"));
|
||||
|
||||
renderer.SetPalette(new HardwarePalette(renderer.Device, map));
|
||||
terrain = new TerrainRenderer(renderer, map, TileMix, viewport);
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
<Compile Include="Actor.cs" />
|
||||
<Compile Include="Animation.cs" />
|
||||
<Compile Include="Building.cs" />
|
||||
<Compile Include="FileSystem.cs" />
|
||||
<Compile Include="Harvester.cs" />
|
||||
<Compile Include="Log.cs" />
|
||||
<Compile Include="PathFinder.cs" />
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace OpenRa.Game
|
||||
device = GraphicsDevice.Create(host,
|
||||
resolution.Width, resolution.Height, windowed, false);
|
||||
|
||||
shader = new Effect(device, File.OpenRead("../../../" + shaderName));
|
||||
shader = new Effect(device, FileSystem.Open(shaderName));
|
||||
shader.Quality = ShaderQuality.Low;
|
||||
|
||||
baseTextureHandle = shader.GetHandle("DiffuseTexture");
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace OpenRa.Game
|
||||
static SequenceProvider()
|
||||
{
|
||||
XmlDocument document = new XmlDocument();
|
||||
document.Load("../../../sequences.xml");
|
||||
document.Load(FileSystem.Open("sequences.xml"));
|
||||
|
||||
foreach (XmlElement eUnit in document.SelectNodes("/sequences/unit"))
|
||||
LoadSequencesForUnit(eUnit);
|
||||
|
||||
@@ -15,7 +15,7 @@ namespace OpenRa.Game
|
||||
TechTree.TechTree techTree = new TechTree.TechTree();
|
||||
|
||||
SpriteRenderer spriteRenderer;
|
||||
Package package;
|
||||
//Package package;
|
||||
|
||||
Sprite blank;
|
||||
|
||||
@@ -30,7 +30,6 @@ namespace OpenRa.Game
|
||||
techTree.Build("FACT", true);
|
||||
spriteRenderer = new SpriteRenderer(renderer, false);
|
||||
|
||||
package = new Package("../../../hires.mix");
|
||||
LoadSprites("../../../buildings.txt");
|
||||
LoadSprites("../../../units.txt");
|
||||
|
||||
@@ -42,7 +41,7 @@ namespace OpenRa.Game
|
||||
foreach (string line in File.ReadAllLines(filename))
|
||||
{
|
||||
string key = line.Substring(0, line.IndexOf(','));
|
||||
sprites.Add(key, SpriteSheetBuilder.LoadSprite(package, key + "icon.shp"));
|
||||
sprites.Add(key, SpriteSheetBuilder.LoadSprite(key + "icon.shp"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,12 +10,12 @@ namespace OpenRa.Game
|
||||
static Dictionary<string, Sprite> sprites =
|
||||
new Dictionary<string, Sprite>();
|
||||
|
||||
public static Sprite LoadSprite(Package package, string filename)
|
||||
public static Sprite LoadSprite(string filename)
|
||||
{
|
||||
Sprite value;
|
||||
if (!sprites.TryGetValue(filename, out value))
|
||||
{
|
||||
ShpReader shp = new ShpReader(package.GetContent(filename));
|
||||
ShpReader shp = new ShpReader(FileSystem.Open(filename));
|
||||
sprites.Add(filename, value = SheetBuilder.Add(shp[0].Image, shp.Size));
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace OpenRa.Game
|
||||
|
||||
static TerrainCosts()
|
||||
{
|
||||
IniFile file = new IniFile( File.OpenRead( "../../../rules.ini" ) );
|
||||
IniFile file = new IniFile(FileSystem.Open("rules.ini"));
|
||||
|
||||
for( int i = 0 ; i < 10 ; i++ )
|
||||
{
|
||||
|
||||
@@ -9,22 +9,9 @@ namespace OpenRa.Game
|
||||
{
|
||||
static class UnitSheetBuilder
|
||||
{
|
||||
static readonly Package unitsPackage = new Package( "../../../conquer.mix" );
|
||||
static readonly Package otherUnitsPackage = new Package("../../../hires.mix");
|
||||
|
||||
public static readonly List<Sprite> sprites = new List<Sprite>();
|
||||
|
||||
static Dictionary<string, Range<int>> sequences = new Dictionary<string, Range<int>>();
|
||||
|
||||
static ShpReader Load(string filename)
|
||||
{
|
||||
foreach( Package p in new Package[] { unitsPackage, otherUnitsPackage } )
|
||||
try { return new ShpReader(p.GetContent(filename)); }
|
||||
catch { }
|
||||
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public static Range<int> GetUnit(string name)
|
||||
{
|
||||
Range<int> result;
|
||||
@@ -39,7 +26,8 @@ namespace OpenRa.Game
|
||||
Log.Write("Loading SHP for {0}", name);
|
||||
|
||||
int low = sprites.Count;
|
||||
ShpReader reader = Load(name + ".shp");
|
||||
|
||||
ShpReader reader = new ShpReader(FileSystem.Open(name + ".shp"));
|
||||
foreach (ImageHeader h in reader)
|
||||
sprites.Add(SheetBuilder.Add(h.Image, reader.Size));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user