// called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         ReadOwnVersion();
         Logger.Message("version {0}", LibraryVersion);
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings = new ModSettingsManager();
         Settings.BeforeModSettingsSaved += OnBeforeModSettingsSaved;
         UpdateFeatures = new UpdateFeatureManager();
         UpdateFeatures.OnEarlyInitialize();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         DoLater            = new DoLaterScheduler();
         LogUploader        = new LogPublisher();
         var librarySettings = Settings.GetModSettings(ModIdentifier);
         QuickstartController.OnEarlyInitialize(librarySettings);
         ModSpotter = new ModSpottingManager();
         ModSpotter.OnEarlyInitialize();
         new LibraryVersionChecker(LibraryVersion, Logger).OnEarlyInitialize();
         LoadOrderChecker.ValidateLoadOrder();
         EnumerateModAssemblies();
         EarlyInitializeChildMods();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
예제 #2
0
 public void EndUpdate()
 {
     updating = false;
     EvaluateDependencies();
     LoadSettings();
     ModSettingsManager.SaveBinarySettings(this);
 }
예제 #3
0
        private static void Setup()
        {
            ModSettingsManager.setPanelDescription($"Made by Metrosexual Fruitcake#6969\n\nVersion {CustomEmotesAPI.VERSION}");

            ModSettingsManager.setPanelTitle("Custom Emotes");
            ModSettingsManager.CreateCategory("Controls");
        }
예제 #4
0
        private static void AddKeyBind(string name, string desc, KeyCode key, string category)
        {
            var thing = new RiskOfOptions.OptionConstructors.KeyBind()
            {
                Name = name, Description = desc, DefaultValue = key, CategoryName = category
            };

            ModSettingsManager.AddOption(thing);
        }
        private ModSettingsManager GetManager()
        {
            var manager = new ModSettingsManager(tempFilePath, logger);

            manager.BeforeModSettingsSaved += () =>
                                              savedModifiedPacks = manager.ModSettingsPacks.Where(p => p.HasUnsavedChanges).ToArray();
            manager.AfterModSettingsSaved += () => afterSavedCallbackInvoked = true;
            return(manager);
        }
예제 #6
0
        internal static void AddStepSliderOption(ConfigEntry <float> configEntry, float min, float max, float step)
        {
            StepSliderConfig config = new StepSliderConfig();

            config.min       = min;
            config.max       = max;
            config.increment = step;

            ModSettingsManager.AddOption(new StepSliderOption(configEntry, config));
        }
예제 #7
0
        public static void doOptions()
        {
            ModSettingsManager.setPanelTitle("Hitbox Viewer");
            ModSettingsManager.setPanelDescription("Enable/disable hitbox or hurtbox viewer");

            ModSettingsManager.addOption(new ModOption(ModOption.OptionType.Bool, "Enable Hitboxes", "", "1"));
            ModSettingsManager.addListener(ModSettingsManager.getOption("Enable Hitboxes"), new UnityEngine.Events.UnityAction <bool>(hitboxBoolEvent));

            ModSettingsManager.addOption(new ModOption(ModOption.OptionType.Bool, "Enable Hurtboxes", "", "0"));
            ModSettingsManager.addListener(ModSettingsManager.getOption("Enable Hurtboxes"), new UnityEngine.Events.UnityAction <bool>(hurtboxBoolEvent));
        }
예제 #8
0
        private static void Yes()
        {
            AddKeyBind("Emote Wheel", "Displays the emote wheel.", KeyCode.C, "Controls");

            ModSettingsManager.AddListener(new UnityAction <KeyCode>(delegate(KeyCode keyCode) { EmoteWheel.emoteButton = keyCode; }), "Emote Wheel", "Controls");

            AddKeyBind("left", "Displays the emote wheel.", KeyCode.Mouse0, "Controls");

            ModSettingsManager.AddListener(new UnityAction <KeyCode>(delegate(KeyCode keyCode) { EmoteWheel.leftClick = keyCode; }), "left", "Controls");

            AddKeyBind("right", "Displays the emote wheel.", KeyCode.Mouse1, "Controls");

            ModSettingsManager.AddListener(new UnityAction <KeyCode>(delegate(KeyCode keyCode) { EmoteWheel.rightClick = keyCode; }), "right", "Controls");
        }
예제 #9
0
        protected override void SetItem(int index, Mod item)
        {
            base.SetItem(index, item);

            if (!updating)
            {
                EvaluateDependencies();
                LoadSettings();
                if (item.Active)
                {
                    ModSettingsManager.SaveBinarySettings(this);
                }
            }
        }
예제 #10
0
        protected override void RemoveItem(int index)
        {
            var  item   = this[index];
            bool active = item.Active;

            base.RemoveItem(index);

            if (!updating)
            {
                EvaluateDependencies();
                if (active)
                {
                    ModSettingsManager.SaveBinarySettings(this);
                }
            }
        }
예제 #11
0
    void Start()
    {
        selected = gameObjects[0];
        events   = input.GetFieldValue <RoR2.UI.MPEventSystem>("eventSystem");

        emoteButton = ModSettingsManager.GetOption("Emote Wheel", "Controls").GetValue <KeyCode>();
        leftClick   = ModSettingsManager.GetOption("left", "Controls").GetValue <KeyCode>();
        rightClick  = ModSettingsManager.GetOption("right", "Controls").GetValue <KeyCode>();

        for (int i = 0; i < gameObjects.Count; i++)
        {
            rightPage[i]  = CustomEmotesAPI.allClipNames[UnityEngine.Random.Range(0, CustomEmotesAPI.allClipNames.Count)];
            leftPage[i]   = CustomEmotesAPI.allClipNames[UnityEngine.Random.Range(0, CustomEmotesAPI.allClipNames.Count)];
            middlePage[i] = gameObjects[i].GetComponentInChildren <TextMeshProUGUI>().text;
        }
    }
예제 #12
0
 // called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings           = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures     = new UpdateFeatureManager();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         LogUploader        = new LogPublisher();
         ReadOwnVersionFile();
         LoadOrderChecker.ValidateLoadOrder();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
예제 #13
0
        public static void readOptions()
        {
            string disableHit = ModSettingsManager.getOptionValue("Enable Hitboxes");

            if (!string.IsNullOrEmpty(disableHit))
            {
                HitboxRevealer.showingHitBoxes = disableHit == "1";
            }

            string disableHurt = ModSettingsManager.getOptionValue("Enable Hurtboxes");

            if (!string.IsNullOrEmpty(disableHurt))
            {
                HitboxRevealer.showingHurtBoxes = disableHurt == "1";
            }
        }
예제 #14
0
        internal static void Init(string description)
        {
            ModSettingsManager.SetModDescription(description);

            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("icon")) {
                Texture2D texture = new Texture2D(0, 0);
                byte[]    imgData = new byte[stream.Length];

                stream.Read(imgData, 0, (int)stream.Length);

                if (ImageConversion.LoadImage(texture, imgData))
                {
                    ModSettingsManager.SetModIcon(
                        Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0, 0))
                        );
                }
            }
        }
예제 #15
0
 // called during Verse.Mod instantiation
 private void InitializeController()
 {
     try {
         ReadOwnVersion();
         Logger.Message("version {0}", LibraryVersion);
         PrepareReflection();
         ApplyHarmonyPatches();
         Settings           = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures     = new UpdateFeatureManager();
         TickDelayScheduler = new TickDelayScheduler();
         DistributedTicker  = new DistributedTickScheduler();
         DoLater            = new DoLaterScheduler();
         LogUploader        = new LogPublisher();
         LoadOrderChecker.ValidateLoadOrder();
         EnumerateModAssemblies();
         EarlyInitializeChildMods();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
예제 #16
0
 internal void Initalize()
 {
     if (Settings != null)               // double initialization safeguard by scene object, shouldn't happen
     {
         Logger.Error("Repeat initialization detected");
         return;
     }
     try {
         PrepareReflection();
         Settings          = new ModSettingsManager(OnSettingsChanged);
         UpdateFeatures    = new UpdateFeatureManager();
         CallbackScheduler = new CallbackScheduler();
         DistributedTicker = new DistributedTickScheduler();
         LogUploader       = new LogPublisher();
         reloadWatcher     = new DefReloadWatcher(OnDefReloadDetected);
         RegisterOwnSettings();
         ReadOwnVersionFile();
         LoadReloadInitialize();
     } catch (Exception e) {
         Logger.ReportException(e);
     }
 }
예제 #17
0
        private static void ActivateMods(CommandLine commandLine)
        {
            var mods     = new ModCollection();
            var modpacks = new ModpackCollection();

            ModManager.BeginUpdateTemplates();
            ModSettingsManager.LoadSettings();
            ModSettingsManager.BeginUpdate();

            Mod.LoadMods(mods, modpacks);
            ModpackTemplateList.Instance.PopulateModpackList(mods, modpacks, null);

            mods.ForEach(mod => mod.Active = false);

            string modpackName;

            if (commandLine.TryGetArgument('p', "modpack", out modpackName))
            {
                Modpack modpack = modpacks.Find(modpackName);
                if (modpack != null)
                {
                    modpack.Active = true;
                }
                else
                {
                    MessageBox.Show(
                        $"No modpack named '{modpackName}' found.\nThe game will be launched without any mods enabled.",
                        "Error loading modpack!", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
            }

            ModManager.EndUpdateTemplates(true);
            ModManager.SaveTemplates();
            ModSettingsManager.EndUpdate(true);
            ModSettingsManager.SaveBinarySettings(mods);
        }
예제 #18
0
 internal static void AddCheckboxOption(ConfigEntry <bool> configEntry)
 {
     ModSettingsManager.AddOption(new CheckBoxOption(configEntry));
 }
예제 #19
0
 internal static void AddChoiceOption <T>(ConfigEntry <T> configEntry) where T : Enum
 {
     ModSettingsManager.AddOption(new ChoiceOption(configEntry));
 }
예제 #20
0
 internal static void AddKeyBindOption(ConfigEntry <KeyboardShortcut> configEntry)
 {
     ModSettingsManager.AddOption(new KeyBindOption(configEntry));
 }