public double GetColorGoodness(PersonalColorType personalColorType, ServerColor color) { var colorGroups = ColorMatching.Autumn; if (personalColorType == PersonalColorType.Winter) { colorGroups = ColorMatching.Winter; } if (personalColorType == PersonalColorType.Spring) { colorGroups = ColorMatching.Spring; } if (personalColorType == PersonalColorType.Summer) { colorGroups = ColorMatching.Summer; } if (personalColorType == PersonalColorType.Autumn) { colorGroups = ColorMatching.Autumn; } var red = GetColorGoodness(colorGroups.RedPink.GoodColors, colorGroups.RedPink.BadColors, color); var orangeYellow = GetColorGoodness(colorGroups.OrangeYellow.GoodColors, colorGroups.OrangeYellow.BadColors, color); var green = GetColorGoodness(colorGroups.Green.GoodColors, colorGroups.Green.BadColors, color); var blue = GetColorGoodness(colorGroups.Blue.GoodColors, colorGroups.Blue.BadColors, color); var brownBeige = GetColorGoodness(colorGroups.BrownBeige.GoodColors, colorGroups.BrownBeige.BadColors, color); var grayBlackWhite = GetColorGoodness(colorGroups.GrayBlackWhite.GoodColors, colorGroups.GrayBlackWhite.BadColors, color); return(new List <double> { red, orangeYellow, green, blue, brownBeige, grayBlackWhite }.Max()); }
private static double GetColorGoodness(IEnumerable <ServerColor> goodColors, IEnumerable <ServerColor> badColors, ServerColor color) { var minGoodDiff = goodColors.Select(goodColor => ServerColor.CompareDeltaE(color, goodColor)).Min(); var minBadDiff = badColors.Select(badColor => ServerColor.CompareDeltaE(color, badColor)).Min(); return(1 - minGoodDiff / (minGoodDiff + minBadDiff)); }
static void Main(string[] args) { ContentPath content = new ContentPath(); var resource = new ResourceHandler(); var colorsMatching = resource.ReadeResourceFile <LamodaColorsDeserializer>(content.LamodaColors); Console.WriteLine(ServerColor.GetDifference(new ServerColor("000000"), new ServerColor("000000"))); Console.WriteLine(ServerColor.GetDifference(new ServerColor("ffffff"), new ServerColor("ffffff"))); Console.WriteLine(ServerColor.GetDifference(new ServerColor("dfbd93"), new ServerColor("dfbd93"))); var baseColors = BaseColorType.AsList(); ServerColor beige = new ServerColor("dfbd93"); foreach (var baseColorType in baseColors) { var otherColor = new ServerColor(baseColorType.Hex); var diff = ServerColor.GetDifference(beige, otherColor); Console.WriteLine($"Base Color: {baseColorType.Name}: {diff} | ({otherColor.ToRgb().R}, {otherColor.ToRgb().G}, {otherColor.ToRgb().B}) | ({beige.ToRgb().R}, {beige.ToRgb().G}, {beige.ToRgb().B})"); } }
public void ChangePlayerColor(Color NewOutlineColor, Color NewOutlineEmissionColor, float NewOutlineEmissionlevel, Color NewBaseColor, Color NewBaseEmissionColor, float NewBaseEmissionlevel, int ID) { ServerColor modified = new ServerColor(NewOutlineColor, NewOutlineEmissionColor, NewOutlineEmissionlevel, NewBaseColor, NewBaseEmissionColor, NewBaseEmissionlevel); PlayerColor[ID] = modified; }