minimap sketch

This commit is contained in:
Chris Forbes
2010-01-03 23:29:24 +13:00
parent 56db75ae32
commit cf68f026a6
5 changed files with 52 additions and 1 deletions

View File

@@ -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),

View File

@@ -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<bool> b) { buttons.Add(Pair.New(r, b)); }

View File

@@ -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<IPaletteModifier>()));
minimap.Update();
orderManager.TickImmediate();
if (orderManager.IsReadyForNextFrame)

View File

@@ -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();
}
}
}

View File

@@ -95,6 +95,7 @@
<Compile Include="GameRules\UserSettings.cs" />
<Compile Include="GameRules\VoiceInfo.cs" />
<Compile Include="Effects\IEffect.cs" />
<Compile Include="Graphics\Minimap.cs" />
<Compile Include="Orders\ChronosphereSelectOrderGenerator.cs" />
<Compile Include="Orders\IOrderSource.cs" />
<Compile Include="Orders\LocalOrderSource.cs" />