Enhance hair color handling in AIImages by adding support for hair color genes in PawnAppearanceData. Update ColorDescriptionService to prioritize gene-based hair color descriptions, improving character appearance representation. Refactor related services to utilize new hair color logic.
All checks were successful
SonarQube Analysis / Build and analyze (push) Successful in 1m40s
All checks were successful
SonarQube Analysis / Build and analyze (push) Successful in 1m40s
This commit is contained in:
@@ -253,24 +253,24 @@ namespace AIImages.Services
|
||||
case "Skin_Green":
|
||||
return "green skin";
|
||||
default:
|
||||
// Пытаемся определить по названию
|
||||
if (geneDefName.Contains("Green") || geneDefName.Contains("зел"))
|
||||
// Пытаемся определить по названию (defName всегда на английском)
|
||||
if (geneDefName.Contains("Green"))
|
||||
return "green skin";
|
||||
if (geneDefName.Contains("Blue") || geneDefName.Contains("син"))
|
||||
if (geneDefName.Contains("Blue"))
|
||||
return "blue skin";
|
||||
if (geneDefName.Contains("Red") || geneDefName.Contains("красн"))
|
||||
if (geneDefName.Contains("Red"))
|
||||
return "red skin";
|
||||
if (geneDefName.Contains("Yellow") || geneDefName.Contains("жёлт"))
|
||||
if (geneDefName.Contains("Yellow"))
|
||||
return "yellow skin";
|
||||
if (geneDefName.Contains("Purple") || geneDefName.Contains("фиолет"))
|
||||
if (geneDefName.Contains("Purple"))
|
||||
return "purple skin";
|
||||
if (geneDefName.Contains("Orange") || geneDefName.Contains("оранж"))
|
||||
if (geneDefName.Contains("Orange"))
|
||||
return "orange skin";
|
||||
if (geneDefName.Contains("Black") || geneDefName.Contains("чёрн"))
|
||||
if (geneDefName.Contains("Black"))
|
||||
return "black skin";
|
||||
if (geneDefName.Contains("White") || geneDefName.Contains("бел"))
|
||||
if (geneDefName.Contains("White"))
|
||||
return "white skin";
|
||||
if (geneDefName.Contains("Gray") || geneDefName.Contains("Grey") || geneDefName.Contains("сер"))
|
||||
if (geneDefName.Contains("Gray") || geneDefName.Contains("Grey"))
|
||||
return "gray skin";
|
||||
return null;
|
||||
}
|
||||
@@ -283,8 +283,13 @@ namespace AIImages.Services
|
||||
|
||||
StringBuilder hair = new StringBuilder();
|
||||
|
||||
// Цвет волос
|
||||
string hairColor = ColorDescriptionService.GetHairColorDescription(data.HairColor);
|
||||
// Цвет волос - сначала проверяем гены
|
||||
string hairColor = GetHairColorFromData(data);
|
||||
if (string.IsNullOrEmpty(hairColor))
|
||||
{
|
||||
// Если нет генов, используем цвет из RGB
|
||||
hairColor = ColorDescriptionService.GetHairColorDescription(data.HairColor);
|
||||
}
|
||||
hair.Append(hairColor);
|
||||
hair.Append(" hair, ");
|
||||
|
||||
@@ -299,6 +304,94 @@ namespace AIImages.Services
|
||||
return hair.ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает описание цвета волос из генов в данных персонажа
|
||||
/// </summary>
|
||||
private string GetHairColorFromData(PawnAppearanceData data)
|
||||
{
|
||||
if (data?.HairColorGeneDefNames == null || !data.HairColorGeneDefNames.Any())
|
||||
return null;
|
||||
|
||||
// Берем первый ген (они уже отсортированы по приоритету)
|
||||
string geneDefName = data.HairColorGeneDefNames.FirstOrDefault();
|
||||
if (string.IsNullOrEmpty(geneDefName))
|
||||
return null;
|
||||
|
||||
// Определяем цвет волос по названию гена
|
||||
return GetHairColorFromGeneDefName(geneDefName);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает описание цвета волос из названия гена
|
||||
/// </summary>
|
||||
private string GetHairColorFromGeneDefName(string geneDefName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(geneDefName))
|
||||
return null;
|
||||
|
||||
// Специфичные описания для известных генов цвета волос
|
||||
switch (geneDefName)
|
||||
{
|
||||
case "Hair_Blond":
|
||||
case "Hair_Blonde":
|
||||
return "blond";
|
||||
case "Hair_Brown":
|
||||
return "brown";
|
||||
case "Hair_Black":
|
||||
return "black";
|
||||
case "Hair_White":
|
||||
return "white";
|
||||
case "Hair_Red":
|
||||
return "red";
|
||||
case "Hair_Ginger":
|
||||
return "ginger";
|
||||
case "Hair_Auburn":
|
||||
return "auburn";
|
||||
case "Hair_Copper":
|
||||
case "Hair_CopperBrown":
|
||||
return "copper-brown";
|
||||
case "Hair_Light":
|
||||
return "light";
|
||||
case "Hair_Dark":
|
||||
return "dark";
|
||||
default:
|
||||
// Пытаемся определить по названию (defName всегда на английском)
|
||||
if (geneDefName.Contains("Blond"))
|
||||
return "blond";
|
||||
if (geneDefName.Contains("Brown"))
|
||||
return "brown";
|
||||
if (geneDefName.Contains("Black"))
|
||||
return "black";
|
||||
if (geneDefName.Contains("White"))
|
||||
return "white";
|
||||
if (geneDefName.Contains("Red"))
|
||||
return "red";
|
||||
if (geneDefName.Contains("Ginger"))
|
||||
return "ginger";
|
||||
if (geneDefName.Contains("Auburn"))
|
||||
return "auburn";
|
||||
if (geneDefName.Contains("Copper"))
|
||||
return "copper-brown";
|
||||
if (geneDefName.Contains("Orange"))
|
||||
return "orange-red";
|
||||
if (geneDefName.Contains("Light"))
|
||||
return "light";
|
||||
if (geneDefName.Contains("Dark"))
|
||||
return "dark";
|
||||
if (geneDefName.Contains("Blue"))
|
||||
return "blue";
|
||||
if (geneDefName.Contains("Green"))
|
||||
return "green";
|
||||
if (geneDefName.Contains("Purple"))
|
||||
return "purple";
|
||||
if (geneDefName.Contains("Pink"))
|
||||
return "pink";
|
||||
if (geneDefName.Contains("Gray") || geneDefName.Contains("Grey"))
|
||||
return "gray";
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private string GetMoodFromTraits(List<Trait> traits)
|
||||
{
|
||||
if (traits == null || !traits.Any())
|
||||
|
||||
Reference in New Issue
Block a user