From cf68f026a6443c6ddf67c0379b5d3aa461c866de Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 3 Jan 2010 23:29:24 +1300 Subject: [PATCH] minimap sketch --- OpenRa.Game/Chat.cs | 2 +- OpenRa.Game/Chrome.cs | 2 ++ OpenRa.Game/Game.cs | 4 +++ OpenRa.Game/Graphics/Minimap.cs | 44 +++++++++++++++++++++++++++++++++ OpenRa.Game/OpenRa.Game.csproj | 1 + 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 OpenRa.Game/Graphics/Minimap.cs diff --git a/OpenRa.Game/Chat.cs b/OpenRa.Game/Chat.cs index adbac6dcde..f95b214172 100644 --- a/OpenRa.Game/Chat.cs +++ b/OpenRa.Game/Chat.cs @@ -34,7 +34,7 @@ namespace OpenRa.Game typing += c; } - static readonly Color[] paletteColors = + public static readonly Color[] paletteColors = { Color.FromArgb(228, 200, 112), Color.FromArgb(56, 72, 125), diff --git a/OpenRa.Game/Chrome.cs b/OpenRa.Game/Chrome.cs index c9d626ad38..e090d91897 100644 --- a/OpenRa.Game/Chrome.cs +++ b/OpenRa.Game/Chrome.cs @@ -143,6 +143,8 @@ namespace OpenRa.Game int paletteHeight = DrawBuildPalette(currentTab); DrawBuildTabs(paletteHeight); DrawChat(); + + Game.minimap.Draw(new float2(30,30)); } void AddButton(Rectangle r, Action b) { buttons.Add(Pair.New(r, b)); } diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index a068834f48..cb2e3fed1b 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -48,6 +48,7 @@ namespace OpenRa.Game static bool usingAftermath; static int2 clientSize; static HardwarePalette palette; + public static Minimap minimap; public static void ChangeMap(string mapName) { @@ -78,6 +79,7 @@ namespace OpenRa.Game Rules.Map.InitOreDensity(); worldRenderer = new WorldRenderer(renderer); + minimap = new Minimap(renderer); SequenceProvider.Initialize(usingAftermath); viewport = new Viewport(clientSize, Rules.Map.Offset, Rules.Map.Offset + Rules.Map.Size, renderer); @@ -169,6 +171,8 @@ namespace OpenRa.Game lastTime += Settings.Timestep; UpdatePalette(world.Actors.SelectMany( a => a.traits.WithInterface())); + minimap.Update(); + orderManager.TickImmediate(); if (orderManager.IsReadyForNextFrame) diff --git a/OpenRa.Game/Graphics/Minimap.cs b/OpenRa.Game/Graphics/Minimap.cs new file mode 100644 index 0000000000..a7c3251e55 --- /dev/null +++ b/OpenRa.Game/Graphics/Minimap.cs @@ -0,0 +1,44 @@ +using System.Drawing; + +namespace OpenRa.Game.Graphics +{ + class Minimap + { + Sheet sheet; + SpriteRenderer spriteRenderer; + Sprite sprite; + + public void Tick() { } + + public Minimap(Renderer r) + { + sheet = new Sheet(r, new Size(128, 128)); + spriteRenderer = new SpriteRenderer(r, true, r.RgbaSpriteShader); + sprite = new Sprite(sheet, new Rectangle(0, 0, 128, 128), TextureChannel.Alpha); + } + + public void Update() + { + var bitmap = new Bitmap(128, 128); + + for( var y = 0; y < 128; y++ ) + for (var x = 0; x < 128; x++) + { + // todo: use player color + var b = Game.BuildingInfluence.GetBuildingAt(new int2(x, y)); + if (b != null && b.Owner != null) + bitmap.SetPixel(x, y, Chat.paletteColors[ (int)b.Owner.Palette ]); + //else + // bitmap.SetPixel(x, y, Color.Red); + } + + sheet.Texture.SetData(bitmap); + } + + public void Draw(float2 pos) + { + spriteRenderer.DrawSprite(sprite, pos, PaletteType.Chrome); + spriteRenderer.Flush(); + } + } +} diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index 68cfee2a41..844b6e167a 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -95,6 +95,7 @@ +