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;
		}
	}
}