diff --git a/OpenRa.Game/Graphics/UnitSheetBuilder.cs b/OpenRa.Game/Graphics/UnitSheetBuilder.cs index fba8d61661..e7da525daa 100644 --- a/OpenRa.Game/Graphics/UnitSheetBuilder.cs +++ b/OpenRa.Game/Graphics/UnitSheetBuilder.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using Ijw.DirectX; using OpenRa.FileFormats; +using IjwFramework.Collections; namespace OpenRa.Game.Graphics { @@ -9,36 +10,21 @@ namespace OpenRa.Game.Graphics public static void Initialize() { sprites = new List(); - sequences = new Dictionary>(); + sequences = new Cache>(AddUnit); } public static List sprites; - static Dictionary> sequences; - - public static Range GetUnit(string name) - { - Range result; - if (sequences.TryGetValue(name, out result)) - return result; - - return AddUnit(name); - } + static Cache> sequences; + public static Range GetUnit(string name) { return sequences[name]; } + static Range AddUnit( string name ) { - Log.Write("Loading SHP for {0}", name); - - int low = sprites.Count; - - ShpReader reader = new ShpReader( FileSystem.OpenWithExts( name, ".tem", ".sno", ".int", ".shp" ) ); - foreach (ImageHeader h in reader) + 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)); - - Range sequence = new Range(low, sprites.Count - 1); - sequences.Add(name, sequence); - - Log.Write("Loaded SHP for {0}", name); - + var sequence = new Range(low, sprites.Count - 1); return sequence; } }