UnitSheetBuilder is dead. long live SpriteSheetBuilder

This commit is contained in:
Chris Forbes
2009-12-26 20:41:49 +13:00
parent 44f0b3494f
commit e8bcd630d9
6 changed files with 16 additions and 47 deletions

View File

@@ -57,7 +57,6 @@ namespace OpenRa.Game
{
SheetBuilder.Initialize(renderer);
SpriteSheetBuilder.Initialize();
UnitSheetBuilder.Initialize();
FileSystem.UnmountTemporaryPackages();
Rules.LoadRules(mapName, usingAftermath);
palette = new HardwarePalette(renderer, Rules.Map);

View File

@@ -14,9 +14,8 @@ namespace OpenRa.Game.Graphics
"fpls", "wcrate", "scrate", "barb", "sbag",
};
Sprite[][] overlaySprites;
Sprite[] smudgeSprites;
readonly Sprite[][] overlaySprites;
readonly Sprite[] smudgeSprites;
SpriteRenderer spriteRenderer;
Map map;
@@ -26,13 +25,10 @@ namespace OpenRa.Game.Graphics
this.spriteRenderer = new SpriteRenderer( renderer, true );
this.map = map;
overlaySprites = new Sprite[ overlaySpriteNames.Length ][];
for (int i = 0; i < overlaySpriteNames.Length; i++)
overlaySprites[i] = SpriteSheetBuilder.LoadAllSprites(overlaySpriteNames[i], ".shp", ".tem", ".sno");
overlaySprites = overlaySpriteNames.Select(f => SpriteSheetBuilder.LoadAllSprites2(f)).ToArray();
smudgeSprites = new[] { "bib3", "bib2", "sc1", "sc2", "sc3", "sc4", "sc5", "sc6",
"cr1", "cr2", "cr3", "cr4", "cr5", "cr6", }.SelectMany(
f => SpriteSheetBuilder.LoadAllSprites(f, ".shp", ".tem", ".sno")).ToArray();
f => SpriteSheetBuilder.LoadAllSprites2(f)).ToArray();
}
public void Draw()

View File

@@ -5,6 +5,7 @@ namespace OpenRa.Game.Graphics
{
class Sequence
{
readonly Sprite[] sprites;
readonly int start, length;
public readonly string Name;
@@ -17,13 +18,12 @@ namespace OpenRa.Game.Graphics
string srcOverride = e.GetAttribute("src");
Name = e.GetAttribute("name");
Range<int> src = UnitSheetBuilder.GetUnit(
string.IsNullOrEmpty(srcOverride) ? unit : srcOverride);
start = src.Start + int.Parse(e.GetAttribute("start"));
sprites = SpriteSheetBuilder.LoadAllSprites(string.IsNullOrEmpty(srcOverride) ? unit : srcOverride,
".tem", ".sno", ".int", ".shp" );
start = int.Parse(e.GetAttribute("start"));
if (e.GetAttribute("length") == "*" || e.GetAttribute("end") == "*")
length = src.End - src.Start + 1;
length = sprites.Length - Start;
else if (e.HasAttribute("length"))
length = int.Parse(e.GetAttribute("length"));
else if (e.HasAttribute("end"))
@@ -34,7 +34,7 @@ namespace OpenRa.Game.Graphics
public Sprite GetSprite(int frame)
{
return UnitSheetBuilder.sprites[ ( frame % length ) + start ];
return sprites[ ( frame % length ) + start ];
}
}
}

View File

@@ -11,6 +11,12 @@ namespace OpenRa.Game.Graphics
}
static Dictionary<string, Sprite[]> sprites;
static readonly string[] exts = { ".tem", ".sno", ".int", ".shp" };
public static Sprite[] LoadAllSprites2(string filename)
{
return LoadAllSprites(filename, exts);
}
public static Sprite[] LoadAllSprites( string filename, params string[] exts )
{

View File

@@ -1,31 +0,0 @@
using System.Collections.Generic;
using Ijw.DirectX;
using IjwFramework.Collections;
using OpenRa.FileFormats;
namespace OpenRa.Game.Graphics
{
static class UnitSheetBuilder
{
public static void Initialize()
{
sprites = new List<Sprite>();
sequences = new Cache<string, Range<int>>(AddUnit);
}
public static List<Sprite> sprites;
static Cache<string, Range<int>> sequences;
public static Range<int> GetUnit(string name) { return sequences[name]; }
static Range<int> AddUnit( string name )
{
var low = sprites.Count;
var reader = new ShpReader( FileSystem.OpenWithExts( name, ".tem", ".sno", ".int", ".shp" ) );
foreach (var h in reader)
sprites.Add(SheetBuilder.Add(h.Image, reader.Size));
var sequence = new Range<int>(low, sprites.Count - 1);
return sequence;
}
}
}

View File

@@ -209,7 +209,6 @@
<Compile Include="UnitOrders.cs" />
<Compile Include="Traits\Util.cs" />
<Compile Include="UiOverlay.cs" />
<Compile Include="Graphics\UnitSheetBuilder.cs" />
<Compile Include="Graphics\Util.cs" />
<Compile Include="Graphics\Vertex.cs" />
<Compile Include="Graphics\Viewport.cs" />