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:
(no author)
2007-07-21 04:16:15 +00:00
parent c331e190a7
commit dde1852b12
11 changed files with 64 additions and 30 deletions

View File

@@ -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
View 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);
}
}
}

View File

@@ -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()

View File

@@ -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);

View File

@@ -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" />

View File

@@ -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");

View File

@@ -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);

View File

@@ -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"));
}
}

View File

@@ -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));
}

View File

@@ -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++ )
{

View File

@@ -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));