namespace PersonalityGenerator;
///
/// Represents the Sim personality generator with methods to assign traits and display personality.
///
public static class TraitGenerator
{
///
/// The target value for prioritized traits to aim for, typically 8.
///
private const int Target = 8;
///
/// A random number generator instance for generating random values.
///
private static readonly Random Rand = new Random();
///
/// Assigns high values to the specified prioritized traits and random values to other traits.
///
/// A dictionary of traits with their initial values.
/// A set of traits that the user wants to prioritize.
public static void AssignPrioritizedTraits(Dictionary traits, HashSet prioritizedTraits)
{
Console.WriteLine("Assigning high values to prioritized traits...");
var remainingPoints = 50; // Sum of all traits should be <= 50
// Assign high values to prioritized traits (8, 9, or 10)
foreach (var trait in prioritizedTraits)
{
var value = Math.Min(Target + Rand.Next(3), 10);
remainingPoints -= value;
traits[trait] = value;
Console.WriteLine($"Setting {trait} to {value}.");
}
// Adjust remaining traits
var nonPrioritizedTraits = traits.Keys.Except(prioritizedTraits).ToList();
foreach (var trait in nonPrioritizedTraits)
{
var maxPossibleValue = Math.Min(remainingPoints, 10);
var value = Rand.Next(maxPossibleValue + 1);
remainingPoints -= value;
traits[trait] = value;
Console.WriteLine($"Setting {trait} to {value}.");
}
Console.WriteLine("Adjusted remaining traits to maintain balance.");
}
///
/// Assigns random values to all traits.
///
/// A dictionary of traits with their initial values.
public static void AssignRandomTraits(Dictionary traits)
{
Console.WriteLine("Generating random personality...");
var remainingPoints = 50; // Sum of all traits should be <= 50
foreach (var trait in traits.Keys)
{
var maxPossibleValue = Math.Min(remainingPoints, 10);
var value = Rand.Next(maxPossibleValue + 1);
remainingPoints -= value;
traits[trait] = value;
Console.WriteLine($"Setting {trait} to {value}.");
}
Console.WriteLine("Random personality generation complete.");
}
///
/// Displays the generated personality traits.
///
/// A dictionary of traits with their assigned values.
public static void DisplayPersonality(Dictionary traits)
{
Console.WriteLine("\nGenerated Sim Personality:");
foreach (var trait in traits)
{
Console.WriteLine($"{trait.Key}: {trait.Value}");
}
}
}