PlayerProfile.cs
using Sandbox;
using System.Linq;
namespace PaintballBaddies;
/// <summary>A player's chosen name, independent of their selected Baddie.</summary>
public sealed class PlayerProfile : Component
{
[Sync] public string DisplayName { get; set; } = "Player";
public const int MaxNameLength = 24;
public static string CleanName(string value)
{
var clean = new string((value ?? "").Where(c => char.IsLetterOrDigit(c) || c is ' ' or '_' or '-' or '.').Take(MaxNameLength).ToArray()).Trim();
return string.IsNullOrWhiteSpace(clean) ? "Player" : clean;
}
protected override void OnStart()
{
if (!IsProxy) DisplayName = CleanName(Game.Cookies.Get("paintball-player-name", "Player"));
}
public void SaveName(string value)
{
if (IsProxy) return;
DisplayName = CleanName(value);
Game.Cookies.Set("paintball-player-name", DisplayName);
}
}