minimap: show ore/gems on minimap

This commit is contained in:
Chris Forbes
2010-01-05 14:49:48 +13:00
parent a8e49556ca
commit e68547f9d0
2 changed files with 20 additions and 6 deletions

View File

@@ -100,7 +100,7 @@ namespace OpenRa.Game
chrome = new Chrome(renderer); chrome = new Chrome(renderer);
oreFrequency = (int)(Rules.General.GrowthRate * 60 * 1000); oreFrequency = (int)(Rules.General.GrowthRate * 60 * 25);
oreTicks = oreFrequency; oreTicks = oreFrequency;
} }
@@ -182,9 +182,10 @@ namespace OpenRa.Game
controller.orderGenerator.Tick(); controller.orderGenerator.Tick();
if (--oreTicks == 0) if (--oreTicks == 0)
{
using (new PerfSample("ore")) using (new PerfSample("ore"))
{
Rules.Map.GrowOre(SharedRandom); Rules.Map.GrowOre(SharedRandom);
minimap.InvalidateOre();
oreTicks = oreFrequency; oreTicks = oreFrequency;
} }

View File

@@ -10,7 +10,7 @@ namespace OpenRa.Game.Graphics
Sheet sheet; Sheet sheet;
SpriteRenderer spriteRenderer; SpriteRenderer spriteRenderer;
Sprite sprite; Sprite sprite;
Bitmap terrain; Bitmap terrain, oreLayer;
public void Tick() { } public void Tick() { }
@@ -24,6 +24,8 @@ namespace OpenRa.Game.Graphics
// todo: extract these from the palette // todo: extract these from the palette
Color[] terrainTypeColors; Color[] terrainTypeColors;
public void InvalidateOre() { oreLayer = null; }
public void Update() public void Update()
{ {
if (terrainTypeColors == null) if (terrainTypeColors == null)
@@ -39,8 +41,10 @@ namespace OpenRa.Game.Graphics
pal.GetColor(0x1f), pal.GetColor(0x1f),
pal.GetColor(0x68), pal.GetColor(0x68),
pal.GetColor(0x6b), pal.GetColor(0x6b),
pal.GetColor(0x6d),
}; };
} }
if (terrain == null) if (terrain == null)
{ {
terrain = new Bitmap(128, 128); terrain = new Bitmap(128, 128);
@@ -51,7 +55,16 @@ namespace OpenRa.Game.Graphics
: Color.Black); : Color.Black);
} }
var bitmap = new Bitmap(terrain); if (oreLayer == null)
{
oreLayer = new Bitmap(terrain);
for (var y = 0; y < 128; y++)
for (var x = 0; x < 128; x++)
if (Rules.Map.ContainsResource(new int2(x, y)))
oreLayer.SetPixel(x, y, terrainTypeColors[(int)TerrainMovementType.Ore]);
}
var bitmap = new Bitmap(oreLayer);
for( var y = 0; y < 128; y++ ) for( var y = 0; y < 128; y++ )
for (var x = 0; x < 128; x++) for (var x = 0; x < 128; x++)