BenMakesGames.PlayPlayMini.GraphicsExtensions 5.1.0

Prefix Reserved
dotnet add package BenMakesGames.PlayPlayMini.GraphicsExtensions --version 5.1.0                
NuGet\Install-Package BenMakesGames.PlayPlayMini.GraphicsExtensions -Version 5.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BenMakesGames.PlayPlayMini.GraphicsExtensions" Version="5.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BenMakesGames.PlayPlayMini.GraphicsExtensions --version 5.1.0                
#r "nuget: BenMakesGames.PlayPlayMini.GraphicsExtensions, 5.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BenMakesGames.PlayPlayMini.GraphicsExtensions as a Cake Addin
#addin nuget:?package=BenMakesGames.PlayPlayMini.GraphicsExtensions&version=5.1.0

// Install BenMakesGames.PlayPlayMini.GraphicsExtensions as a Cake Tool
#tool nuget:?package=BenMakesGames.PlayPlayMini.GraphicsExtensions&version=5.1.0                

What Is It?

PlayPlayMini.GraphicsExtensions contains classes and extensions for PlayPlayMini that add more functionality to PlayPlayMini.

Buy Me a Coffee at ko-fi.com

Game States Transitions

ScreenWipe

The ScreenWipe game state allows you to add a screen wipe transition between two game states.

Example usage:

public void GoToNextScene()
{
    GSM.ChangeState<ScreenWipe, ScreenWipeConfig>(new() {
        PreviousState = this,
        NextState = GSM.CreateState<NextScene>(),
        Color = Color.Black,
        WipeTime = 0.25, // in seconds
        Direction = ScreenWipeDirection.RightToLeft
    });
}

There are also options which let you hold on the black screen while some other process finishes (HoldUntil), and/or show a message (Message and MessageColor), which may be useful when performing a long-running operation, such as saving the game, loading the next level from disk, or making an web API call.

Drawing "Primitives"

PlayPlayMini.GraphicsExtensions contains methods for drawing "basic shapes", beyond just rectangles (which PlayPlayMini itself already supports).

At the moment, only lines, ellipses (including circles), and filled triangles are supported.

DrawCircle

Draws the outline of a circle, given a center position, and radius.

GraphicsManager.DrawCircle(
    int centerX,
    int centerY,
    int radius,
    Color outlineColor
);
GraphicsManager.DrawCircle(
    Vector2 center,
    int radius,
    Color outlineColor
);

DrawEllipse

Draws an ellipse that fits inside a rectangle.

GraphicsManager.DrawEllipse(
    int x,
    int y,
    int width,
    int height,
    Color outlineColor
)
GraphicsManager.DrawEllipse(
    Rectangle rectangle,
    Color outlineColor
)

DrawFilledCircle

Same as DrawCircle, above, but draws a solid circle, instead of just its outline.

DrawFilledEllipse

Same as DrawEllipse, above, but draws a solid ellipse, instead of just its outline.

DrawFilledTriangle

Draws a filled triangle, given three points.

GraphicsManager.DrawFilledTriangle(
    float x1,
    float y1,
    float x2,
    float y2,
    float x3,
    float y3,
    Color color
)
GraphicsManager.DrawFilledTriangle(
    Vector2 v1,
    Vector2 v2,
    Vector2 v3,
    Color color
)

Notes

  • There is no DrawTriangle method for drawing only a triangle's outline (yet...)
  • For those with a 3D background: the order your pass the verticies in does not matter - the triangle will be drawn whether the points are in clockwise or counterclockwise order

DrawLine

Draws a straight line between two points.

GraphicsManager.DrawLine(int x1, int y1, int x2, int y2, Color color)
GraphicsManager.DrawLine(Vector2 start, Vector2 end, Color color)

Drawing Text with Effects

DrawTextWithOutline

PlayPlayMini has a built-in DrawTextWithOutline method. GraphicsExtensions's version is easier to use (you do not need to create an outline version of your font), but is less computationally efficient (2.5x the draw calls).

Most games won't notice this performance difference, but if you're tight on CPU cycles for some reason, you may not want to rely on this method.

GraphicsManager.DrawTextWithOutline(
    string fontName,
    int x,
    int y,
    string text,
    Color fillColor,
    Color outlineColor
);

DrawWavyText

DrawWavyText allows you to draw text that moves up and down in a wavy pattern. There are a few overloads of the method which allow you to customize color and positioning of the text.

Draw waving text starting at the specified x/y position:

GraphicsManager.DrawWavyText(
    string fontName,
    GameTime gameTime,
    int x, int y,
    string text,
    Color color = Color.White
);

Draw waving text horizontally-centered at the specified y position:

GraphicsManager.DrawWavyText(
    string fontName,
    GameTime gameTime,
    int y,
    string text,
    Color color = Color.White
);

Draw waving text in the dead center of the screen:

GraphicsManager.DrawWavyText(
    string fontName,
    GameTime gameTime,
    string text,
    Color color = Color.White
);
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
5.1.0 92 10/6/2024
5.0.0 145 8/17/2024
4.7.1 101 5/28/2024
4.7.0 108 5/24/2024
4.5.0 121 3/23/2024
4.4.0 119 3/2/2024
4.3.0 117 2/25/2024
4.2.0 124 2/22/2024
4.1.0 118 2/12/2024
4.0.1 260 11/25/2023
4.0.0 142 11/25/2023
3.2.1 196 10/28/2023
3.2.0 178 10/26/2023
3.1.0 173 10/25/2023
3.0.0 161 9/18/2023
2.1.0 164 9/17/2023
2.0.1 213 6/30/2023
2.0.0 211 4/23/2023
1.2.0 210 4/16/2023
1.1.1 241 4/9/2023
1.1.0 204 4/9/2023
1.0.0 274 1/7/2023
0.0.1 254 1/7/2023