Minimap refactoring; don't render the minimap unless we have radar.
This commit is contained in:
@@ -131,8 +131,6 @@ namespace OpenRA.Graphics
|
||||
var shroud = Color.Black.ToArgb();
|
||||
var fogOpacity = 0.5f;
|
||||
|
||||
|
||||
|
||||
unsafe
|
||||
{
|
||||
int* c = (int*)bitmapData.Scan0;
|
||||
|
||||
@@ -45,8 +45,8 @@ namespace OpenRA.Widgets
|
||||
|
||||
previewScale = Math.Min(192f / world.Map.Width, 192f / world.Map.Height);
|
||||
|
||||
previewOrigin = new int2(9 + (int)(previewScale * (size - world.Map.Width)) / 2, (int)(previewScale * (size - world.Map.Height)) / 2);
|
||||
mapRect = new RectangleF(radarOrigin.X + previewOrigin.X, radarOrigin.Y + previewOrigin.Y, (int)(world.Map.Width * previewScale), (int)(world.Map.Height * previewScale));
|
||||
previewOrigin = new int2(9 + (int)(radarOpenOrigin.X + previewScale * (size - world.Map.Width)/2), (int)(radarOpenOrigin.Y + previewScale * (size - world.Map.Height)/2));
|
||||
mapRect = new RectangleF(previewOrigin.X, previewOrigin.Y, (int)(world.Map.Width * previewScale), (int)(world.Map.Height * previewScale));
|
||||
|
||||
terrainBitmap = Minimap.RenderTerrainBitmap(world.Map);
|
||||
radarSheet = new Sheet(new Size( terrainBitmap.Width, terrainBitmap.Height ) );
|
||||
@@ -115,40 +115,41 @@ namespace OpenRA.Widgets
|
||||
{
|
||||
radarCollection = "radar-" + world.LocalPlayer.Country.Race;
|
||||
|
||||
var hasNewRadar = world.Queries.OwnedBy[world.LocalPlayer]
|
||||
.WithTrait<ProvidesRadar>()
|
||||
.Any(a => a.Trait.IsActive);
|
||||
|
||||
if (hasNewRadar != hasRadar)
|
||||
radarAnimating = true;
|
||||
|
||||
hasRadar = hasNewRadar;
|
||||
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "left"), radarOrigin, "chrome");
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "right"), radarOrigin + new float2(201, 0), "chrome");
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bottom"), radarOrigin + new float2(0, 192), "chrome");
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome");
|
||||
Game.Renderer.RgbaSpriteRenderer.Flush();
|
||||
|
||||
// Custom terrain layer
|
||||
// Don't draw the radar if the tray is moving
|
||||
if (radarAnimationFrame >= radarSlideAnimationLength)
|
||||
{
|
||||
// Build the radar image
|
||||
var custom = Minimap.AddCustomTerrain(world,terrainBitmap);
|
||||
var final = Minimap.AddActors(world, custom);
|
||||
radarSheet.Texture.SetData(final);
|
||||
|
||||
if (radarAnimationFrame >= radarSlideAnimationLength)
|
||||
{
|
||||
Game.Renderer.RgbaSpriteRenderer.DrawSprite( radarSprite,
|
||||
new float2(mapRect.Location), "chrome", new float2(mapRect.Size) );
|
||||
new float2(mapRect.Location.X, mapRect.Location.Y + world.Map.Height * previewScale * (1 - radarMinimapHeight)/2),
|
||||
"chrome",
|
||||
new float2(mapRect.Size.Width, mapRect.Size.Height*radarMinimapHeight) );
|
||||
}
|
||||
}
|
||||
|
||||
public override void Tick(World w)
|
||||
{
|
||||
if (world == null)
|
||||
var hasRadarNew = world.Queries.OwnedBy[world.LocalPlayer]
|
||||
.WithTrait<ProvidesRadar>()
|
||||
.Any(a => a.Trait.IsActive);
|
||||
|
||||
if (hasRadarNew != hasRadar)
|
||||
radarAnimating = true;
|
||||
|
||||
hasRadar = hasRadarNew;
|
||||
|
||||
if (!radarAnimating)
|
||||
return;
|
||||
|
||||
if (radarAnimating)
|
||||
{
|
||||
// Increment frame
|
||||
if (hasRadar)
|
||||
radarAnimationFrame++;
|
||||
@@ -178,9 +179,6 @@ namespace OpenRA.Widgets
|
||||
radarAnimating = false;
|
||||
}
|
||||
|
||||
mapRect = new RectangleF(radarOrigin.X + previewOrigin.X, radarOrigin.Y + previewOrigin.Y + (int)(world.Map.Height * previewScale * (1 - radarMinimapHeight)/2), (int)(world.Map.Width * previewScale), (int)(world.Map.Height * previewScale * radarMinimapHeight));
|
||||
}
|
||||
|
||||
int2 CellToMinimapPixel(int2 p)
|
||||
{
|
||||
return new int2((int)(mapRect.X +previewScale*(p.X - world.Map.TopLeft.X)), (int)(mapRect.Y + previewScale*(p.Y - world.Map.TopLeft.Y)));
|
||||
|
||||
Reference in New Issue
Block a user