From 1a7566d28ce96b68c7cd14e6b4f5d6958fdbd73d Mon Sep 17 00:00:00 2001 From: gered Date: Sun, 18 Aug 2013 15:58:10 -0400 Subject: [PATCH] refactor SpriteBatch render overloads a bit, and add non-ref variants for laziness --- Blarg.GameFramework/Graphics/SpriteBatch.cs | 175 +++++++++++++++----- 1 file changed, 130 insertions(+), 45 deletions(-) diff --git a/Blarg.GameFramework/Graphics/SpriteBatch.cs b/Blarg.GameFramework/Graphics/SpriteBatch.cs index c4c7cd8..5ea179f 100644 --- a/Blarg.GameFramework/Graphics/SpriteBatch.cs +++ b/Blarg.GameFramework/Graphics/SpriteBatch.cs @@ -209,6 +209,11 @@ namespace Blarg.GameFramework.Graphics Render(texture, x, y, ref _defaultSpriteColor); } + public void Render(Texture texture, int x, int y, Color color) + { + Render(texture, x, y, ref color); + } + public void Render(Texture texture, int x, int y, ref Color color) { y = FixYCoord(y, texture.Height); @@ -220,6 +225,11 @@ namespace Blarg.GameFramework.Graphics Render(texture, x, y, width, height, ref _defaultSpriteColor); } + public void Render(Texture texture, int x, int y, int width, int height, Color color) + { + Render(texture, x, y, width, height, ref color); + } + public void Render(Texture texture, int x, int y, int width, int height, ref Color color) { y = FixYCoord(y, height); @@ -231,6 +241,11 @@ namespace Blarg.GameFramework.Graphics Render(texture, x, y, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); } + public void Render(Texture texture, int x, int y, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, Color color) + { + Render(texture, x, y, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); + } + public void Render(Texture texture, int x, int y, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, ref Color color) { y = FixYCoord(y, texture.Height); @@ -242,17 +257,32 @@ namespace Blarg.GameFramework.Graphics Render(texture, x, y, width, height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); } + public void Render(Texture texture, int x, int y, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, Color color) + { + Render(texture, x, y, width, height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); + } + public void Render(Texture texture, int x, int y, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, ref Color color) { y = FixYCoord(y, height); AddSprite(texture, x, y, x + width, y + height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); } + public void Render(Texture texture, Vector3 worldPosition) + { + Render(texture, ref worldPosition, ref _defaultSpriteColor); + } + public void Render(Texture texture, ref Vector3 worldPosition) { Render(texture, ref worldPosition, ref _defaultSpriteColor); } + public void Render(Texture texture, Vector3 worldPosition, Color color) + { + Render(texture, ref worldPosition, ref color); + } + public void Render(Texture texture, ref Vector3 worldPosition, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -263,11 +293,21 @@ namespace Blarg.GameFramework.Graphics Render(texture, screenCoordinates.X, screenCoordinates.Y, ref color); } + public void Render(Texture texture, Vector3 worldPosition, int width, int height) + { + Render(texture, ref worldPosition, width, height, ref _defaultSpriteColor); + } + public void Render(Texture texture, ref Vector3 worldPosition, int width, int height) { Render(texture, ref worldPosition, width, height, ref _defaultSpriteColor); } + public void Render(Texture texture, Vector3 worldPosition, int width, int height, Color color) + { + Render(texture, ref worldPosition, width, height, ref color); + } + public void Render(Texture texture, ref Vector3 worldPosition, int width, int height, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -278,11 +318,21 @@ namespace Blarg.GameFramework.Graphics Render(texture, screenCoordinates.X, screenCoordinates.Y, width, height, ref color); } + public void Render(Texture texture, Vector3 worldPosition, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom) + { + Render(texture, ref worldPosition, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); + } + public void Render(Texture texture, ref Vector3 worldPosition, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom) { Render(texture, ref worldPosition, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); } + public void Render(Texture texture, Vector3 worldPosition, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, Color color) + { + Render(texture, ref worldPosition, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); + } + public void Render(Texture texture, ref Vector3 worldPosition, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -293,11 +343,21 @@ namespace Blarg.GameFramework.Graphics Render(texture, screenCoordinates.X, screenCoordinates.Y, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); } + public void Render(Texture texture, Vector3 worldPosition, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom) + { + Render(texture, ref worldPosition, width, height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); + } + public void Render(Texture texture, ref Vector3 worldPosition, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom) { Render(texture, ref worldPosition, width, height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref _defaultSpriteColor); } + public void Render(Texture texture, Vector3 worldPosition, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, Color color) + { + Render(texture, ref worldPosition, width, height, texCoordLeft, texCoordTop, texCoordRight, texCoordBottom, ref color); + } + public void Render(Texture texture, ref Vector3 worldPosition, int width, int height, float texCoordLeft, float texCoordTop, float texCoordRight, float texCoordBottom, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -313,6 +373,11 @@ namespace Blarg.GameFramework.Graphics Render(atlas, index, x, y, ref _defaultSpriteColor); } + public void Render(TextureAtlas atlas, int index, int x, int y, Color color) + { + Render(atlas, index, x, y, ref color); + } + public void Render(TextureAtlas atlas, int index, int x, int y, ref Color color) { RectF texCoords; @@ -329,6 +394,11 @@ namespace Blarg.GameFramework.Graphics Render(atlas, index, x, y, width, height, ref _defaultSpriteColor); } + public void Render(TextureAtlas atlas, int index, int x, int y, int width, int height, Color color) + { + Render(atlas, index, x, y, width, height, ref color); + } + public void Render(TextureAtlas atlas, int index, int x, int y, int width, int height, ref Color color) { RectF texCoords; @@ -338,11 +408,21 @@ namespace Blarg.GameFramework.Graphics AddSprite(atlas.Texture, x, y, x + width, y + height, texCoords.Left, texCoords.Top, texCoords.Right, texCoords.Bottom, ref color); } + public void Render(TextureAtlas atlas, int index, Vector3 worldPosition) + { + Render(atlas, index, ref worldPosition, ref _defaultSpriteColor); + } + public void Render(TextureAtlas atlas, int index, ref Vector3 worldPosition) { Render(atlas, index, ref worldPosition, ref _defaultSpriteColor); } + public void Render(TextureAtlas atlas, int index, Vector3 worldPosition, Color color) + { + Render(atlas, index, ref worldPosition, ref color); + } + public void Render(TextureAtlas atlas, int index, ref Vector3 worldPosition, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -354,11 +434,21 @@ namespace Blarg.GameFramework.Graphics Render(atlas, index, screenCoordinates.X, screenCoordinates.Y, ref color); } + public void Render(TextureAtlas atlas, int index, Vector3 worldPosition, int width, int height) + { + Render(atlas, index, ref worldPosition, width, height, ref _defaultSpriteColor); + } + public void Render(TextureAtlas atlas, int index, ref Vector3 worldPosition, int width, int height) { Render(atlas, index, ref worldPosition, width, height, ref _defaultSpriteColor); } + public void Render(TextureAtlas atlas, int index, Vector3 worldPosition, int width, int height, Color color) + { + Render(atlas, index, ref worldPosition, width, height, ref color); + } + public void Render(TextureAtlas atlas, int index, ref Vector3 worldPosition, int width, int height, ref Color color) { var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); @@ -373,39 +463,19 @@ namespace Blarg.GameFramework.Graphics #region Render: Fonts + public void Render(SpriteFont font, int x, int y, Color color, string text) + { + Render(font, x, y, ref color, 1.0f, text); + } + public void Render(SpriteFont font, int x, int y, ref Color color, string text) { - y = FixYCoord(y, font.LetterHeight); + Render(font, x, y, ref color, 1.0f, text); + } - int drawX = x; - int drawY = y; - - for (int i = 0; i < text.Length; ++i) - { - char c = text[i]; - if (c == '\n') - { - // new line - drawX = x; - drawY -= font.LetterHeight; - } - else - { - RectF texCoords; - Rect dimensions; - font.GetCharTexCoords(c, out texCoords); - font.GetCharDimensions(c, out dimensions); - - AddSprite( - font.Texture, - drawX, drawY, drawX + dimensions.Width, drawY + dimensions.Height, - texCoords.Left, texCoords.Top, texCoords.Right, texCoords.Bottom, - ref color - ); - - drawX += dimensions.Width; - } - } + public void Render(SpriteFont font, int x, int y, Color color, float scale, string text) + { + Render(font, x, y, ref color, scale, text); } public void Render(SpriteFont font, int x, int y, ref Color color, float scale, string text) @@ -448,18 +518,19 @@ namespace Blarg.GameFramework.Graphics } } + public void Render(SpriteFont font, Vector3 worldPosition, Color color, string text) + { + Render(font, ref worldPosition, ref color, 1.0f, text); + } + public void Render(SpriteFont font, ref Vector3 worldPosition, ref Color color, string text) { - var screenCoordinates = GraphicsDevice.ViewContext.Camera.Project(ref worldPosition, ref _previousModelView, ref _previousProjection); + Render(font, ref worldPosition, ref color, 1.0f, text); + } - int textWidth; - int textHeight; - font.MeasureString(out textWidth, out textHeight, text); - - screenCoordinates.X -= textWidth / 2; - screenCoordinates.Y -= textHeight / 2; - - Render(font, screenCoordinates.X, screenCoordinates.Y, ref color, text); + public void Render(SpriteFont font, Vector3 worldPosition, Color color, float scale, string text) + { + Render(font, ref worldPosition, ref color, scale, text); } public void Render(SpriteFont font, ref Vector3 worldPosition, ref Color color, float scale, string text) @@ -476,12 +547,19 @@ namespace Blarg.GameFramework.Graphics Render(font, screenCoordinates.X, screenCoordinates.Y, ref color, scale, text); } + public void Printf(SpriteFont font, int x, int y, Color color, string format, params object[] args) + { + Printf(font, x, y, ref color, 1.0f, format, args); + } + public void Printf(SpriteFont font, int x, int y, ref Color color, string format, params object[] args) { - _buffer.Clear(); - _buffer.AppendFormat(format, args); + Printf(font, x, y, ref color, 1.0f, format, args); + } - Render(font, x, y, ref color, _buffer.ToString()); + public void Printf(SpriteFont font, int x, int y, Color color, float scale, string format, params object[] args) + { + Printf(font, x, y, ref color, scale, format, args); } public void Printf(SpriteFont font, int x, int y, ref Color color, float scale, string format, params object[] args) @@ -492,12 +570,19 @@ namespace Blarg.GameFramework.Graphics Render(font, x, y, ref color, scale, _buffer.ToString()); } + public void Printf(SpriteFont font, Vector3 worldPosition, Color color, string format, params object[] args) + { + Printf(font, ref worldPosition, ref color, 1.0f, format, args); + } + public void Printf(SpriteFont font, ref Vector3 worldPosition, ref Color color, string format, params object[] args) { - _buffer.Clear(); - _buffer.AppendFormat(format, args); + Printf(font, ref worldPosition, ref color, 1.0f, format, args); + } - Render(font, ref worldPosition, ref color, _buffer.ToString()); + public void Printf(SpriteFont font, Vector3 worldPosition, Color color, float scale, string format, params object[] args) + { + Printf(font, ref worldPosition, ref color, scale, format, args); } public void Printf(SpriteFont font, ref Vector3 worldPosition, ref Color color, float scale, string format, params object[] args)