From 848622054d85735c41771b7bb73b6940c23429cd Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 8 Jan 2011 21:03:33 +1300 Subject: [PATCH] unstatic SpriteLoader --- OpenRA.Game/Graphics/Sequence.cs | 2 +- OpenRA.Game/Graphics/ShroudRenderer.cs | 2 +- OpenRA.Game/Graphics/SpriteLoader.cs | 14 +++++++------- OpenRA.Game/ModData.cs | 3 ++- OpenRA.Game/Traits/World/ResourceLayer.cs | 2 +- OpenRA.Game/Widgets/ShpImageWidget.cs | 2 +- OpenRA.Mods.RA/Buildings/BibLayer.cs | 2 +- OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs | 3 ++- OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs | 2 +- OpenRA.Mods.RA/World/SmudgeLayer.cs | 2 +- 10 files changed, 18 insertions(+), 16 deletions(-) diff --git a/OpenRA.Game/Graphics/Sequence.cs b/OpenRA.Game/Graphics/Sequence.cs index 00c4880366..5b8b43b384 100644 --- a/OpenRA.Game/Graphics/Sequence.cs +++ b/OpenRA.Game/Graphics/Sequence.cs @@ -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")) diff --git a/OpenRA.Game/Graphics/ShroudRenderer.cs b/OpenRA.Game/Graphics/ShroudRenderer.cs index b1cc0068bb..4599c022f9 100644 --- a/OpenRA.Game/Graphics/ShroudRenderer.cs +++ b/OpenRA.Game/Graphics/ShroudRenderer.cs @@ -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; diff --git a/OpenRA.Game/Graphics/SpriteLoader.cs b/OpenRA.Game/Graphics/SpriteLoader.cs index 8f14f1fc0f..27fe912771 100644 --- a/OpenRA.Game/Graphics/SpriteLoader.cs +++ b/OpenRA.Game/Graphics/SpriteLoader.cs @@ -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( LoadSprites ); } - static SheetBuilder SheetBuilder; - static Cache sprites; - static string[] exts; + readonly SheetBuilder SheetBuilder; + readonly Cache 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]; } } } diff --git a/OpenRA.Game/ModData.cs b/OpenRA.Game/ModData.cs index ebd7cbac2d..7b87cf9cf7 100755 --- a/OpenRA.Game/ModData.cs +++ b/OpenRA.Game/ModData.cs @@ -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); diff --git a/OpenRA.Game/Traits/World/ResourceLayer.cs b/OpenRA.Game/Traits/World/ResourceLayer.cs index 652aaeda1a..4649b62689 100644 --- a/OpenRA.Game/Traits/World/ResourceLayer.cs +++ b/OpenRA.Game/Traits/World/ResourceLayer.cs @@ -51,7 +51,7 @@ namespace OpenRA.Traits resourceTypes = w.WorldActor.TraitsImplementing().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; diff --git a/OpenRA.Game/Widgets/ShpImageWidget.cs b/OpenRA.Game/Widgets/ShpImageWidget.cs index 4043a984c1..ddd56c32c8 100644 --- a/OpenRA.Game/Widgets/ShpImageWidget.cs +++ b/OpenRA.Game/Widgets/ShpImageWidget.cs @@ -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; } diff --git a/OpenRA.Mods.RA/Buildings/BibLayer.cs b/OpenRA.Mods.RA/Buildings/BibLayer.cs index 20297e2409..d1ec4cdc6c 100755 --- a/OpenRA.Mods.RA/Buildings/BibLayer.cs +++ b/OpenRA.Mods.RA/Buildings/BibLayer.cs @@ -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()) DoBib(a,true); }; diff --git a/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs b/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs index 0258ca8a05..ee81f111c7 100755 --- a/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs +++ b/OpenRA.Mods.RA/Widgets/BuildPaletteWidget.cs @@ -70,7 +70,8 @@ namespace OpenRA.Mods.RA.Widgets .Where(u => u.Traits.Contains() && u.Name[0] != '^') .ToDictionary( u => u.Name, - u => SpriteLoader.LoadAllSprites(u.Traits.Get().Icon ?? (u.Name + "icon"))[0]); + u => Game.modData.SpriteLoader.LoadAllSprites( + u.Traits.Get().Icon ?? (u.Name + "icon"))[0]); } public override Rectangle EventBounds diff --git a/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs b/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs index 0720f4baaf..a67d7683b0 100755 --- a/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs +++ b/OpenRA.Mods.RA/Widgets/SpecialPowerBinWidget.cs @@ -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"); diff --git a/OpenRA.Mods.RA/World/SmudgeLayer.cs b/OpenRA.Mods.RA/World/SmudgeLayer.cs index e1f4cfd621..b009e6876f 100755 --- a/OpenRA.Mods.RA/World/SmudgeLayer.cs +++ b/OpenRA.Mods.RA/World/SmudgeLayer.cs @@ -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)