From b0213cb005fd476f1a66af58cfa783b6a90ad5ff Mon Sep 17 00:00:00 2001 From: beedee Date: Fri, 13 Jul 2007 15:19:18 +0000 Subject: [PATCH] git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1204 993157c7-ee19-0410-b2c4-bb4e9862e678 --- OpenRa.Game/CoreSheetBuilder.cs | 2 +- OpenRa.Game/Sidebar.cs | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/OpenRa.Game/CoreSheetBuilder.cs b/OpenRa.Game/CoreSheetBuilder.cs index 876eacc17d..98280ef331 100644 --- a/OpenRa.Game/CoreSheetBuilder.cs +++ b/OpenRa.Game/CoreSheetBuilder.cs @@ -26,7 +26,7 @@ namespace OpenRa.Game } } - static class BeedeeSheetBuilder + static class SpriteSheetBuilder { static Dictionary> sprites = new Dictionary>(); diff --git a/OpenRa.Game/Sidebar.cs b/OpenRa.Game/Sidebar.cs index d2056ca933..b7880017c9 100644 --- a/OpenRa.Game/Sidebar.cs +++ b/OpenRa.Game/Sidebar.cs @@ -8,6 +8,7 @@ using System.Drawing; namespace OpenRa.Game { + using Sprite = SheetRectangle; class Sidebar { TechTree.TechTree techTree = new TechTree.TechTree(); @@ -16,13 +17,14 @@ namespace OpenRa.Game FvfVertexBuffer vertexBuffer; IndexBuffer indexBuffer; const int spritesPerBatch = 1024; - SheetRectangle sprite; + Dictionary sprites = new Dictionary(); public Sidebar(Race race, Renderer renderer) { Package package = new Package("../../../hires.mix"); - sprite = BeedeeSheetBuilder.LoadSprite(package, "e7icon.shp"); + sprites.Add("e7", SpriteSheetBuilder.LoadSprite(package, "e7icon.shp")); + sprites.Add("e6", SpriteSheetBuilder.LoadSprite(package, "e6icon.shp")); techTree.CurrentRace = race; this.renderer = renderer; vertexBuffer = new FvfVertexBuffer(renderer.Device, 4 * spritesPerBatch, Vertex.Format); @@ -34,15 +36,24 @@ namespace OpenRa.Game List vertices = new List(); List indicies = new List(); - PointF location = new PointF(0 + scrollOffset.X, 0 + scrollOffset.Y); + int x = 0, y = 0; - Util.CreateQuad(vertices, indicies, location, sprite, 0); + //foreach (SheetRectangle sprite in sprites.Values) + foreach (Item i in techTree.BuildableBuildings) + { + Sprite sprite; + if (!sprites.TryGetValue(i.tag, out sprite)) continue; + PointF location = new PointF(x + scrollOffset.X, y + scrollOffset.Y); + Util.CreateQuad(vertices, indicies, location, sprite, 0); + y += 48; + } renderer.DrawWithShader(ShaderQuality.Low, delegate { vertexBuffer.SetData(vertices.ToArray()); indexBuffer.SetData(indicies.ToArray()); - renderer.DrawBatch(vertexBuffer, indexBuffer, new Range(0, vertices.Count), new Range(0, indicies.Count), sprite.sheet.Texture); + foreach (Sprite sprite in sprites.Values) + renderer.DrawBatch(vertexBuffer, indexBuffer, new Range(0, vertices.Count), new Range(0, indicies.Count), sprite.sheet.Texture); }); } }