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
|
namespace OpenRa.FileFormats
|
||||||
{
|
{
|
||||||
public class Package
|
public interface IFolder
|
||||||
|
{
|
||||||
|
Stream GetContent(string filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class Package : IFolder
|
||||||
{
|
{
|
||||||
readonly string filename;
|
readonly string filename;
|
||||||
readonly List<PackageEntry> index;
|
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;
|
this.device = device;
|
||||||
|
|
||||||
Palette pal = new Palette(File.OpenRead("../../../" + map.Theater + ".pal"));
|
Palette pal = new Palette(FileSystem.Open(map.Theater + ".pal"));
|
||||||
AddPalette(pal);
|
AddPalette(pal);
|
||||||
|
|
||||||
foreach (string remap in new string[] { "blue", "red", "orange", "teal", "salmon", "green", "gray" })
|
foreach (string remap in new string[] { "blue", "red", "orange", "teal", "salmon", "green", "gray" })
|
||||||
AddPalette(new Palette(pal, new PaletteRemap(
|
AddPalette(new Palette(pal, new PaletteRemap(
|
||||||
File.OpenRead("../../../" + remap + ".rem"))));
|
FileSystem.Open( remap + ".rem" ))));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Resolve()
|
void Resolve()
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
public MainWindow(Settings settings)
|
public MainWindow(Settings settings)
|
||||||
{
|
{
|
||||||
|
FileSystem.Mount(new Folder("../../../"));
|
||||||
|
FileSystem.Mount(new Package("../../../conquer.mix"));
|
||||||
|
FileSystem.Mount(new Package("../../../hires.mix"));
|
||||||
|
|
||||||
FormBorderStyle = FormBorderStyle.None;
|
FormBorderStyle = FormBorderStyle.None;
|
||||||
BackColor = Color.Black;
|
BackColor = Color.Black;
|
||||||
StartPosition = FormStartPosition.Manual;
|
StartPosition = FormStartPosition.Manual;
|
||||||
@@ -42,14 +46,11 @@ namespace OpenRa.Game
|
|||||||
bool windowed = !settings.GetValue("fullscreeen", false);
|
bool windowed = !settings.GetValue("fullscreeen", false);
|
||||||
|
|
||||||
renderer = new Renderer(this, GetResolution(settings), windowed);
|
renderer = new Renderer(this, GetResolution(settings), windowed);
|
||||||
|
map = new Map(new IniFile(FileSystem.Open(settings.GetValue("map", "scm12ea.ini"))));
|
||||||
map = new Map(new IniFile(File.OpenRead("../../../" + settings.GetValue("map", "scm12ea.ini"))));
|
|
||||||
|
|
||||||
viewport = new Viewport(new float2(ClientSize), new float2(map.Size), renderer);
|
viewport = new Viewport(new float2(ClientSize), new float2(map.Size), renderer);
|
||||||
|
|
||||||
SheetBuilder.Initialize(renderer.Device);
|
SheetBuilder.Initialize(renderer.Device);
|
||||||
|
FileSystem.Mount(TileMix = new Package("../../../" + map.Theater + ".mix"));
|
||||||
TileMix = new Package("../../../" + map.Theater + ".mix");
|
|
||||||
|
|
||||||
renderer.SetPalette(new HardwarePalette(renderer.Device, map));
|
renderer.SetPalette(new HardwarePalette(renderer.Device, map));
|
||||||
terrain = new TerrainRenderer(renderer, map, TileMix, viewport);
|
terrain = new TerrainRenderer(renderer, map, TileMix, viewport);
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
<Compile Include="Actor.cs" />
|
<Compile Include="Actor.cs" />
|
||||||
<Compile Include="Animation.cs" />
|
<Compile Include="Animation.cs" />
|
||||||
<Compile Include="Building.cs" />
|
<Compile Include="Building.cs" />
|
||||||
|
<Compile Include="FileSystem.cs" />
|
||||||
<Compile Include="Harvester.cs" />
|
<Compile Include="Harvester.cs" />
|
||||||
<Compile Include="Log.cs" />
|
<Compile Include="Log.cs" />
|
||||||
<Compile Include="PathFinder.cs" />
|
<Compile Include="PathFinder.cs" />
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ namespace OpenRa.Game
|
|||||||
device = GraphicsDevice.Create(host,
|
device = GraphicsDevice.Create(host,
|
||||||
resolution.Width, resolution.Height, windowed, false);
|
resolution.Width, resolution.Height, windowed, false);
|
||||||
|
|
||||||
shader = new Effect(device, File.OpenRead("../../../" + shaderName));
|
shader = new Effect(device, FileSystem.Open(shaderName));
|
||||||
shader.Quality = ShaderQuality.Low;
|
shader.Quality = ShaderQuality.Low;
|
||||||
|
|
||||||
baseTextureHandle = shader.GetHandle("DiffuseTexture");
|
baseTextureHandle = shader.GetHandle("DiffuseTexture");
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace OpenRa.Game
|
|||||||
static SequenceProvider()
|
static SequenceProvider()
|
||||||
{
|
{
|
||||||
XmlDocument document = new XmlDocument();
|
XmlDocument document = new XmlDocument();
|
||||||
document.Load("../../../sequences.xml");
|
document.Load(FileSystem.Open("sequences.xml"));
|
||||||
|
|
||||||
foreach (XmlElement eUnit in document.SelectNodes("/sequences/unit"))
|
foreach (XmlElement eUnit in document.SelectNodes("/sequences/unit"))
|
||||||
LoadSequencesForUnit(eUnit);
|
LoadSequencesForUnit(eUnit);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace OpenRa.Game
|
|||||||
TechTree.TechTree techTree = new TechTree.TechTree();
|
TechTree.TechTree techTree = new TechTree.TechTree();
|
||||||
|
|
||||||
SpriteRenderer spriteRenderer;
|
SpriteRenderer spriteRenderer;
|
||||||
Package package;
|
//Package package;
|
||||||
|
|
||||||
Sprite blank;
|
Sprite blank;
|
||||||
|
|
||||||
@@ -30,7 +30,6 @@ namespace OpenRa.Game
|
|||||||
techTree.Build("FACT", true);
|
techTree.Build("FACT", true);
|
||||||
spriteRenderer = new SpriteRenderer(renderer, false);
|
spriteRenderer = new SpriteRenderer(renderer, false);
|
||||||
|
|
||||||
package = new Package("../../../hires.mix");
|
|
||||||
LoadSprites("../../../buildings.txt");
|
LoadSprites("../../../buildings.txt");
|
||||||
LoadSprites("../../../units.txt");
|
LoadSprites("../../../units.txt");
|
||||||
|
|
||||||
@@ -42,7 +41,7 @@ namespace OpenRa.Game
|
|||||||
foreach (string line in File.ReadAllLines(filename))
|
foreach (string line in File.ReadAllLines(filename))
|
||||||
{
|
{
|
||||||
string key = line.Substring(0, line.IndexOf(','));
|
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 =
|
static Dictionary<string, Sprite> sprites =
|
||||||
new Dictionary<string, Sprite>();
|
new Dictionary<string, Sprite>();
|
||||||
|
|
||||||
public static Sprite LoadSprite(Package package, string filename)
|
public static Sprite LoadSprite(string filename)
|
||||||
{
|
{
|
||||||
Sprite value;
|
Sprite value;
|
||||||
if (!sprites.TryGetValue(filename, out 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));
|
sprites.Add(filename, value = SheetBuilder.Add(shp[0].Image, shp.Size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
static TerrainCosts()
|
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++ )
|
for( int i = 0 ; i < 10 ; i++ )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,22 +9,9 @@ namespace OpenRa.Game
|
|||||||
{
|
{
|
||||||
static class UnitSheetBuilder
|
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>();
|
public static readonly List<Sprite> sprites = new List<Sprite>();
|
||||||
|
|
||||||
static Dictionary<string, Range<int>> sequences = new Dictionary<string, Range<int>>();
|
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)
|
public static Range<int> GetUnit(string name)
|
||||||
{
|
{
|
||||||
Range<int> result;
|
Range<int> result;
|
||||||
@@ -39,7 +26,8 @@ namespace OpenRa.Game
|
|||||||
Log.Write("Loading SHP for {0}", name);
|
Log.Write("Loading SHP for {0}", name);
|
||||||
|
|
||||||
int low = sprites.Count;
|
int low = sprites.Count;
|
||||||
ShpReader reader = Load(name + ".shp");
|
|
||||||
|
ShpReader reader = new ShpReader(FileSystem.Open(name + ".shp"));
|
||||||
foreach (ImageHeader h in reader)
|
foreach (ImageHeader h in reader)
|
||||||
sprites.Add(SheetBuilder.Add(h.Image, reader.Size));
|
sprites.Add(SheetBuilder.Add(h.Image, reader.Size));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user