Beispiel #1
0
        public override void Entry(IModHelper helper)
        {
            var Settings = IModSettingsFramework.Instance;

            ModEntry.Options = ModOptions.LoadUserSettings(this);
            Settings.AddModOptions(ModEntry.Options);

            ModEntry.Helper  = helper;
            ModEntry.Monitor = base.Monitor;


            // Load Modconfig
            ModConfig = Helper.ReadConfig <ModConfig>();

            // Loads the correct settings on character load
            SaveEvents.AfterLoad          += LoadFeatures;
            SaveEvents.AfterReturnToTitle += RemoveListener;
            SaveEvents.AfterSave          += SaveEvents_AfterSave;

            var skipIntro = Options.GetOptionWithIdentifier <ModOptionToggle>("skipIntro") ?? new ModOptionToggle("skipIntro", "Skip Intro");

            Options.AddModOption(skipIntro);

            // Skip Intro
            if (skipIntro.IsOn)
            {
                MenuEvents.MenuChanged += SkipIntro.onMenuChange;
            }
        }
Beispiel #2
0
        private void AddOptionsUI(UIHelperBase helper)
        {
            ModOptions options = ModOptions.Instance;

            helper.AddCheckbox("Enable playlist*",
                               options.EnableCustomUI,
                               new OnCheckChanged((bool isChecked) =>
            {
                options.EnableCustomUI = isChecked;
            }));
            helper.AddCheckbox("Improved radio station selection (needs reload)",
                               options.EnableImprovedRadioStationList,
                               new OnCheckChanged((bool isChecked) =>
            {
                options.EnableImprovedRadioStationList = isChecked;
            }));
            helper.AddCheckbox("Open station directory button (needs reload)",
                               options.EnableOpenStationDirButton,
                               new OnCheckChanged((bool isChecked) =>
            {
                options.EnableOpenStationDirButton = isChecked;
            }));
            helper.AddCheckbox("Checkboxes to disable content",
                               options.ImprovedDisableContentUI,
                               new OnCheckChanged((bool isChecked) =>
            {
                options.ImprovedDisableContentUI = isChecked;
            }));
        }
Beispiel #3
0
        private void AddOptionsInfo(UIHelperBase helper)
        {
            helper.AddGroup("CSL Music Mod version " + CSLMusicMod.VersionName);

            {
                var subgroup = helper.AddGroup("Performance");
                subgroup.AddGroup("If you have performance problems, you can try\nto disable features marked with an asterisk (*).");
            }
            {
                var subgroup = helper.AddGroup("Channels & content");
                subgroup.AddGroup("You can add your own channels or music by installing\n" +
                                  "music packs, putting station configurations or music\n" +
                                  "files into the CSLMusicMod_Music folder or into the\n" +
                                  "folder containing vanilla radio content.");
            }
            {
                ModOptions options  = ModOptions.Instance;
                var        subgroup = helper.AddGroup("Troubleshooting");
                subgroup.AddGroup("You can find information in the CSLMusicMod wiki\n" +
                                  "and the Steam workshop entry.\n" +
                                  "Don't forget to enable debugging info if you want\n" +
                                  "to provide a log.");
                subgroup.AddCheckbox("Enable debugging info",
                                     options.EnableDebugInfo,
                                     (isChecked) =>
                {
                    options.EnableDebugInfo = isChecked;
                });
            }
        }
Beispiel #4
0
 internal static void Initialize()
 {
     if (options != null)
     {
         return;
     }
     options = new ModOptions();
     SMLHelper.V2.Handlers.OptionsPanelHandler.RegisterModOptions(options);
     Load();
 }
Beispiel #5
0
        /*********
        ** Public methods
        *********/
        /// <summary>The mod entry point, called after the mod is first loaded.</summary>
        /// <param name="helper">Provides simplified APIs for writing mods.</param>
        public override void Entry(IModHelper helper)
        {
            Settings = IModSettingsFramework.Instance;
            //var options = new ModOptions(this);
            var config  = this.Helper.ReadConfig <ModConfig>();
            var options = new ModOptions(this);

            Settings.AddModOptions(options);

            GenerateOptions(options, config);
        }
Beispiel #6
0
 private void BatchSendMessageAsync(ITextChannel channel, string text, ModOptions modlogType)
 {
     Log.Information($"Added batch message for type: {modlogType} on channel {channel.Id}");
     messageBatch.AddOrUpdate(channel, new List <string> {
         text
     }, (ITextChannel key, List <string> val) =>
     {
         val.Add(text);
         return(val);
     });
 }
Beispiel #7
0
        private void OnSaveLoaded(object sender, SaveLoadedEventArgs e)
        {
            // Only load once for split screen.
            if (Context.ScreenId != 0)
            {
                return;
            }

            _modOptions = Helper.Data.ReadJsonFile <ModOptions>($"data/{Constants.SaveFolderName}.json")
                          ?? Helper.Data.ReadJsonFile <ModOptions>($"data/{_modConfig.ApplyDefaultSettingsFromThisSave}.json")
                          ?? new ModOptions();

            _modOptionsPageHandler = new ModOptionsPageHandler(Helper, _modOptions, _modConfig.ShowOptionsTabInMenu);
        }
        internal void Init(ModInfo info, Func <string, string> imageReader, Func <string, Stream> audioReader, Iros._7th.Workshop.ProfileItem activeModInfo, List <Constraint> modConstraints, string pathToModFolderOrIro)
        {
            _iroPath     = pathToModFolderOrIro;
            _info        = info;
            _imageReader = imageReader;
            _audioReader = audioReader;
            _constraints = modConstraints;
            _values      = activeModInfo.Settings.ToDictionary(s => s.ID, s => s.Value, StringComparer.InvariantCultureIgnoreCase);

            if (info.Options.Any(c => c.Name.StartsWith("===")))
            {
                // use tree view style to display options
                TreeViewVisibility   = Visibility.Visible;
                OptionListVisibility = Visibility.Collapsed;

                List <ConfigOptionViewModel> treeOptions = new List <ConfigOptionViewModel>();

                for (int i = 0; i < info.Options.Count; i++)
                {
                    if (info.Options[i].Name.StartsWith("==="))
                    {
                        ConfigOptionViewModel parent = new ConfigOptionViewModel(info.Options[i]);
                        for (int j = i + 1; j < info.Options.Count; j++)
                        {
                            if (info.Options[j].Name.StartsWith("==="))
                            {
                                i = j - 1; // subtract 1 since the next for loop will increment by one
                                break;
                            }

                            ConfigOptionViewModel child = new ConfigOptionViewModel(info.Options[j]);
                            parent.Children.Add(child);
                        }

                        treeOptions.Add(parent);
                    }
                }

                ModOptions = treeOptions;
            }
            else
            {
                ModOptions.AddRange(info.Options.Select(o => new ConfigOptionViewModel(o)).ToList());
            }

            WindowTitle = $"{ResourceHelper.Get(StringKey.ConfigureMod)} - {Sys.Library.GetItem(activeModInfo.ModID)?.CachedDetails.Name}";

            SelectedOption = ModOptions.Count > 0 ? ModOptions[0] : null;
        }
Beispiel #9
0
        public override void AddModOptions(ModOptions modOptions)
        {
            // Only one per mod, remove old one
            foreach (ModOptions mod in this.ModOptionsList)
            {
                if (mod.modManifest.Name == modOptions.modManifest.Name)
                {
                    ModOptionsList.Remove(mod);
                }
            }

            Mod.Monitor.Log($"{modOptions.modManifest.Name} has added its mod options");

            ModOptionsList.Add(modOptions);
        }
Beispiel #10
0
        internal ModSheet(ModOptions modOptions, int x, int y, int width, int height) : base(x, y, width, height)
        {
            for (int i = 0; i < modOptions.List.Count; i++)
            {
                // check type of option
                Type t = modOptions.List[i].GetType();
                if (t.Equals(typeof(ModOptionCategoryLabel)))
                {
                    Options.Add(new ModCategoryLabelComponent(modOptions.List[i] as ModOptionCategoryLabel));
                }
                else if (t.Equals(typeof(ModOptionSelection)))
                {
                    int minWidth = 350;
                    var option   = (modOptions.List[i] as ModOptionSelection);
                    option.Choices.Labels.ForEach(choice => { minWidth = Math.Max((int)Game1.smallFont.MeasureString(choice + "     ").X, minWidth); });

                    Options.Add(new ModDropDownComponent(option, minWidth));
                }
                else if (t.Equals(typeof(ModOptionToggle)))
                {
                    Options.Add(new ModCheckBoxComponent(modOptions.List[i] as ModOptionToggle));
                }
                else if (t.Equals(typeof(ModOptionTrigger)))
                {
                    Options.Add(new ModButtonComponent(modOptions.List[i] as ModOptionTrigger));
                }
                else if (t.Equals(typeof(ModOptionStepper)))
                {
                    Options.Add(new ModPlusMinusComponent(modOptions.List[i] as ModOptionStepper));
                }
                else if (t.Equals(typeof(ModOptionRange)))
                {
                    //Options.Add(new SliderComponent("Hey", 0, 10, 1, 5, true));
                    Options.Add(new ModSliderComponent(modOptions.List[i] as ModOptionRange));
                }
                //break;


                // create proper component
                // add to Options
            }
            this.upArrow         = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen + width + Game1.tileSize / 4, this.yPositionOnScreen, 11 * Game1.pixelZoom, 12 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(421, 459, 11, 12), (float)Game1.pixelZoom, false);
            this.downArrow       = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen + width + Game1.tileSize / 4, this.yPositionOnScreen + height - 12 * Game1.pixelZoom, 11 * Game1.pixelZoom, 12 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(421, 472, 11, 12), (float)Game1.pixelZoom, false);
            this.scrollBar       = new ClickableTextureComponent(new Rectangle(this.upArrow.bounds.X + Game1.pixelZoom * 3, this.upArrow.bounds.Y + this.upArrow.bounds.Height + Game1.pixelZoom, 6 * Game1.pixelZoom, 10 * Game1.pixelZoom), Game1.mouseCursors, new Rectangle(435, 463, 6, 10), (float)Game1.pixelZoom, false);
            this.scrollBarRunner = new Rectangle(this.scrollBar.bounds.X, this.upArrow.bounds.Y + this.upArrow.bounds.Height + Game1.pixelZoom, this.scrollBar.bounds.Width, this.downArrow.bounds.Y - this.upArrow.bounds.Y - this.upArrow.bounds.Height - Game1.pixelZoom * 3);
            AddListeners();
        }
        private void create_menu()
        {
            options = ModOptions.LoadCharacterSettings(this, Constants.SaveFolderName);
            IModSettingsFramework.Instance.AddModOptions(options);

            var list = new ModSelectionOptionChoices
            {
                { "default", this.Helper.Translation.Get("default") },
                { "v02", this.Helper.Translation.Get("v02") },
                { "v02a", this.Helper.Translation.Get("v02a") },
                { "v02b", this.Helper.Translation.Get("v02b") },
                { "v02c", this.Helper.Translation.Get("v02c") }
            };

            this.DropDown = options.GetOptionWithIdentifier <ModOptionSelection>("bundle") ?? new ModOptionSelection("bundle", "Bundels", list);
            options.AddModOption(this.DropDown);

            this.DropDown.hoverTextDictionary = new Dictionary <string, string>
            {
                { "default", this.Helper.Translation.Get("default.desc") },
                { "v02", this.Helper.Translation.Get("v02.desc") },
                { "v02a", this.Helper.Translation.Get("v02a.desc") },
                { "v02b", this.Helper.Translation.Get("v02b.desc") },
                { "v02c", this.Helper.Translation.Get("v02c.desc") }
            };

            saveButton = new ModOptionTrigger("okButton", this.Helper.Translation.Get("okButton"), OptionActionType.OK);
            options.AddModOption(saveButton);

            saveButton.ActionTriggered += id =>
            {
                this.Monitor.Log("[CCBO] Changing Bundle ...");

                options.SaveCharacterSettings(Constants.SaveFolderName);

                this.Monitor.Log(this.Helper.Translation.Locale);

                InvalidateCache(this.Helper);
                Game1.addHUDMessage(new HUDMessage("Changed Community Center Bundle to: " + this.DropDown.Selection, 3)
                {
                    noIcon = true, timeLeft = HUDMessage.defaultTime
                });
                this.Monitor.Log("[CCBO] Bundle changed successfully. If smth. is missing, you must restart your game.");
            };
        }
Beispiel #12
0
        private void AddBehaviours(CampaignGameStarter gameInitializer)
        {
            _modOptions          = new ModOptions();
            _revolutionBehaviour = new Revolution();
            _mobChecker          = new MobChecker();
            _debugBehaviour      = new DebugCampaignBehaviour();
            _common = new Common();

            gameInitializer.AddBehavior(_revolutionBehaviour);
            gameInitializer.AddBehavior(_modOptions);
            gameInitializer.AddBehavior(_mobChecker);
            gameInitializer.AddBehavior(_debugBehaviour);

            _loyaltyModel = new LoyaltyModel();
            _loyaltyModel.RevolutionBehaviour = _revolutionBehaviour;
            gameInitializer.AddModel(_loyaltyModel);

            gameInitializer.LoadGameTexts($"{BasePath.Name}Modules/Revolutions/ModuleData/global_strings.xml");
        }
 public override void OnSettingsUI(UIHelperBase helper)
 {
     helper.AddCheckbox(
         "Road Zone Modifier",
         "Press SHIFT (or SHIFT+CTRL) on the Upgrade Road tool to use",
         s_activeOptions.IsFlagSet(ModOptions.RoadZoneModifier), 
         isChecked =>
         {
             if (isChecked)
             {
                 s_activeOptions = s_activeOptions | ModOptions.RoadZoneModifier;
             }
             else
             {
                 s_activeOptions = s_activeOptions & ~ModOptions.RoadZoneModifier;
             }
             FireSaveSettingsNeeded();
         },
         true);
 }
 public override void OnSettingsUI(UIHelperBase helper)
 {
     helper.AddCheckbox(
         "Road Zone Modifier",
         "Press SHIFT (or SHIFT+CTRL) on the Upgrade Road tool to use",
         s_activeOptions.IsFlagSet(ModOptions.RoadZoneModifier),
         isChecked =>
     {
         if (isChecked)
         {
             s_activeOptions = s_activeOptions | ModOptions.RoadZoneModifier;
         }
         else
         {
             s_activeOptions = s_activeOptions & ~ModOptions.RoadZoneModifier;
         }
         FireSaveSettingsNeeded();
     },
         true);
 }
        public override void OnLoadSettings(XmlElement moduleElement)
        {
            foreach (var option in Enum.GetValues(typeof(ModOptions))
                     .OfType <ModOptions>()
                     .Where(o => o != 0))
            {
                bool?isEnabled = null;

                if (moduleElement != null)
                {
                    var nodeList = moduleElement.GetElementsByTagName(option.ToString().ToUpper());
                    if (nodeList.Count > 0)
                    {
                        var node      = (XmlElement)nodeList[0];
                        var nodeValue = true;

                        if (bool.TryParse(node.InnerText, out nodeValue))
                        {
                            isEnabled = nodeValue;
                        }
                    }
                }

                if (isEnabled == null)
                {
                    isEnabled = true;
                }

                if (isEnabled.Value)
                {
                    s_activeOptions = s_activeOptions | option;
                }
                else
                {
                    s_activeOptions = s_activeOptions & ~option;
                }
            }
        }
        public override void OnLoadSettings(XmlElement moduleElement)
        {
            foreach (var option in Enum.GetValues(typeof(ModOptions))
                                       .OfType<ModOptions>()
                                       .Where(o => o != 0))
            {
                bool? isEnabled = null;

                if (moduleElement != null)
                {
                    var nodeList = moduleElement.GetElementsByTagName(option.ToString().ToUpper());
                    if (nodeList.Count > 0)
                    {
                        var node = (XmlElement)nodeList[0];
                        var nodeValue = true;

                        if (bool.TryParse(node.InnerText, out nodeValue))
                        {
                            isEnabled = nodeValue;
                        }
                    }
                }

                if (isEnabled == null)
                {
                    isEnabled = true;
                }

                if (isEnabled.Value)
                {
                    s_activeOptions = s_activeOptions | option;
                }
                else
                {
                    s_activeOptions = s_activeOptions & ~option;
                }
            }
        }
Beispiel #17
0
 public bool HasFlag(ModOptions flag)
 {
     return((this.Mod_LogOptions & flag) == flag);
 }
 /// <summary>
 /// Registers your mod options to the in-game menu.
 /// </summary>
 /// <param name="options">The mod options. Create a new child class inheriting from this one
 /// and add your options to it.</param>
 /// <seealso cref="ModOptions"/>
 void IOptionsPanelHandler.RegisterModOptions(ModOptions options)
 {
     OptionsPanelPatcher.modOptions.Add(options.Name, options);
 }
 /// <summary>
 /// Registers your mod options to the in-game menu.
 /// </summary>
 /// <param name="options">The mod options. Create a new child class inheriting from this one
 /// and add your options to it.</param>
 /// <seealso cref="ModOptions"/>
 public static void RegisterModOptions(ModOptions options)
 {
     Main.RegisterModOptions(options);
 }
Beispiel #20
0
        private void GenerateOptions(ModOptions options, ModConfig config)
        {
            var enableDrop = new ModOptionToggle("toggle", "Checkbox", config.enableDropdown);

            options.AddModOption(enableDrop);

            enableDrop.ValueChanged += DisableDrop_ValueChanged;

            var choices = new ModSelectionOptionChoices();

            choices.Add("toggle", "Toggle");
            choices.Add("on", "Always On");
            choices.Add("off", "Always Off");

            dropdown = new ModOptionSelection("drop", "Dropdown", choices, config.dropdownChoice, config.enableDropdown)
            {
                hoverTextDictionary = new Dictionary <string, string>
                {
                    { "on", "Hover text for Always On" },
                    { "off", "Hover text for Always Off" }
                }
            };

            options.AddModOption(dropdown);

            dropdown.ValueChanged += Dropdown_ValueChanged;

            var checkbox2 = new ModOptionToggle("toggle2", "Checkbox2", config.checkbox2);

            options.AddModOption(checkbox2);

            options.AddModOption(new ModOptionToggle("toggle3", "Always On", false));

            var slider = new ModOptionRange("range", "Slider", 10, 25, 1, config.rangeValue, true);

            var stepper = new ModOptionStepper("stepper", "Plus/Minus Controls", (decimal)5.0, (decimal)105.0, (decimal)1.5, config.stepperValue, DisplayType.PERCENT);

            options.AddModOption(slider);
            options.AddModOption(stepper);

            options.AddModOption(new ModOptionToggle("stepperCheck", "Show Stepper Value", false));

            options.AddModOption(new ModOptionToggle("toggle5", "Checkbox5"));
            options.AddModOption(new ModOptionToggle("toggle6", "Checkbox6"));
            options.AddModOption(new ModOptionToggle("toggle7", "Checkbox7"));
            options.AddModOption(new ModOptionToggle("toggle8", "Checkbox8"));

            var saveButton = new ModOptionTrigger("okButton", "OK Button", OptionActionType.OK);

            options.AddModOption(saveButton);

            saveButton.ActionTriggered += (id) => {
                config.dropdownChoice = dropdown.Selection;
                config.enableDropdown = enableDrop.IsOn;
                this.Helper.WriteConfig <ModConfig>(config);
            };

            GraphicsEvents.OnPostRenderEvent += (sender, e) => {
                if (dropdown.Selection == "off")
                {
                    checkbox2.IsOn = false;
                }
                if (dropdown.Selection == "on" || (options.GetOptionWithIdentifier("toggle3") as ModOptionToggle).IsOn)
                {
                    Game1.spriteBatch.DrawString(Game1.dialogueFont, dropdown.Choices.LabelOf("on"), new Vector2(Game1.getMouseX(), Game1.getMouseY()), Color.Black);
                }
                if (toggledOn)
                {
                    Game1.spriteBatch.DrawString(Game1.dialogueFont, dropdown.Choices.LabelOf("toggle"), new Vector2(Game1.getMouseX(), Game1.getMouseY() + 12 * Game1.pixelZoom), Color.Black);
                }

                if ((options.GetOptionWithIdentifier("stepperCheck") as ModOptionToggle).IsOn)
                {
                    Game1.spriteBatch.DrawString(Game1.dialogueFont, stepper.Value.ToString(), new Vector2(Game1.getMouseX(), Game1.getMouseY() + 12 * Game1.pixelZoom), Color.Black);
                }
            };
        }
 public abstract void AddModOptions(ModOptions modOptions);
Beispiel #22
0
        private void AddOptionsContent(UIHelperBase helper)
        {
            ModOptions options = ModOptions.Instance;

            {
                var subgroup = helper.AddGroup("Additional features");

                subgroup.AddCheckbox("Content can be disabled*",
                                     options.EnableDisabledContent,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.EnableDisabledContent = isChecked;
                }));
                subgroup.AddCheckbox("Context-sensitive content*",
                                     options.EnableContextSensitivity,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.EnableContextSensitivity = isChecked;
                }));
                subgroup.AddCheckbox("Smooth transitions* (needs reload)",
                                     options.EnableSmoothTransitions,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.EnableSmoothTransitions = isChecked;
                }));
                //subgroup.AddSlider("Context-sensitivity update interval (Needs reload)",
                //           1,
                //           60,
                //           1,
                //           options.ContentWatcherInterval,
                //           new OnValueChanged((float v) =>
                //{
                //    options.ContentWatcherInterval = v;
                //}));
                subgroup.AddCheckbox("Extend vanilla stations with custom content (Needs reload)",
                                     options.EnableAddingContentToVanillaStations,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.EnableAddingContentToVanillaStations = isChecked;
                }));
                subgroup.AddButton("Reset disabled entries", new OnButtonClicked(() =>
                {
                    options.DisabledContent.Clear();
                    options.SaveSettings();
                }));
            }
            {
                var subgroup = helper.AddGroup("Radio station content (Needs reload)");
                subgroup.AddCheckbox("Enable music",
                                     options.AllowContentMusic,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AllowContentMusic = isChecked;
                }));
                subgroup.AddCheckbox("Enable blurbs",
                                     options.AllowContentBlurb,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AllowContentBlurb = isChecked;
                }));
                subgroup.AddCheckbox("Enable talks",
                                     options.AllowContentTalk,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AllowContentTalk = isChecked;
                }));
                subgroup.AddCheckbox("Enable commercials",
                                     options.AllowContentCommercial,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AllowContentCommercial = isChecked;
                }));
                subgroup.AddCheckbox("Enable broadcasts",
                                     options.AllowContentBroadcast,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AllowContentBroadcast = isChecked;
                }));
            }
        }
Beispiel #23
0
        /*********
        ** Public methods
        *********/
        /// <summary>The mod entry point, called after the mod is first loaded.</summary>
        /// <param name="helper">Provides simplified APIs for writing mods.</param>
        public override void Entry(IModHelper helper)
        {
            Settings = IModSettingsFramework.Instance;
            var options = new ModOptions(this);

            Settings.AddModOptions(options);

            var testbox = options.GetOptionWithIdentifier <ModOptionToggle>("test") ?? new ModOptionToggle("test", "Test");

            options.AddModOption(testbox);


            var list = new ModSelectionOptionChoices();

            list.Add("available", "Option Available");
            list.Add("second", "Option 2");

            var disabledDrop = options.GetOptionWithIdentifier <ModOptionSelection>("disabled") ?? new ModOptionSelection("disabled", "Disabled Dropdown", list, 0, false);

            options.AddModOption(disabledDrop);

            var stepper = options.GetOptionWithIdentifier <ModOptionStepper>("stepper") ?? new ModOptionStepper("stepper", "Plus/Minus Controls", (decimal)5.0, (decimal)105.0, (decimal)1.5, 26, DisplayType.PERCENT);

            options.AddModOption(stepper);

            var label = options.GetOptionWithIdentifier <ModOptionCategoryLabel>("catlabel") ?? new ModOptionCategoryLabel("catlabel", "Category Label");

            options.AddModOption(label);

            var button = options.GetOptionWithIdentifier <ModOptionTrigger>("setButton") ?? new ModOptionTrigger("setButton", "Click Me!", OptionActionType.SET);

            button.ActionTriggered += (identifier) => {
                options.GetOptionWithIdentifier("disabled").enabled = !options.GetOptionWithIdentifier("disabled").enabled;
            };
            options.AddModOption(button);

            var clearButton = options.GetOptionWithIdentifier <ModOptionTrigger>("clearButton") ?? new ModOptionTrigger("clearButton", "Clear Button", OptionActionType.CLEAR);

            clearButton.type             = OptionActionType.CLEAR;
            clearButton.ActionTriggered += (identifier) => {
                switch (clearButton.type)
                {
                case OptionActionType.CLEAR:
                    clearButton.LabelText = "Are you sure?";
                    clearButton.type      = OptionActionType.OK;
                    break;

                case OptionActionType.OK:
                    clearButton.LabelText = "Cleared";
                    clearButton.type      = OptionActionType.DONE;
                    break;

                case OptionActionType.DONE:
                    clearButton.LabelText = "Clear Button";
                    clearButton.type      = OptionActionType.CLEAR;
                    break;

                default:
                    clearButton.LabelText = "Clear Button";
                    clearButton.type      = OptionActionType.CLEAR;
                    break;
                }
            };

            options.AddModOption(clearButton);

            options.AddModOption(new ModOptionTrigger("doneButton", "Done Button", OptionActionType.DONE));
            options.AddModOption(new ModOptionTrigger("giftButton", "Gift Button", OptionActionType.GIFT));

            var saveButton = new ModOptionTrigger("okButton", "OK Button", OptionActionType.OK);

            options.AddModOption(saveButton);

            options.AddModOption(new ModOptionSelection("empty", "Empty Dropdown", new ModSelectionOptionChoices()));


            saveButton.ActionTriggered += (id) => {
                // gather all options from ModOptions and update ModConfig
            };

            SaveEvents.AfterLoad += SaveEvents_AfterLoad;
        }
Beispiel #24
0
        void GeneratePlayerSection(List <UserBattleStatus> playersExport,
                                   User localUser,
                                   SpringBattleStartSetup startSetup,
                                   List <UserBattleStatus> users,
                                   StringBuilder script,
                                   List <StartPos> positions,
                                   List <BotBattleStatus> bots)
        {
            if (mod != null && mod.IsMission) // mission stuff
            {
                var aiNum         = 0;
                var declaredTeams = new HashSet <int>();
                var orderedUsers  = users.OrderBy(x => x.TeamNumber).ToList();
                for (var i = 0; i < orderedUsers.Count; i++)
                {
                    var u = orderedUsers[i];
                    ScriptAddUser(script, i, playersExport, startSetup, u.TeamNumber, u);
                    if (!u.IsSpectator && !declaredTeams.Contains(u.TeamNumber))
                    {
                        ScriptAddTeam(script, u.TeamNumber, positions, i, u, mod, Details);
                        declaredTeams.Add(u.TeamNumber);
                    }
                }

                for (var i = 0; i < orderedUsers.Count; i++)
                {
                    var u = orderedUsers[i];
                    foreach (var b in bots.Where(x => x.owner == u.Name))
                    {
                        ScriptAddBot(script, aiNum++, b.TeamNumber, i, b);
                        if (!declaredTeams.Contains(b.TeamNumber))
                        {
                            ScriptAddTeam(script, b.TeamNumber, positions, i, b, mod, Details);
                            declaredTeams.Add(b.TeamNumber);
                        }
                    }
                }
            }
            else
            {
                // ordinary battle stuff

                var userNum = 0;
                var teamNum = 0;
                var aiNum   = 0;
                //players is excluding self (so "springie doesn't appear as spec ingame") & excluding bots (bots is added later for each owner)
                foreach (var u in users.Where(u => !bots.Any(b => b.Name == u.Name)).OrderBy(x => x.TeamNumber).Where(x => x.Name != localUser.Name))
                {
                    ScriptAddUser(script, userNum, playersExport, startSetup, teamNum, u);

                    if (!u.IsSpectator)
                    {
                        ScriptAddTeam(script, teamNum, positions, userNum, u, mod, Details);
                        teamNum++;
                    }

                    foreach (var b in bots.Where(x => x.owner == u.Name))
                    {
                        ScriptAddBot(script, aiNum, teamNum, userNum, b);
                        aiNum++;
                        ScriptAddTeam(script, teamNum, positions, userNum, b, mod, Details);
                        teamNum++;
                    }
                    userNum++;
                }
            }

            // ALLIANCES
            script.AppendLine();
            foreach (var allyNumber in
                     users.Where(x => !x.IsSpectator).Select(x => x.AllyNumber).Union(bots.Select(x => x.AllyNumber)).Union(Rectangles.Keys).Distinct())
            {
                // get allies from each player, bot and rectangles (for koth)
                script.AppendFormat("[ALLYTEAM{0}]\n", allyNumber);
                script.AppendLine("{");
                script.AppendFormat("     NumAllies={0};\n", 0);
                double     left = 0, top = 0, right = 1, bottom = 1;
                BattleRect rect;
                if (Rectangles.TryGetValue(allyNumber, out rect))
                {
                    rect.ToFractions(out left, out top, out right, out bottom);
                }
                script.AppendFormat(CultureInfo.InvariantCulture, "     StartRectLeft={0};\n", left);
                script.AppendFormat(CultureInfo.InvariantCulture, "     StartRectTop={0};\n", top);
                script.AppendFormat(CultureInfo.InvariantCulture, "     StartRectRight={0};\n", right);
                script.AppendFormat(CultureInfo.InvariantCulture, "     StartRectBottom={0};\n", bottom);
                script.AppendLine("}");
            }

            script.AppendLine();
            script.AppendFormat("  NumRestrictions={0};\n", DisabledUnits.Count);
            script.AppendLine();

            if (!mod.IsMission)
            {
                script.AppendLine("  [RESTRICT]");
                script.AppendLine("  {");
                for (var i = 0; i < DisabledUnits.Count; ++i)
                {
                    script.AppendFormat("    Unit{0}={1};\n", i, DisabledUnits[i]);
                    script.AppendFormat("    Limit{0}=0;\n", i);
                }
                script.AppendLine("  }");

                script.AppendLine("  [MODOPTIONS]");
                script.AppendLine("  {");

                var options = new Dictionary <string, string>();

                // put standard modoptions to options dictionary
                foreach (var o in mod.Options.Where(x => x.Type != OptionType.Section))
                {
                    var v = o.Default;
                    if (ModOptions.ContainsKey(o.Key))
                    {
                        v = ModOptions[o.Key];
                    }
                    options[o.Key] = v;
                }

                // replace/add custom modoptions from startsetup (if they exist)
                if (startSetup != null && startSetup.ModOptions != null)
                {
                    foreach (var entry in startSetup.ModOptions)
                    {
                        options[entry.Key] = entry.Value;
                    }
                }

                // write final options to script
                foreach (var kvp in options)
                {
                    script.AppendFormat("    {0}={1};\n", kvp.Key, kvp.Value);
                }

                script.AppendLine("  }");
            }

            script.AppendLine("}");
        }
Beispiel #25
0
        private void AddOptionsChannels(UIHelperBase helper)
        {
            ModOptions options = ModOptions.Instance;

            {
                List <string> vanillastations = new List <string>();

                foreach (RadioContentInfo.ContentType type in Enum.GetValues(typeof(RadioContentInfo.ContentType)))
                {
                    // They are no real channels
                    if (type == RadioContentInfo.ContentType.Broadcast)
                    {
                        continue;
                    }

                    String path = Path.Combine(Path.Combine(DataLocation.gameContentPath, "Radio"), type.ToString());

                    foreach (String d in Directory.GetDirectories(path))
                    {
                        if (Directory.GetFiles(d).Length != 0)
                        {
                            String station = Path.GetFileNameWithoutExtension(d);

                            if (!vanillastations.Contains(station))
                            {
                                vanillastations.Add(station);
                            }
                        }
                    }
                }

                vanillastations.Sort();
                var subgroup = helper.AddGroup("Enabled vanilla channels");

                foreach (String station in vanillastations)
                {
                    subgroup.AddCheckbox(station,
                                         !options.DisabledRadioStations.Contains(station),
                                         new OnCheckChanged((bool isChecked) =>
                    {
                        if (isChecked)
                        {
                            options.DisabledRadioStations.Remove(station);
                        }
                        else
                        {
                            options.DisabledRadioStations.Add(station);
                        }

                        options.SaveSettings();
                    }));
                }
            }
            {
                var subgroup = helper.AddGroup("Music packs (Needs reload)");
                subgroup.AddCheckbox("Use music from music packs",
                                     options.EnableMusicPacks,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.EnableMusicPacks = isChecked;
                }));
                subgroup.AddCheckbox("Create channels from unused music files",
                                     options.CreateChannelsFromLegacyPacks,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.CreateChannelsFromLegacyPacks = isChecked;
                }));
            }
            {
                var subgroup = helper.AddGroup("Channel with all content (Needs reload)");

                subgroup.AddCheckbox("Create CSLMusic Mix channel",
                                     options.CreateMixChannels,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.CreateMixChannels = isChecked;
                }));
                subgroup.AddCheckbox("Include vanilla songs",
                                     options.AddVanillaSongsToMusicMix,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.AddVanillaSongsToMusicMix = isChecked;
                }));
                subgroup.AddCheckbox("Include music",
                                     options.MixContentMusic,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.MixContentMusic = isChecked;
                }));
                subgroup.AddCheckbox("Include blurbs",
                                     options.MixContentBlurb,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.MixContentBlurb = isChecked;
                }));
                subgroup.AddCheckbox("Include talks",
                                     options.MixContentTalk,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.MixContentTalk = isChecked;
                }));
                subgroup.AddCheckbox("Include commercials",
                                     options.MixContentCommercial,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.MixContentCommercial = isChecked;
                }));
                subgroup.AddCheckbox("Include broadcasts",
                                     options.MixContentBroadcast,
                                     new OnCheckChanged((bool isChecked) =>
                {
                    options.MixContentBroadcast = isChecked;
                }));
            }
        }
Beispiel #26
0
        private void AddOptionsShortcuts(UIHelperBase helper)
        {
            ModOptions options = ModOptions.Instance;

            helper.AddCheckbox("Enable* (Needs reload)",
                               options.EnableShortcuts,
                               new OnCheckChanged((bool isChecked) =>
            {
                options.EnableShortcuts = isChecked;
            }));

            {
                var gr = helper.AddGroup("Open playlist and settings");
                gr.AddDropdown("Key", KeyStringList.ToArray(), KeyStringList.IndexOf(ModOptions.Instance.ShortcutOpenRadioPanel.Key.ToString()), (selection) =>
                {
                    ModOptions.Instance.ShortcutOpenRadioPanel.Key = KeyList[selection];
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Ctrl", ModOptions.Instance.ShortcutOpenRadioPanel.ModifierControl, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutOpenRadioPanel.ModifierControl = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Shift", ModOptions.Instance.ShortcutOpenRadioPanel.ModifierShift, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutOpenRadioPanel.ModifierShift = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Alt", ModOptions.Instance.ShortcutOpenRadioPanel.ModifierAlt, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutOpenRadioPanel.ModifierAlt = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
            }
            {
                var gr = helper.AddGroup("Next track");
                gr.AddDropdown("Key", KeyStringList.ToArray(), KeyStringList.IndexOf(ModOptions.Instance.ShortcutNextTrack.Key.ToString()), (selection) =>
                {
                    ModOptions.Instance.ShortcutNextTrack.Key = KeyList[selection];
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Ctrl", ModOptions.Instance.ShortcutNextTrack.ModifierControl, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextTrack.ModifierControl = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Shift", ModOptions.Instance.ShortcutNextTrack.ModifierShift, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextTrack.ModifierShift = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Alt", ModOptions.Instance.ShortcutNextTrack.ModifierAlt, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextTrack.ModifierAlt = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
            }
            {
                var gr = helper.AddGroup("Next station");
                gr.AddDropdown("Key", KeyStringList.ToArray(), KeyStringList.IndexOf(ModOptions.Instance.ShortcutNextStation.Key.ToString()), (selection) =>
                {
                    ModOptions.Instance.ShortcutNextStation.Key = KeyList[selection];
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Ctrl", ModOptions.Instance.ShortcutNextStation.ModifierControl, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextStation.ModifierControl = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Shift", ModOptions.Instance.ShortcutNextStation.ModifierShift, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextStation.ModifierShift = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
                gr.AddCheckbox("Alt", ModOptions.Instance.ShortcutNextStation.ModifierAlt, (bool isChecked) =>
                {
                    ModOptions.Instance.ShortcutNextStation.ModifierAlt = isChecked;
                    ModOptions.Instance.SaveSettings();
                });
            }
        }
Beispiel #27
0
 public LocationOfTownsfolk(IModHelper helper, ModOptions options)
 {
     _helper  = helper;
     _options = options;
 }
Beispiel #28
0
 private void OpenOptionsMenu()
 {
     ModOptions.CreateModOptionsMenu();
 }