and some more

This commit is contained in:
Chris Forbes
2009-12-26 20:46:17 +13:00
parent e8bcd630d9
commit f73ddd7d4e
4 changed files with 13 additions and 21 deletions

View File

@@ -57,7 +57,7 @@ namespace OpenRa.Game
.Where(u => Rules.UnitInfo[u].TechLevel != -1) .Where(u => Rules.UnitInfo[u].TechLevel != -1)
.ToDictionary( .ToDictionary(
u => u, u => u,
u => SpriteSheetBuilder.LoadAllSprites(u + "icon", ".shp")[0]); u => SpriteSheetBuilder.LoadAllSprites(u + "icon")[0]);
tabSprites = groups.Select( tabSprites = groups.Select(
(g, i) => Pair.New(g, (g, i) => Pair.New(g,

View File

@@ -25,10 +25,10 @@ namespace OpenRa.Game.Graphics
this.spriteRenderer = new SpriteRenderer( renderer, true ); this.spriteRenderer = new SpriteRenderer( renderer, true );
this.map = map; this.map = map;
overlaySprites = overlaySpriteNames.Select(f => SpriteSheetBuilder.LoadAllSprites2(f)).ToArray(); overlaySprites = overlaySpriteNames.Select(f => SpriteSheetBuilder.LoadAllSprites(f)).ToArray();
smudgeSprites = new[] { "bib3", "bib2", "sc1", "sc2", "sc3", "sc4", "sc5", "sc6", smudgeSprites = new[] { "bib3", "bib2", "sc1", "sc2", "sc3", "sc4", "sc5", "sc6",
"cr1", "cr2", "cr3", "cr4", "cr5", "cr6", }.SelectMany( "cr1", "cr2", "cr3", "cr4", "cr5", "cr6", }.SelectMany(
f => SpriteSheetBuilder.LoadAllSprites2(f)).ToArray(); f => SpriteSheetBuilder.LoadAllSprites(f)).ToArray();
} }
public void Draw() public void Draw()

View File

@@ -18,8 +18,7 @@ namespace OpenRa.Game.Graphics
string srcOverride = e.GetAttribute("src"); string srcOverride = e.GetAttribute("src");
Name = e.GetAttribute("name"); Name = e.GetAttribute("name");
sprites = SpriteSheetBuilder.LoadAllSprites(string.IsNullOrEmpty(srcOverride) ? unit : srcOverride, sprites = SpriteSheetBuilder.LoadAllSprites(string.IsNullOrEmpty(srcOverride) ? unit : srcOverride );
".tem", ".sno", ".int", ".shp" );
start = int.Parse(e.GetAttribute("start")); start = int.Parse(e.GetAttribute("start"));
if (e.GetAttribute("length") == "*" || e.GetAttribute("end") == "*") if (e.GetAttribute("length") == "*" || e.GetAttribute("end") == "*")

View File

@@ -1,5 +1,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using OpenRa.FileFormats; using OpenRa.FileFormats;
using IjwFramework.Collections;
using System.Linq;
namespace OpenRa.Game.Graphics namespace OpenRa.Game.Graphics
{ {
@@ -7,30 +9,21 @@ namespace OpenRa.Game.Graphics
{ {
public static void Initialize() public static void Initialize()
{ {
sprites = new Dictionary<string, Sprite[]>(); sprites = new Cache<string, Sprite[]>( LoadSprites );
} }
static Dictionary<string, Sprite[]> sprites; static Cache<string, Sprite[]> sprites;
static readonly string[] exts = { ".tem", ".sno", ".int", ".shp" }; static readonly string[] exts = { ".tem", ".sno", ".int", ".shp" };
public static Sprite[] LoadAllSprites2(string filename) static Sprite[] LoadSprites(string filename)
{ {
return LoadAllSprites(filename, exts); var shp = new ShpReader(FileSystem.OpenWithExts(filename, exts));
return shp.Select(a => SheetBuilder.Add(a.Image, shp.Size)).ToArray();
} }
public static Sprite[] LoadAllSprites( string filename, params string[] exts ) public static Sprite[] LoadAllSprites( string filename )
{ {
Sprite[] value; return sprites[filename];
if( !sprites.TryGetValue( filename, out value ) )
{
ShpReader shp = new ShpReader( FileSystem.OpenWithExts( filename, exts ) );
value = new Sprite[ shp.ImageCount ];
for( int i = 0 ; i < shp.ImageCount ; i++ )
value[ i ] = SheetBuilder.Add( shp[ i ].Image, shp.Size );
sprites.Add( filename, value );
}
return value;
} }
} }
} }