AI/Guests/IdentitySystem.cs
using System.Text.Json;

namespace HC3;

public sealed class IdentitySystem : GameObjectSystem<IdentitySystem>
{
	public IdentitySystem( Scene scene ) : base( scene )
	{
		var delinquentNames = FileSystem.Mounted.ReadAllText( "resources/guests/delinquent_names.json" );

		if ( !string.IsNullOrEmpty( delinquentNames ) )
		{
			var data = JsonSerializer.Deserialize<Dictionary<string, List<string>>>( delinquentNames );
			DelinquentMaleNames = data["male"];
			DelinquentFemaleNames = data["female"];
		}

		var names = FileSystem.Mounted.ReadAllText( "resources/guests/guest_names.json" );

		// Don't do anything if the resource doesn't exist
		if ( string.IsNullOrEmpty( names ) )
			return;

		var nameData = JsonSerializer.Deserialize<Dictionary<string, List<string>>>( names );

		MaleNames = nameData["male"];
		FemaleNames = nameData["female"];
	}

	public List<string> MaleNames { get; set; }
	public List<string> FemaleNames { get; set; }
	public List<string> DelinquentMaleNames { get; set; }
	public List<string> DelinquentFemaleNames { get; set; }

	public static string FetchName( bool male = true, float delinquency = 0f )
	{
		if ( delinquency > 0.7f )
			return Game.Random.FromList( male ? Current.DelinquentMaleNames : Current.DelinquentFemaleNames );
		else
			return Game.Random.FromList( male ? Current.MaleNames : Current.FemaleNames );
	}
}