Static formatting helpers for HorizonRP. Formats money in dollars with French thousands spacing, weights in kilograms and ISO dates as DD/MM/YYYY.
namespace HorizonRP;
/// <summary>
/// Les formats du décor américain : la ville est aux États-Unis, le jeu parle
/// français. Dollars écrits à la française « 1 234 $ ». Vitesse en km/h et poids
/// en kilos (choix de Julien : seuls le décor et les documents sont américains,
/// avec leurs dates MM/DD/YYYY).
/// </summary>
public static class Format
{
/// <summary>
/// 1234 → « 1 234 $ » ; -50 → « -50 $ ». La monnaie est le dollar, l'écriture
/// reste française (choix de Julien) : espace entre les milliers, symbole après.
/// </summary>
public static string Money( int value )
{
var digits = Math.Abs( (long)value ).ToString();
var grouped = new System.Text.StringBuilder();
for ( var i = 0; i < digits.Length; i++ )
{
if ( i > 0 && (digits.Length - i) % 3 == 0 )
grouped.Append( ' ' );
grouped.Append( digits[i] );
}
return $"{(value < 0 ? "-" : "")}{grouped} $";
}
/// <summary>0.25 → « 0,25 kg » ; 30 → « 30 kg ».</summary>
public static string Kilos( float kilos ) => $"{kilos:0.##} kg".Replace( '.', ',' );
/// <summary>« 2026-10-28 » → « 28/10/2026 » (les papiers sont en français, comme le jeu).</summary>
public static string Date( string isoDate )
{
if ( string.IsNullOrWhiteSpace( isoDate ) || isoDate.Length < 10 )
return "—";
return $"{isoDate.Substring( 8, 2 )}/{isoDate.Substring( 5, 2 )}/{isoDate[..4]}";
}
}