unstatic SpriteLoader

This commit is contained in:
Chris Forbes
2011-01-08 21:03:33 +13:00
committed by Paul Chote
parent f032322948
commit 848622054d
10 changed files with 18 additions and 16 deletions

View File

@@ -33,7 +33,7 @@ namespace OpenRA.Graphics
Name = name;
var d = info.NodesDict;
sprites = SpriteLoader.LoadAllSprites(string.IsNullOrEmpty(srcOverride) ? unit : srcOverride );
sprites = Game.modData.SpriteLoader.LoadAllSprites(string.IsNullOrEmpty(srcOverride) ? unit : srcOverride );
start = int.Parse(d["Start"].Value);
if (!d.ContainsKey("Length"))

View File

@@ -16,7 +16,7 @@ namespace OpenRA.Graphics
public class ShroudRenderer
{
Traits.Shroud shroud;
Sprite[] shadowBits = SpriteLoader.LoadAllSprites("shadow");
Sprite[] shadowBits = Game.modData.SpriteLoader.LoadAllSprites("shadow");
Sprite[,] sprites, fogSprites;
bool dirty = true;

View File

@@ -13,25 +13,25 @@ using OpenRA.FileFormats;
namespace OpenRA.Graphics
{
public static class SpriteLoader
public class SpriteLoader
{
public static void Initialize( TileSet tileset, SheetBuilder sheetBuilder )
public SpriteLoader( TileSet tileset, SheetBuilder sheetBuilder )
{
exts = tileset.Extensions;
SheetBuilder = sheetBuilder;
sprites = new Cache<string, Sprite[]>( LoadSprites );
}
static SheetBuilder SheetBuilder;
static Cache<string, Sprite[]> sprites;
static string[] exts;
readonly SheetBuilder SheetBuilder;
readonly Cache<string, Sprite[]> sprites;
readonly string[] exts;
static Sprite[] LoadSprites(string filename)
Sprite[] LoadSprites(string filename)
{
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) { return sprites[filename]; }
public Sprite[] LoadAllSprites(string filename) { return sprites[filename]; }
}
}

View File

@@ -25,6 +25,7 @@ namespace OpenRA
public ILoadScreen LoadScreen = null;
public SheetBuilder SheetBuilder;
public CursorSheetBuilder CursorSheetBuilder;
public SpriteLoader SpriteLoader;
public ModData( params string[] mods )
{
@@ -103,7 +104,7 @@ namespace OpenRA
|| previousMapHadSequences || map.Sequences.Count > 0)
{
SheetBuilder = new SheetBuilder( TextureChannel.Red );
SpriteLoader.Initialize( Rules.TileSets[map.Tileset], SheetBuilder );
SpriteLoader = new SpriteLoader(Rules.TileSets[map.Tileset], SheetBuilder);
CursorSheetBuilder = new CursorSheetBuilder( this );
CursorProvider.Initialize(Manifest.Cursors);
SequenceProvider.Initialize(Manifest.Sequences, map.Sequences);

View File

@@ -51,7 +51,7 @@ namespace OpenRA.Traits
resourceTypes = w.WorldActor.TraitsImplementing<ResourceType>().ToArray();
foreach (var rt in resourceTypes)
rt.info.Sprites = rt.info.SpriteNames.Select(a => SpriteLoader.LoadAllSprites(a)).ToArray();
rt.info.Sprites = rt.info.SpriteNames.Select(a => Game.modData.SpriteLoader.LoadAllSprites(a)).ToArray();
var map = w.Map;

View File

@@ -60,7 +60,7 @@ namespace OpenRA.Widgets
if (image != cachedImage || frame != cachedFrame)
{
sprite = SpriteLoader.LoadAllSprites(image)[frame];
sprite = Game.modData.SpriteLoader.LoadAllSprites(image)[frame];
cachedImage = image;
cachedFrame = frame;
}

View File

@@ -35,7 +35,7 @@ namespace OpenRA.Mods.RA.Buildings
public BibLayer(Actor self, BibLayerInfo info)
{
this.info = info;
bibSprites = info.BibTypes.Select(x => SpriteLoader.LoadAllSprites(x)).ToArray();
bibSprites = info.BibTypes.Select(x => Game.modData.SpriteLoader.LoadAllSprites(x)).ToArray();
self.World.ActorAdded +=
a => { if (a.HasTrait<Bib>()) DoBib(a,true); };

View File

@@ -70,7 +70,8 @@ namespace OpenRA.Mods.RA.Widgets
.Where(u => u.Traits.Contains<BuildableInfo>() && u.Name[0] != '^')
.ToDictionary(
u => u.Name,
u => SpriteLoader.LoadAllSprites(u.Traits.Get<TooltipInfo>().Icon ?? (u.Name + "icon"))[0]);
u => Game.modData.SpriteLoader.LoadAllSprites(
u.Traits.Get<TooltipInfo>().Icon ?? (u.Name + "icon"))[0]);
}
public override Rectangle EventBounds

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Mods.RA.Widgets
.Select(u => u.Image).Distinct()
.ToDictionary(
u => u,
u => SpriteLoader.LoadAllSprites(u)[0]);
u => Game.modData.SpriteLoader.LoadAllSprites(u)[0]);
ready = new Animation("pips");
ready.PlayRepeating("ready");

View File

@@ -36,7 +36,7 @@ namespace OpenRA.Mods.RA
public SmudgeLayer(SmudgeLayerInfo info)
{
this.Info = info;
smudgeSprites = Info.Types.Select(x => SpriteLoader.LoadAllSprites(x)).ToArray();
smudgeSprites = Info.Types.Select(x => Game.modData.SpriteLoader.LoadAllSprites(x)).ToArray();
}
public void WorldLoaded(World w)