Draw viewport rect on radar

This commit is contained in:
Paul Chote
2010-07-23 00:03:04 +12:00
parent a42ef6b3ea
commit 5c7e278b93
2 changed files with 21 additions and 9 deletions

View File

@@ -107,7 +107,7 @@ namespace OpenRA.Graphics
public float2 ViewToWorld(MouseInput mi) public float2 ViewToWorld(MouseInput mi)
{ {
return (1 / 24.0f) * (new float2(mi.Location.X, mi.Location.Y) + Location); return (1f / Game.CellSize) * (new float2(mi.Location.X, mi.Location.Y) + Location);
} }
public void Center(int2 loc) public void Center(int2 loc)

View File

@@ -26,12 +26,8 @@ namespace OpenRA.Widgets
int radarAnimationFrame = 0; int radarAnimationFrame = 0;
bool radarAnimating = false; bool radarAnimating = false;
bool hasRadar = false; bool hasRadar = false;
string radarCollection; string radarCollection;
World world; World world;
float previewScale = 0; float previewScale = 0;
RectangleF mapRect = Rectangle.Empty; RectangleF mapRect = Rectangle.Empty;
@@ -46,9 +42,7 @@ namespace OpenRA.Widgets
{ {
this.world = world; this.world = world;
var size = Math.Max(world.Map.Width, world.Map.Height); var size = Math.Max(world.Map.Width, world.Map.Height);
previewScale = Math.Min(192f / world.Map.Width, 192f / world.Map.Height); previewScale = Math.Min(192f / world.Map.Width, 192f / world.Map.Height);
previewOrigin = new int2(9 + (int)(radarOpenOrigin.X + previewScale * (size - world.Map.Width)/2), (int)(radarOpenOrigin.Y + previewScale * (size - world.Map.Height)/2)); 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)); mapRect = new RectangleF(previewOrigin.X, previewOrigin.Y, (int)(world.Map.Width * previewScale), (int)(world.Map.Height * previewScale));
@@ -132,7 +126,6 @@ namespace OpenRA.Widgets
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "right"), radarOrigin + new float2(201, 0), "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, "bottom"), radarOrigin + new float2(0, 192), "chrome");
Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome"); Game.Renderer.RgbaSpriteRenderer.DrawSprite(ChromeProvider.GetImage(radarCollection, "bg"), radarOrigin + new float2(9, 0), "chrome");
Game.Renderer.RgbaSpriteRenderer.Flush();
// Don't draw the radar if the tray is moving // Don't draw the radar if the tray is moving
if (radarAnimationFrame >= radarSlideAnimationLength) if (radarAnimationFrame >= radarSlideAnimationLength)
@@ -144,7 +137,26 @@ namespace OpenRA.Widgets
Game.Renderer.RgbaSpriteRenderer.DrawSprite(actorSprite, o, "chrome", s); Game.Renderer.RgbaSpriteRenderer.DrawSprite(actorSprite, o, "chrome", s);
Game.Renderer.RgbaSpriteRenderer.DrawSprite(shroudSprite, o, "chrome", s); Game.Renderer.RgbaSpriteRenderer.DrawSprite(shroudSprite, o, "chrome", s);
// Draw viewport rect
if (radarAnimationFrame == radarSlideAnimationLength + radarActivateAnimationLength)
{
var tl = CellToMinimapPixel(new int2((int)(Game.viewport.Location.X/Game.CellSize), (int)(Game.viewport.Location.Y/Game.CellSize)));
var br = CellToMinimapPixel(new int2((int)((Game.viewport.Location.X + Game.viewport.Width)/Game.CellSize), (int)((Game.viewport.Location.Y + Game.viewport.Height)/Game.CellSize)));
var tr = new int2(br.X, tl.Y);
var bl = new int2(tl.X, br.Y);
Game.Renderer.RgbaSpriteRenderer.Flush();
Game.Renderer.Device.EnableScissor((int)mapRect.Left, (int)mapRect.Top, (int)mapRect.Width, (int)mapRect.Height);
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tl, Game.viewport.Location + tr, Color.White, Color.White);
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + tr, Game.viewport.Location + br, Color.White, Color.White);
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + br, Game.viewport.Location + bl, Color.White, Color.White);
Game.Renderer.LineRenderer.DrawLine(Game.viewport.Location + bl, Game.viewport.Location + tl, Color.White, Color.White);
Game.Renderer.LineRenderer.Flush();
Game.Renderer.Device.DisableScissor();
}
} }
} }
int updateTicks = 0; int updateTicks = 0;