/// <summary>
        ///     Gets the hair color override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetHairColorOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }
            HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;

            if (def.explicitHybridRace == null)
            {
                Gender?gender = pawn?.gender;

                if (gender == Gender.Female && gSettings?.femaleHairColorOverride != null)
                {
                    return(gSettings.femaleHairColorOverride);
                }

                return(gSettings?.hairColorOverride ?? GetSkinColorOverride(def, pawn));
            }

            var hRace = def.explicitHybridRace as ThingDef_AlienRace;

            return(hRace?.alienRace?.generalSettings?.alienPartGenerator?.alienhaircolorgen?.NewRandomizedColor()
                   ?? GetSkinColorOverride(def, pawn));
        }
Example #2
0
        /// <summary>
        ///     Gets the skin color second override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetSkinColorSecondOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }

            Color?aspectColor = pawn?.GetAspectTracker()?.GetAspect <Aspects.ColorationAspect>()?.ColorSet?.skinColorTwo;

            if (aspectColor.HasValue)
            {
                return(aspectColor);
            }

            if (def.ExplicitHybridRace == null)
            {
                HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;

                if (pawn?.gender == Gender.Female && gSettings?.femaleSkinColorOverrideSecond != null)
                {
                    return(gSettings.femaleSkinColorOverrideSecond);
                }

                return(gSettings?.skinColorOverrideSecond);
            }

            var hRace = def.ExplicitHybridRace as ThingDef_AlienRace;

            AlienPartGenerator generalSettingsAlienPartGenerator = hRace?.alienRace?.generalSettings?.alienPartGenerator;

            return(generalSettingsAlienPartGenerator?.GenerateRandomColor("skin", false, pawn?.thingIDNumber));
        }
Example #3
0
        /// <summary>
        ///     Gets the skin color override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetSkinColorOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }

            Color?aspectColor = pawn?.GetAspectTracker()?.GetAspect <Aspects.ColorationAspect>()?.ColorSet?.skinColor;

            if (aspectColor.HasValue)
            {
                return(aspectColor);
            }

            if (def.ExplicitHybridRace == null)
            {
                HybridRaceSettings.GraphicsSettings raceGSettings = def.raceSettings?.graphicsSettings;
                Gender?gender = pawn?.gender;
                if (gender == Gender.Female && raceGSettings?.femaleSkinColorOverride != null)
                {
                    return(raceGSettings.femaleSkinColorOverride);
                }

                return(raceGSettings?.skinColorOverride);
            }

            var hRace = def.ExplicitHybridRace as ThingDef_AlienRace;
            var pGen  = hRace?.GetPartGenerator();


            return(pGen?.GenerateRandomColor("skin", true, pawn?.thingIDNumber));
        }
        /// <summary>
        ///     Gets the hair color override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetHairColorOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }

            Color?aspectColor = pawn?.GetAspectTracker()?.GetAspect <Aspects.ColorationAspect>()?.ColorSet?.hairColor;

            if (aspectColor.HasValue)
            {
                return(aspectColor);
            }

            HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;

            if (def.ExplicitHybridRace == null)
            {
                Gender?gender = pawn?.gender;

                if (gender == Gender.Female && gSettings?.femaleHairColorOverride != null)
                {
                    return(gSettings.femaleHairColorOverride);
                }

                return(gSettings?.hairColorOverride ?? GetSkinColorOverride(def, pawn));
            }

            var            hRace          = def.ExplicitHybridRace as ThingDef_AlienRace;
            ColorGenerator colorGenerator = hRace?.alienRace?.generalSettings?.alienPartGenerator?.alienhaircolorgen;
            Color?         color;

            if (colorGenerator != null)
            {
                try
                {
                    if (pawn != null)
                    {
                        Rand.PushState(pawn.thingIDNumber);
                    }
                    color = colorGenerator.NewRandomizedColor();
                }
                finally
                {
                    if (pawn != null)
                    {
                        Rand.PopState();
                    }
                }
            }
            else
            {
                color = GetSkinColorOverride(def, pawn);
            }


            return(color);
        }
        /// <summary>
        ///     Gets the hair color override second.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetHairColorOverrideSecond([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }
            if (def.ExplicitHybridRace == null)
            {
                HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;
                if (pawn?.gender == Gender.Female && gSettings?.femaleHairColorOverrideSecond != null)
                {
                    return(gSettings.femaleHairColorOverrideSecond);
                }

                return(gSettings?.hairColorOverrideSecond ?? GetSkinColorSecondOverride(def, pawn));
            }

            var            hRace          = def.ExplicitHybridRace as ThingDef_AlienRace;
            ColorGenerator colorGenerator = hRace?.alienRace?.generalSettings?.alienPartGenerator?.alienhairsecondcolorgen;
            Color?         color;

            if (colorGenerator != null)
            {
                try
                {
                    if (pawn != null)
                    {
                        Rand.PushState(pawn.thingIDNumber);
                    }

                    color = colorGenerator.NewRandomizedColor();
                }
                finally
                {
                    if (pawn != null)
                    {
                        Rand.PopState();
                    }
                }
            }
            else
            {
                color = GetSkinColorOverride(def, pawn);
            }


            return(color);
        }
Example #6
0
        /// <summary>
        ///     Gets the hair color override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetHairColorOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }

            Color?aspectColor = pawn?.GetAspectTracker()?.GetAspect <Aspects.ColorationAspect>()?.ColorSet?.hairColor;

            if (aspectColor.HasValue)
            {
                return(aspectColor);
            }

            HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;

            if (def.ExplicitHybridRace == null)
            {
                Gender?gender = pawn?.gender;

                if (gender == Gender.Female && gSettings?.femaleHairColorOverride != null)
                {
                    return(gSettings.femaleHairColorOverride);
                }

                return(gSettings?.hairColorOverride ?? GetSkinColorOverride(def, pawn));
            }

            var hRace = def.ExplicitHybridRace as ThingDef_AlienRace;
            var pGen  = hRace.GetPartGenerator();

            Color?color = null;

            if (pGen != null)
            {
                color = pGen.GenerateRandomColor("hair", true, pawn?.thingIDNumber);
            }

            color = color ?? GetSkinColorOverride(def, pawn);


            return(color);
        }
        /// <summary>
        /// Gets the skin color second override.
        /// </summary>
        /// <param name="def">The definition.</param>
        /// <param name="pawn">The pawn.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">def</exception>
        public static Color?GetSkinColorSecondOverride([NotNull] this MorphDef def, Pawn pawn = null)
        {
            if (def == null)
            {
                throw new ArgumentNullException(nameof(def));
            }
            if (def.explicitHybridRace == null)
            {
                HybridRaceSettings.GraphicsSettings gSettings = def.raceSettings?.graphicsSettings;

                if (pawn?.gender == Gender.Female && gSettings?.femaleSkinColorOverrideSecond != null)
                {
                    return(gSettings.femaleSkinColorOverrideSecond);
                }

                return(gSettings?.skinColorOverrideSecond);
            }
            var hRace = def.explicitHybridRace as ThingDef_AlienRace;

            return(hRace?.alienRace?.generalSettings?.alienPartGenerator?.alienskinsecondcolorgen?.NewRandomizedColor());
        }