public void Render(float dT, GraphicsDevice device, SpriteBatch batch) { this.Map.Render(dT, device, batch, this.Viewport, this.ZoomLevel); this.WM.Render(device); if (this.Selection != null) { GUI.Renderer.Rect r1 = new GUI.Renderer.Rect(48, 32, 16, 16); WM.Renderer.SetColour(Color.Red); float dX = -Viewport.X / ZoomLevel; float dY = -Viewport.Y / ZoomLevel; float X0, X1, Y0, Y1, Stride; X0 = Selection.Bound.X + dX; X1 = Selection.Bound.X + dX + Selection.Bound.Width - 16; Y0 = Selection.Bound.Y + dY; Y1 = Selection.Bound.Y + Selection.Bound.Height - 16 + dY; X0 *= ZoomLevel; X1 *= ZoomLevel; Y0 *= ZoomLevel; Y1 *= ZoomLevel; Stride = 16 * ZoomLevel; WM.Renderer.RenderQuad(device, X0, Y0, Stride, Stride, r1); r1 = new GUI.Renderer.Rect(48 + 16, 32, 16, 16); WM.Renderer.RenderQuad(device, X1, Y0, Stride, Stride, r1); r1 = new GUI.Renderer.Rect(48 + 16, 32 + 16, 16, 16); WM.Renderer.RenderQuad(device, X1, Y1, Stride, Stride, r1); r1 = new GUI.Renderer.Rect(48, 32 + 16, 16, 16); WM.Renderer.RenderQuad(device, X0, Y1, Stride, Stride, r1); } if (this.State == GameState.Designate && this.dragState.IsActive) { GUI.Renderer.Rect r1 = new GUI.Renderer.Rect(80, 48, 16, 16); WM.Renderer.SetColour(Color.Red); DesignationState Selection = this.dragState.Normalize(); float dX = -Viewport.X / ZoomLevel; float dY = -Viewport.Y / ZoomLevel; int X0, X1, Y0, Y1; float Stride, RealX, RealY; X0 = Selection.Start.X; Y0 = Selection.Start.Y; X1 = Selection.End.X; Y1 = Selection.End.Y; RealX = (dX + X0 * Components.Map.Tile.TileStride) * ZoomLevel; RealY = (dY + Y0 * Components.Map.Tile.TileStride) * ZoomLevel; Stride = 64 * ZoomLevel; for (int x = X0; x <= X1; x++) { for (int y = Y0; y <= Y1; y++) { WM.Renderer.RenderQuad(device, RealX + (x - X0) * Stride, RealY + (y - Y0) * Stride, Stride, Stride, r1); } } } }
public DesignationState Normalize() { int X0, X1, Y0, Y1; X0 = Math.Min(Start.X, End.X); X1 = Math.Max(Start.X, End.X); Y0 = Math.Min(Start.Y, End.Y); Y1 = Math.Max(Start.Y, End.Y); DesignationState result = new DesignationState { IsActive = this.IsActive, Complete = this.Complete, Start = new Point(X0, Y0), End = new Point(X1, Y1) }; return(result); }
public void BatchDesignate(DesignationState Selection) { }