Personality generator class
This commit is contained in:
parent
f710a9b109
commit
83784d2c00
2 changed files with 49 additions and 3 deletions
|
@ -2,15 +2,61 @@ namespace PersonaForge;
|
|||
|
||||
public static class PersonalityGen
|
||||
{
|
||||
int MaxPoints = 10;
|
||||
int TotalBudget = 25;
|
||||
const int MaxPoints = 10;
|
||||
const int TotalBudget = 25;
|
||||
static readonly Random rng = new();
|
||||
|
||||
public static PersonalityProfile GeneratePersonalityProfile()
|
||||
{
|
||||
var profile = PersonalityProfile.Create();
|
||||
var traits = new List<string> { "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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue