namespace PersonaForge; public static class PersonalityGen { const int MaxPoints = 10; const int TotalBudget = 25; static readonly Random rng = new(); public static PersonalityProfile GenerateRandom() { var profile = PersonalityProfile.Create(); var traits = new List { "Outgoing", "Nice", "Playful", "Neat", "Active" }; var remaining = TotalBudget; while (remaining > 0) { var trait = traits[rng.Next(traits.Count)]; var current = GetCurrentTraitPoints(profile, trait); if (current < MaxPoints) { var add = (rng.NextDouble() < 0.1) ? Math.Min(2, MaxPoints - current) : 1; add = Math.Min(add, remaining); SetTraitPoints(profile, trait, current + add); remaining -= add; } } return profile; } static int GetCurrentTraitPoints(PersonalityProfile p, string trait) => trait switch { "Outgoing" => p.Outgoing, "Nice" => p.Nice, "Playful" => p.Playful, "Neat" => p.Neat, "Active" => p.Active, _ => 0 }; static void SetTraitPoints(PersonalityProfile p, string trait, int points) { switch (trait) { case "Outgoing": p.Outgoing = points; break; case "Nice": p.Nice = points; break; case "Playful": p.Playful = points; break; case "Neat": p.Neat = points; break; case "Active": p.Active = points; break; } } }