/// <summary> /// Given the model in its current state, draw to the screen. /// </summary> public abstract void Draw(T model, Painter <T> painter, Graphics g);
/// <summary> /// Given the model in its current state, draw to the screen. /// </summary> public abstract void DrawOnTopMostLayer(T model, Painter <T> painter, Graphics g);
public static void Draw <T>(T model, Painter <T> painter, Graphics g, String fontName, Int32 fontSize) where T : BaseGameModel { int CameraInfoWidth = fontSize * 10; int CameraInfoHeight = fontSize * 3; int currentLineNumber = 0; double separationBetweenLines = fontSize / 3.0; Point currentMousePos = model.CurrentDisplayMousePosition; Font fontNormal = painter.CreateFontForDisplay(fontName, fontSize, model.Camera.UnzoomedScale); Double pWidth = CameraInfoWidth * model.Camera.UnzoomedScale; Double pHeight = CameraInfoHeight * model.Camera.UnzoomedScale; Position p = Position.GetDisplayPositionBasedOnMousePosition(currentMousePos.X, currentMousePos.Y, pWidth, pHeight, model.Camera.CurrentFullDisplayWidth, model.Camera.CurrentFullDisplayHeight); Drawing2D.DrawRect(g, Brushes.White, p); Position pInner = new Position(p); pInner.TransformByPixels(-2 * model.Camera.UnzoomedScale); Drawing2D.DrawRect(g, Brushes.Black, pInner); String text = "Mouse DispPos (" + currentMousePos.X + "," + currentMousePos.Y + ")"; g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)pInner.UpperLeftY); currentLineNumber++; Point logPosMouse = model.Camera.MapDisplayToLogical(currentMousePos, true); text = "Mouse LogPos (ignore Camera) = (" + logPosMouse.X + "," + logPosMouse.Y + ")"; g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; logPosMouse = model.Camera.MapDisplayToLogical(currentMousePos, false); text = "Mouse LogPos (use Camera) = (" + logPosMouse.X + "," + logPosMouse.Y + ")"; g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; text = String.Format("Cam Scale = {0:0.00}", model.Camera.CurrentScale); g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; text = String.Format("Cam Zoom = {0:0.00}", model.Camera.ZoomFactorLogical); g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; text = String.Format("Cam Disp Full W/H = W{0},H{1}", model.Camera.CurrentFullDisplayWidth, model.Camera.CurrentFullDisplayHeight); g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; text = "C LogPos: " + model.Camera.LogicalRect; g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; text = "C Display Target: " + model.Camera.DisplayTarget; g.DrawString(text, fontNormal, Brushes.White, (Single)pInner.UpperLeftX, (Single)(pInner.UpperLeftY + (currentLineNumber * separationBetweenLines * model.Camera.UnzoomedScale))); currentLineNumber++; fontNormal.Dispose(); }