Random default characters (#2216)
This commit is contained in:
committed by
GitHub
parent
ba4c596195
commit
32876c78fe
@@ -15,22 +15,11 @@ namespace Content.Client.UserInterface
|
|||||||
|
|
||||||
private void RandomizeEverything()
|
private void RandomizeEverything()
|
||||||
{
|
{
|
||||||
RandomizeSex();
|
Profile = HumanoidCharacterProfile.Random();
|
||||||
RandomizeAge();
|
|
||||||
RandomizeName();
|
|
||||||
RandomizeAppearance();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RandomizeSex()
|
|
||||||
{
|
|
||||||
SetSex(_random.Prob(0.5f) ? Sex.Male : Sex.Female);
|
|
||||||
UpdateSexControls();
|
UpdateSexControls();
|
||||||
}
|
|
||||||
|
|
||||||
private void RandomizeAge()
|
|
||||||
{
|
|
||||||
SetAge(_random.Next(HumanoidCharacterProfile.MinimumAge, HumanoidCharacterProfile.MaximumAge));
|
|
||||||
UpdateAgeEdit();
|
UpdateAgeEdit();
|
||||||
|
UpdateNameEdit();
|
||||||
|
UpdateHairPickers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RandomizeName()
|
private void RandomizeName()
|
||||||
@@ -42,33 +31,5 @@ namespace Content.Client.UserInterface
|
|||||||
SetName($"{firstName} {lastName}");
|
SetName($"{firstName} {lastName}");
|
||||||
UpdateNameEdit();
|
UpdateNameEdit();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RandomizeAppearance()
|
|
||||||
{
|
|
||||||
var newHairStyle = _random.Pick(HairStyles.HairStylesMap.Keys.ToList());
|
|
||||||
|
|
||||||
var newFacialHairStyle = Profile.Sex == Sex.Female
|
|
||||||
? HairStyles.DefaultFacialHairStyle
|
|
||||||
: _random.Pick(HairStyles.FacialHairStylesMap.Keys.ToList());
|
|
||||||
|
|
||||||
var newHairColor = _random.Pick(HairStyles.RealisticHairColors);
|
|
||||||
newHairColor = newHairColor
|
|
||||||
.WithRed(RandomizeColor(newHairColor.R))
|
|
||||||
.WithGreen(RandomizeColor(newHairColor.G))
|
|
||||||
.WithBlue(RandomizeColor(newHairColor.B));
|
|
||||||
|
|
||||||
Profile = Profile.WithCharacterAppearance(
|
|
||||||
Profile.Appearance
|
|
||||||
.WithHairStyleName(newHairStyle)
|
|
||||||
.WithFacialHairStyleName(newFacialHairStyle)
|
|
||||||
.WithHairColor(newHairColor)
|
|
||||||
.WithFacialHairColor(newHairColor));
|
|
||||||
UpdateHairPickers();
|
|
||||||
|
|
||||||
float RandomizeColor(float channel)
|
|
||||||
{
|
|
||||||
return MathHelper.Clamp01(channel + _random.Next(-25, 25) / 100f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using Content.Shared.Preferences.Appearance;
|
using Content.Shared.Preferences.Appearance;
|
||||||
|
using Robust.Shared.Interfaces.Random;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Maths;
|
using Robust.Shared.Maths;
|
||||||
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
namespace Content.Shared.Preferences
|
namespace Content.Shared.Preferences
|
||||||
@@ -73,6 +77,31 @@ namespace Content.Shared.Preferences
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static HumanoidCharacterAppearance Random(Sex sex)
|
||||||
|
{
|
||||||
|
var random = IoCManager.Resolve<IRobustRandom>();
|
||||||
|
|
||||||
|
var newHairStyle = random.Pick(HairStyles.HairStylesMap.Keys.ToList());
|
||||||
|
|
||||||
|
var newFacialHairStyle = sex == Sex.Female
|
||||||
|
? HairStyles.DefaultFacialHairStyle
|
||||||
|
: random.Pick(HairStyles.FacialHairStylesMap.Keys.ToList());
|
||||||
|
|
||||||
|
var newHairColor = random.Pick(HairStyles.RealisticHairColors);
|
||||||
|
newHairColor = newHairColor
|
||||||
|
.WithRed(RandomizeColor(newHairColor.R))
|
||||||
|
.WithGreen(RandomizeColor(newHairColor.G))
|
||||||
|
.WithBlue(RandomizeColor(newHairColor.B));
|
||||||
|
|
||||||
|
// TODO: Add random eye and skin color
|
||||||
|
return new HumanoidCharacterAppearance(newHairStyle, newHairColor, newFacialHairStyle, newHairColor, Color.Black, Color.FromHex("#C0967F"));
|
||||||
|
|
||||||
|
float RandomizeColor(float channel)
|
||||||
|
{
|
||||||
|
return MathHelper.Clamp01(channel + random.Next(-25, 25) / 100f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static HumanoidCharacterAppearance EnsureValid(HumanoidCharacterAppearance appearance)
|
public static HumanoidCharacterAppearance EnsureValid(HumanoidCharacterAppearance appearance)
|
||||||
{
|
{
|
||||||
string hairStyleName;
|
string hairStyleName;
|
||||||
|
|||||||
@@ -2,7 +2,11 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Content.Shared.Roles;
|
using Content.Shared.Roles;
|
||||||
|
using Content.Shared.Text;
|
||||||
|
using Robust.Shared.Interfaces.Random;
|
||||||
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
|
using Robust.Shared.Random;
|
||||||
using Robust.Shared.Serialization;
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
namespace Content.Shared.Preferences
|
namespace Content.Shared.Preferences
|
||||||
@@ -49,7 +53,22 @@ namespace Content.Shared.Preferences
|
|||||||
|
|
||||||
public static HumanoidCharacterProfile Default()
|
public static HumanoidCharacterProfile Default()
|
||||||
{
|
{
|
||||||
return new HumanoidCharacterProfile("John Doe", 18, Sex.Male, HumanoidCharacterAppearance.Default(),
|
return Random();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HumanoidCharacterProfile Random()
|
||||||
|
{
|
||||||
|
var random = IoCManager.Resolve<IRobustRandom>();
|
||||||
|
var sex = random.Prob(0.5f) ? Sex.Male : Sex.Female;
|
||||||
|
|
||||||
|
var firstName = random.Pick(sex == Sex.Male
|
||||||
|
? Names.MaleFirstNames
|
||||||
|
: Names.FemaleFirstNames);
|
||||||
|
var lastName = random.Pick(Names.LastNames);
|
||||||
|
var name = $"{firstName} {lastName}";
|
||||||
|
var age = random.Next(MinimumAge, MaximumAge);
|
||||||
|
|
||||||
|
return new HumanoidCharacterProfile(name, age, sex, HumanoidCharacterAppearance.Random(sex),
|
||||||
new Dictionary<string, JobPriority>
|
new Dictionary<string, JobPriority>
|
||||||
{
|
{
|
||||||
{SharedGameTicker.OverflowJob, JobPriority.High}
|
{SharedGameTicker.OverflowJob, JobPriority.High}
|
||||||
|
|||||||
Reference in New Issue
Block a user