diff --git a/OpenRa.Game/Chrome.cs b/OpenRa.Game/Chrome.cs index f9cff8ca18..c6f25956c8 100644 --- a/OpenRa.Game/Chrome.cs +++ b/OpenRa.Game/Chrome.cs @@ -26,6 +26,13 @@ namespace OpenRa.Game specialBinSprite = new Sprite(specialBin, new Rectangle(0, 0, 64, 256), TextureChannel.Alpha); moneyBinSprite = new Sprite(specialBin, new Rectangle(128, 0, 384, 64), TextureChannel.Alpha); + + sprites = groups + .SelectMany(g => Rules.Categories[g]) + .Where(u => Rules.UnitInfo[u].TechLevel != -1) + .ToDictionary( + u => u, + u => SpriteSheetBuilder.LoadSprite(u + "icon", ".shp")); } public void Draw() @@ -45,14 +52,33 @@ namespace OpenRa.Game chromeRenderer.DrawSprite(specialBinSprite, float2.Zero, 0); chromeRenderer.DrawSprite(moneyBinSprite, new float2( Game.viewport.Width - 384, 0 ), 0); chromeRenderer.Flush(); + + DrawBuildPalette("Building"); } + static string[] groups = new string[] { "Building", "Vehicle", "Ship", "Infantry", "Plane" }; + Dictionary sprites; + void DrawBuildPalette(string queueName) { var buildItem = Game.LocalPlayer.Producing(queueName); + var x = 0; + var y = 0; + foreach (var item in Rules.TechTree.BuildableItems(Game.LocalPlayer, queueName)) { + buildPaletteRenderer.DrawSprite(sprites[item], + new float2( + Game.viewport.Width - (3 - x) * 64 - 20, + 32 + 48 * y), 0); + + if (++x == 3) + { + x = 0; y++; + } } + + buildPaletteRenderer.Flush(); } } } diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index b29ae4e016..17c759fcaf 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -81,7 +81,7 @@ namespace OpenRa.Game sounds = new Cache(LoadSound); orderManager = (Replay == "") - ? new OrderManager(new OrderSource[] { new LocalOrderSource(), new NetworkOrderSource( new TcpClient( "127.0.0.1", 1234 ) ) }, "replay.rep") + ? new OrderManager(new OrderSource[] { new LocalOrderSource(), new NetworkOrderSource( new TcpClient( "127.0.0.1", 1235 ) ) }, "replay.rep") : new OrderManager(new OrderSource[] { new ReplayOrderSource( Replay ) }); PlaySound("intro.aud", false); diff --git a/OpenRa.Game/OrderManager.cs b/OpenRa.Game/OrderManager.cs index c1480cb84f..f02e5965c2 100755 --- a/OpenRa.Game/OrderManager.cs +++ b/OpenRa.Game/OrderManager.cs @@ -15,7 +15,7 @@ namespace OpenRa.Game List players; int frameNumber = 0; - const int FramesAhead = 3; + const int FramesAhead = 10; public int FrameNumber { get { return frameNumber; } }