Transposer/Entities/ScoreText.cs
namespace Sandbox.Transposer;
/// <summary>
/// Text display that renders with randomised pixel colours — the glitchy
/// rainbow effect used for score/instruction text on the main menu.
/// </summary>
public class ScoreText : TextDisplay
{
public ScoreText( string text, TransposerScene scene, int x, int y, string fontName, int scale = 1 )
: base( text, scene, x, y, fontName, Color.Black, scale )
{
}
public override void Draw()
{
base.Draw();
int currentX = PixelX;
int currentY = PixelY;
for ( int i = 0; i < _text.Length; i++ )
{
char c = _text[i];
if ( c == '\n' )
{
currentY -= _letterHeight * _scale;
currentX = PixelX;
continue;
}
if ( c == ' ' )
{
currentX += (_letterWidth + _spacing) * _scale;
continue;
}
List<PixelData> pixelDataList = GetPixelDataList( _fontName, c.ToString() );
if ( pixelDataList is not null )
DrawPixels( pixelDataList, currentX, currentY, _scale, randomColor: true );
currentX += (_letterWidth + _spacing) * _scale;
}
}
}