From e8bcd630d90cc9e83aa2a4df0d8650babe5d2cf9 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 26 Dec 2009 20:41:49 +1300 Subject: [PATCH] UnitSheetBuilder is dead. long live SpriteSheetBuilder --- OpenRa.Game/Game.cs | 1 - OpenRa.Game/Graphics/OverlayRenderer.cs | 12 +++------ OpenRa.Game/Graphics/Sequence.cs | 12 ++++----- OpenRa.Game/Graphics/SpriteSheetBuilder.cs | 6 +++++ OpenRa.Game/Graphics/UnitSheetBuilder.cs | 31 ---------------------- OpenRa.Game/OpenRa.Game.csproj | 1 - 6 files changed, 16 insertions(+), 47 deletions(-) delete mode 100644 OpenRa.Game/Graphics/UnitSheetBuilder.cs diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 425d65c1f8..0f513f3da6 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -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); diff --git a/OpenRa.Game/Graphics/OverlayRenderer.cs b/OpenRa.Game/Graphics/OverlayRenderer.cs index fad810527c..07ceafe58a 100755 --- a/OpenRa.Game/Graphics/OverlayRenderer.cs +++ b/OpenRa.Game/Graphics/OverlayRenderer.cs @@ -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() diff --git a/OpenRa.Game/Graphics/Sequence.cs b/OpenRa.Game/Graphics/Sequence.cs index ff78034bc9..6c63f0d793 100644 --- a/OpenRa.Game/Graphics/Sequence.cs +++ b/OpenRa.Game/Graphics/Sequence.cs @@ -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 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 ]; } } } diff --git a/OpenRa.Game/Graphics/SpriteSheetBuilder.cs b/OpenRa.Game/Graphics/SpriteSheetBuilder.cs index a6a043fd8a..c0adaec761 100644 --- a/OpenRa.Game/Graphics/SpriteSheetBuilder.cs +++ b/OpenRa.Game/Graphics/SpriteSheetBuilder.cs @@ -11,6 +11,12 @@ namespace OpenRa.Game.Graphics } static Dictionary 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 ) { diff --git a/OpenRa.Game/Graphics/UnitSheetBuilder.cs b/OpenRa.Game/Graphics/UnitSheetBuilder.cs deleted file mode 100644 index 993662374d..0000000000 --- a/OpenRa.Game/Graphics/UnitSheetBuilder.cs +++ /dev/null @@ -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(); - sequences = new Cache>(AddUnit); - } - - public static List sprites; - static Cache> sequences; - - public static Range GetUnit(string name) { return sequences[name]; } - - static Range 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(low, sprites.Count - 1); - return sequence; - } - } -} diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index ac0c0d34f2..818cbb205c 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -209,7 +209,6 @@ -