private static void ApplyToAllDatas(Func<AgentData, PregnancyData, bool> action)
        {
            void ApplyToDatas(AgentData character)
                {
                    var chafiles = character.GetRelatedChaFiles();
                    if (chafiles == null) return;

                    foreach (var chaFile in chafiles)
                    {
                        var data = ExtendedSave.GetExtendedDataById(chaFile, PregnancyPlugin.GUID);
                        var pd = PregnancyData.Load(data) ?? new PregnancyData();
                        if (action(character, pd))
                            ExtendedSave.SetExtendedDataById(chaFile, PregnancyPlugin.GUID, pd.Save());
                    }
                }

                var heroineList = GetHeroineList();
                if (heroineList == null) return;

                foreach (var heroine in heroineList)
                {
                    ApplyToDatas(heroine);
                }
                // ApplyToDatas(Singleton<Map>.Instance.Player.AgentPartner.AgentData);  TODO find male AgentData, if we want to match what KK is now doing

                // If controller exists then update its state so it gets any pregnancy week updates
                foreach (var controller in FindObjectsOfType<PregnancyCharaController>())
                    controller.ReadData();
        }
        private static void ApplyToAllDatas(Func <SaveData.CharaData, PregnancyData, bool> action)
        {
            void ApplyToDatas(SaveData.CharaData character)
            {
                var chafiles = character.GetRelatedChaFiles();

                if (chafiles == null)
                {
                    return;
                }
                foreach (var chaFile in chafiles)
                {
                    var data = ExtendedSave.GetExtendedDataById(chaFile, PregnancyPlugin.GUID);
                    var pd   = PregnancyData.Load(data) ?? new PregnancyData();
                    if (action(character, pd))
                    {
                        ExtendedSave.SetExtendedDataById(chaFile, PregnancyPlugin.GUID, pd.Save());
                    }
                }
            }

            foreach (var heroine in Game.Instance.HeroineList)
            {
                ApplyToDatas(heroine);
            }
            ApplyToDatas(Game.Instance.Player);

            // If controller exists then update its state so it gets any pregnancy week updates
            foreach (var controller in FindObjectsOfType <PregnancyCharaController>())
            {
                controller.ReadData();
            }
        }
Exemplo n.º 3
0
        public void ReadData()
        {
            var data = GetExtendedData();

            Data = PregnancyData.Load(data) ?? new PregnancyData();

            // PregnancyPlugin.Logger.LogDebug($"Preg - ReadData week {Data.Week} {ChaControl.name}");
        }
            private static void GetMenstruationOverridePrefix()
            {
                if (_lastHeroine != null)
                {
                    // Get a schedule directly this way since the controller is not spawned in class roster
                    var schedule = _lastHeroine.GetRelatedChaFiles()
                                   .Select(c => PregnancyData.Load(ExtendedSave.GetExtendedDataById(c, GUID))?.MenstruationSchedule ?? MenstruationSchedule.Default)
                                   .FirstOrDefault(x => x != MenstruationSchedule.Default);

                    _menstruationsBackup = HFlag.menstruations;
                    HFlag.menstruations  = PregnancyCharaController.GetMenstruationsArr(schedule);
                }
            }
Exemplo n.º 5
0
            private static bool CanGetSpawned(AgentActor heroine)
            {
                var isOnLeave = heroine.GetRelatedChaFiles()
                                .Any(c =>
                {
                    var pd = PregnancyData.Load(ExtendedSave.GetExtendedDataById(heroine.ChaControl.chaFile, GUID));
                    if (pd == null)
                    {
                        return(false);
                    }
                    return(pd.GameplayEnabled && pd.Week >= PregnancyData.LeaveSchoolWeek);
                });

                return(!isOnLeave);
            }
        /// <param name="c">ChaFile to test</param>
        ///// <param name="afterWasDiscovered">The girl knows about it / tested it</param>
        public static PregnancyData GetPregnancyData(this ChaFileControl c)
        {
            if (c == null)
            {
                return(null);
            }

            var d = ExtendedSave.GetExtendedDataById(c, PregnancyPlugin.GUID);

            if (d == null)
            {
                return(null);
            }

            return(PregnancyData.Load(d));
        }
Exemplo n.º 7
0
        public void ReadData()
        {
            var data = GetExtendedData();

            Data = PregnancyData.Load(data) ?? new PregnancyData();

            if (!CanGetDangerousDays())
            {
                // Force the girl to always be on the safe day, happens every day after day of conception
                var heroine = ChaControl.GetHeroine();
                if (heroine != null)
                {
                    HFlag.SetMenstruation(heroine, HFlag.MenstruationType.安全日);
                }
            }
        }
        public void ReadData()
        {
            var data = GetExtendedData();

            Data = PregnancyData.Load(data) ?? new PregnancyData();

            // PregnancyPlugin.Logger.LogDebug($"Preg - ReadData week {Data.Week} {ChaControl.name}");

#if KK
            if (!CanGetDangerousDays())
            {
                // Force the girl to always be on the safe day, happens every day after day of conception
                var heroine = ChaControl.GetHeroine();
                if (heroine != null)
                {
                    HFlag.SetMenstruation(heroine, HFlag.MenstruationType.安全日);
                }
            }
#endif
        }
Exemplo n.º 9
0
        public void ReadData()
        {
            var heroine = KoikatuAPI.GetCurrentGameMode() == GameMode.MainGame ? ChaControl.GetHeroine() : null;

            if (heroine?.charFile != null)
            {
                Data = heroine.charFile.GetPregnancyData() ?? new PregnancyData();
            }
            else
            {
                Data = PregnancyData.Load(GetExtendedData()) ?? new PregnancyData();
            }

            // PregnancyPlugin.Logger.LogDebug($"Preg - ReadData week {Data.Week} {ChaControl.name}");

            if (!CanGetDangerousDays())
            {
                // Force the girl to always be on the safe day, happens every day after day of conception
                if (heroine != null)
                {
                    HFlag.SetMenstruation(heroine, HFlag.MenstruationType.安全日);
                }
            }
        }