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; } }
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; })); }
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; }); } }
internal static void Initialize() { if (options != null) { return; } options = new ModOptions(); SMLHelper.V2.Handlers.OptionsPanelHandler.RegisterModOptions(options); Load(); }
/********* ** 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); }
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); }); }
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; }
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); }
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."); }; }
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 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; } } }
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); }
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);
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; })); } }
/********* ** 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; }
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("}"); }
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; })); } }
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(); }); } }
public LocationOfTownsfolk(IModHelper helper, ModOptions options) { _helper = helper; _options = options; }
private void OpenOptionsMenu() { ModOptions.CreateModOptionsMenu(); }