static void Invoke(HashSet <SubscriptionBundle> bundles, Action <SubscriptionBundle> act)
        {
            if (dump.Count > 0)
            {
                foreach (SubscriptionBundle bundle in dump)
                {
                    UnsubscribeInternal(bundle);
                }

                dump.Clear();
            }

            foreach (SubscriptionBundle bundle in bundles)
            {
                try
                {
                    act(bundle);
                }
                catch (Exception err)
                {
                    Unsubscribe(bundle);
                    CareBairPackage.LogError(bundle.source, $"{err.Source} {err.Message} {err.StackTrace}");
                }
            }
        }
Example #2
0
        public static void Awake(ConfigFile Config)
        {
            Enabled  = Config.Bind(SECTION, "#1是否启用", false, DESCRIPTION_ENABLED);
            WindowID = Config.Bind(SECTION, "#2Window ID", 12087);

            OrgasmPlayer   = Config.Bind(SECTION, /* "Minimum O****m Player"*/ "01.玩家最低高潮阈值", 80, new ConfigDescription(DESCRIPTION_ORGASM_PLAYER, new AcceptableValueRange <int>(0, 100)));
            OrgasmPartner  = Config.Bind(SECTION, /*"Minimum O****m Partner" */ "02.伴侣最低高潮阈值", 80, new ConfigDescription(DESCRIPTION_ORGASM_PARTNER, new AcceptableValueRange <int>(0, 100)));
            OrgasmBoth     = Config.Bind(SECTION, /* "Minimum O****m Both" */ "03.两人最低高潮阈值", 70, new ConfigDescription(DESCRIPTION_ORGASM_BOTH, new AcceptableValueRange <int>(0, 100)));
            InsideChance   = Config.Bind(SECTION, /* "Inside Chance"*/ "04.内射机率", 80, new ConfigDescription(DESCRIPTION_INSIDE_CHANCE, new AcceptableValueRange <int>(0, 100)));
            DrinkChance    = Config.Bind(SECTION, /* "Drink Chance" */ "05.吞精概率", 40, new ConfigDescription(DESCRIPTION_DRINK_CHANCE, new AcceptableValueRange <int>(0, 100)));
            MouthChance    = Config.Bind(SECTION, /* "Mouth Chance" */ "06.嘴接精的概率", 40, new ConfigDescription(DESCRIPTION_MOUTH_CHANCE, new AcceptableValueRange <int>(0, 100)));
            WakeChance     = Config.Bind(SECTION, /* "Wake Up Chance" */ "08.苏醒概率", 50, new ConfigDescription(DESCRIPTION_WAKE_UP_CHANCE, new AcceptableValueRange <int>(0, 100)));
            WakeRate       = Config.Bind(SECTION, /*"Wake Up Rate" */ "09.快感和苏醒概率比值", 50, new ConfigDescription(DESCRIPTION_WAKE_RATE, new AcceptableValueRange <int>(0, 100)));
            WakeDecay      = Config.Bind(SECTION, /*"Wake Decay Rate" */ "11.苏醒衰退概率", 5, new ConfigDescription(DESCRIPTION_WAKE_DECAY, new AcceptableValueRange <int>(0, 100)));;
            WakeDisplay    = Config.Bind(SECTION, /*"Display Wake Up Chance" */ "10.快感值降低时苏醒概率降低", true, DESCRIPTION_WAKE_DECAY);
            ChangeSleepSex = Config.Bind(SECTION, /*"Change Sleep Sex"*/ "07.快感值和苏醒概率有关", false, DESCRIPTION_CHANGE_SLEEP_SEX);

            CareBairPackage.InitSetting(OrgasmPlayer, () => playerMeter   = OrgasmPlayer.Value / 100f);
            CareBairPackage.InitSetting(OrgasmPartner, () => partnerMeter = OrgasmPartner.Value / 100f);
            CareBairPackage.InitSetting(OrgasmBoth, () => bothMeter       = OrgasmBoth.Value / 100f);
            CareBairPackage.InitSetting(InsideChance, () => insideChance  = InsideChance.Value / 100f);
            CareBairPackage.InitSetting(DrinkChance, () => drinkChance    = DrinkChance.Value / 100f);
            CareBairPackage.InitSetting(MouthChance, () => mouthChance    = MouthChance.Value / 100f);
            CareBairPackage.InitSetting(WakeRate, () => wakeRate          = WakeRate.Value / 100f);

            Subscription.Subscribe(typeof(HOverhaul), Enabled, onGUI: OnGUI, patch: true);
        }
        public static void Awake(ConfigFile Config)
        {
            Enabled  = Config.Bind(SECTION, "__Enabled", false, DESCRIPTION_ENABLED);
            WindowID = Config.Bind(SECTION, "__Window ID", 12087);

            OrgasmPlayer   = Config.Bind(SECTION, "Minimum O****m Player", 80, new ConfigDescription(DESCRIPTION_ORGASM_PLAYER, new AcceptableValueRange <int>(0, 100)));
            OrgasmPartner  = Config.Bind(SECTION, "Minimum O****m Partner", 80, new ConfigDescription(DESCRIPTION_ORGASM_PARTNER, new AcceptableValueRange <int>(0, 100)));
            OrgasmBoth     = Config.Bind(SECTION, "Minimum O****m Both", 70, new ConfigDescription(DESCRIPTION_ORGASM_BOTH, new AcceptableValueRange <int>(0, 100)));
            InsideChance   = Config.Bind(SECTION, "Inside Chance", 80, new ConfigDescription(DESCRIPTION_INSIDE_CHANCE, new AcceptableValueRange <int>(0, 100)));
            DrinkChance    = Config.Bind(SECTION, "Drink Chance", 40, new ConfigDescription(DESCRIPTION_DRINK_CHANCE, new AcceptableValueRange <int>(0, 100)));
            MouthChance    = Config.Bind(SECTION, "Mouth Chance", 40, new ConfigDescription(DESCRIPTION_MOUTH_CHANCE, new AcceptableValueRange <int>(0, 100)));
            WakeChance     = Config.Bind(SECTION, "Wake Up Chance", 50, new ConfigDescription(DESCRIPTION_WAKE_UP_CHANCE, new AcceptableValueRange <int>(0, 100)));
            WakeRate       = Config.Bind(SECTION, "Wake Up Rate", 50, new ConfigDescription(DESCRIPTION_WAKE_RATE, new AcceptableValueRange <int>(0, 100)));
            WakeDecay      = Config.Bind(SECTION, "Wake Decay Rate", 5, new ConfigDescription(DESCRIPTION_WAKE_DECAY, new AcceptableValueRange <int>(0, 100)));;
            WakeDisplay    = Config.Bind(SECTION, "Display Wake Up Chance", true);
            ChangeSleepSex = Config.Bind(SECTION, "Change Sleep Sex", false, DESCRIPTION_CHANGE_SLEEP_SEX);

            CareBairPackage.InitSetting(OrgasmPlayer, () => playerMeter   = OrgasmPlayer.Value / 100f);
            CareBairPackage.InitSetting(OrgasmPartner, () => partnerMeter = OrgasmPartner.Value / 100f);
            CareBairPackage.InitSetting(OrgasmBoth, () => bothMeter       = OrgasmBoth.Value / 100f);
            CareBairPackage.InitSetting(InsideChance, () => insideChance  = InsideChance.Value / 100f);
            CareBairPackage.InitSetting(DrinkChance, () => drinkChance    = DrinkChance.Value / 100f);
            CareBairPackage.InitSetting(MouthChance, () => mouthChance    = MouthChance.Value / 100f);
            CareBairPackage.InitSetting(WakeRate, () => wakeRate          = WakeRate.Value / 100f);

            Subscription.Subscribe(typeof(HOverhaul), Enabled, onGUI: OnGUI, patch: true);
        }
        public static SubscriptionBundle Subscribe(Type source,
                                                   ConfigEntry <bool> entry,
                                                   SubscriptionHook update     = null,
                                                   SubscriptionHook lateUpdate = null,
                                                   SubscriptionHook onGUI      = null,
                                                   bool patch = false)
        {
            SubscriptionBundle bundle = new SubscriptionBundle(source, update, lateUpdate, onGUI, patch);

            CareBairPackage.InitSetting(entry, () =>
            {
                if (entry.Value)
                {
                    Subscribe(bundle);
                }
                else
                {
                    Unsubscribe(bundle);
                }
            });

            return(bundle);
        }