private static void AddPregIcon(Transform pregIconTransform, SaveData.Heroine heroine)
            {
                var image = pregIconTransform.GetComponent <Image>();

                _currentHeroine.Add(new KeyValuePair <SaveData.Heroine, RectTransform>(heroine, image.GetComponent <RectTransform>()));

                switch (heroine.GetHeroineStatus(heroine.GetPregnancyData()))
                {
                case HeroineStatus.Unknown:
                    image.sprite = _unknownSprite;
                    break;

                case HeroineStatus.OnLeave:
                    image.sprite = _leaveSprite;
                    break;

                case HeroineStatus.Safe:
                    image.sprite = _safeSprite;
                    break;

                case HeroineStatus.Risky:
                    image.sprite = _riskySprite;
                    break;

                case HeroineStatus.Pregnant:
                    image.sprite = _pregSprite;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        public static HeroineStatus GetHeroineStatus(this SaveData.Heroine heroine, PregnancyData pregData = null)
        {
            if (heroine == null)
            {
                return(HeroineStatus.Unknown);
            }

            if (pregData == null)
            {
                pregData = heroine.GetPregnancyData();
            }

            // Check if she wants to tell
            if (heroine.intimacy >= 80 ||
                heroine.hCount >= 5 ||
                heroine.parameter.attribute.bitch && heroine.favor > 50 ||
                (heroine.isGirlfriend || heroine.favor >= 90) &&
                (!heroine.isVirgin || heroine.hCount >= 2 || heroine.intimacy >= 40))
            {
                var pregnancyWeek = pregData.Week;
                if (pregnancyWeek > 0)
                {
                    if (pregnancyWeek >= PregnancyData.LeaveSchoolWeek)
                    {
                        return(HeroineStatus.OnLeave);
                    }
                    if (PregnancyPlugin.ShowPregnancyIconEarly.Value)
                    {
                        return(HeroineStatus.Pregnant);
                    }
                    // Different personalities notice at different times
                    if (_earlyDetectPersonalities.Contains(heroine.personality))
                    {
                        if (pregnancyWeek > 1)
                        {
                            return(HeroineStatus.Pregnant);
                        }
                    }
                    else if (_lateDetectPersonalities.Contains(heroine.personality))
                    {
                        if (pregnancyWeek > 11)
                        {
                            return(HeroineStatus.Pregnant);
                        }
                    }
                    else
                    {
                        if (pregnancyWeek > 5)
                        {
                            return(HeroineStatus.Pregnant);
                        }
                    }
                }

                return(HFlag.GetMenstruation(heroine.MenstruationDay) == HFlag.MenstruationType.安全日
                    ? HeroineStatus.Safe
                    : HeroineStatus.Risky);
            }

            return(HeroineStatus.Unknown);
        }