sneak/Jumpy.Shared/Debug.cs
Colin McMillen 6c5c7d4992 add Debug class for displaying rects on-screen
use it to display bounding boxes of player & obstacles

GitOrigin-RevId: 1354637c8ad88e953b44cb3bf0e250aae0546b81
2020-02-13 14:46:53 -05:00

59 lines
1.6 KiB
C#

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using System.Collections.Generic;
namespace Jumpy {
// TODO: add a WriteLine sort of functionality.
static class Debug {
struct DebugRect {
public Rectangle rect;
public Color color;
public DebugRect(Rectangle rect, Color color) {
this.rect = rect;
this.color = color;
}
}
public static bool Enabled;
static List<DebugRect> rects = new List<DebugRect>();
static Texture2D whiteTexture;
public static void Initialize(GraphicsDevice graphics) {
whiteTexture = new Texture2D(graphics, 1, 1);
whiteTexture.SetData(new Color[] { Color.White });
}
public static void Clear() {
rects.Clear();
}
public static void AddRect(Rectangle rect, Color color) {
rects.Add(new DebugRect(rect, color));
}
public static void Draw(SpriteBatch spriteBatch) {
if (!Enabled) {
return;
}
foreach (var debugRect in rects) {
var rect = debugRect.rect;
var color = debugRect.color;
// top side
spriteBatch.Draw(
whiteTexture, new Rectangle(rect.Left, rect.Top, rect.Width, 1), color);
// bottom side
spriteBatch.Draw(
whiteTexture, new Rectangle(rect.Left, rect.Bottom - 1, rect.Width, 1), color);
// left side
spriteBatch.Draw(
whiteTexture, new Rectangle(rect.Left, rect.Top, 1, rect.Height), color);
// right side
spriteBatch.Draw(
whiteTexture, new Rectangle(rect.Right - 1, rect.Top, 1, rect.Height), color);
}
}
}
}