/// <summary> /// This is the code used to create a submenu in Beat Saber's Gameplay Settings panel. /// </summary> public static void CreateGameplayOptionsUI() { string pluginName = "$safeprojectname$"; string parentMenu = "MainMenu"; string subMenuName = "ExamplePluginMenu"; // Name of SubMenu, pass this to the settings you want to have in this menu. //Example submenu option var pluginSubmenu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersLeft, pluginName, parentMenu, subMenuName, "You can keep all your plugin's gameplay options nested within this one button"); //Example Toggle Option within a submenu var exampleToggle = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersLeft, "Example Toggle", subMenuName, "Put a toggle for a setting you want easily accessible in game here."); exampleToggle.GetValue = /* Fetch the initial value for the option here*/ false; exampleToggle.OnToggle += (value) => { /* You can execute whatever you want to occur when the value is toggled here, usually that would include updating wherever the value is pulled from */ Logger.log.Debug($"Toggle is {(value ? "On" : "Off")}"); }; exampleToggle.AddConflict("Conflicting Option Name"); //You can add conflicts with other gameplay options settings here, preventing both from being active at the same time, including that of other mods // Creates a list setting you can scroll through with backwards and forwards buttons. float[] floatValues = { 0f, 1f, 2f, 3f, 4f }; string[] textValues = { "ex0", "ex1", "ex2", "ex3", "ex4" }; var exampleList = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.ModifiersLeft, "Example List", subMenuName, "List example mouse over description"); exampleList.GetValue += delegate { return(Plugin.ExampleGameplayListSetting); }; for (int i = 0; i < 5; i++) { exampleList.AddOption(i, textValues[i]); } exampleList.OnChange += (value) => { // Execute code based on what value is selected. Plugin.ExampleGameplayListSetting = value; Logger.log.Debug($"Example GameplaySetting List value changed to {textValues[(int)value]}"); }; }
private static void TechnicolourSubMenuCreated(string name) { if (name == "CTT") { //We have technicolour List <Tuple <float, string> > technicolourOptions = new List <Tuple <float, string> > { { 0f, "OFF" }, { 1f, "WARM/COLD" }, { 2f, "EITHER" }, { 3f, "TRUE RANDOM" } }; MultiSelectOption techniParticles = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Particles", "CTT", "Technicolour style of the particles."); for (int i = 0; i < technicolourOptions.Count; i++) { techniParticles.AddOption(i, technicolourOptions[i].Item2); } techniParticles.GetValue += delegate { return((int)ChromaSparksConfig.TechnicolourSparksStyle); }; techniParticles.OnChange += delegate(float value) { ColourManager.TechnicolourStyle style = ColourManager.GetTechnicolourStyleFromFloat(value); ChromaSparksConfig.TechnicolourSparksStyle = style; }; } }
public static void InitializeGameplayMenu() { blindingOptionsEnabled = false;//ModPrefs.GetBool("SpinSaber", "BlindMe", false); Console.WriteLine("[SpinSaber] Initializing GameplayMenu Options..."); GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsLeft, "SpinSaber", "MainMenu", "SSM", "Select SpinSaber settings"); /*ToggleOption spinSaberEnabledToggle = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsLeft, "Spin Enabled", "SSM", "Enable/Disable SpinSaber."); * spinSaberEnabledToggle.GetValue = Plugin.spinSaberEnabled; * spinSaberEnabledToggle.OnToggle += SpinSaberEnabledToggled;*/ GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsLeft, "Profile", "SSM", "SSMPROFILE", "Select SpinSaber profile"); MultiSelectOption spinSaberConfigSelect = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsLeft, "SpinConfig", "SSMPROFILE", "Select your preferred spin config."); spinSaberConfigSelect.AddOption(-1, "Disabled"); if (Plugin.loadedConfigs.Count <= 0) { //spinSaberConfigSelect.AddOption(0, "No Configs Found"); } else { for (int i = 0; i < Plugin.loadedConfigs.Count; i++) { spinSaberConfigSelect.AddOption(i, Plugin.loadedConfigs[i].name); } } spinSaberConfigSelect.OnChange += SpinSaberConfigSelected; spinSaberConfigSelect.GetValue = () => lastOptionSelected; GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsLeft, "Time", "SSM", "SSMTIME", "Select Time Scale"); MultiSelectOption spinSaberTimeMult = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsLeft, "Time Rate", "SSMTIME", "Multiply the speed of your selected config."); for (int i = 1; i <= 9; i++) { spinSaberTimeMult.AddOption(i / 10f, "0." + i + "x"); } spinSaberTimeMult.AddOption(1, "Default"); for (int i = 1; i <= 9; i++) { spinSaberTimeMult.AddOption(1 + (i / 10f), "1." + i + "x"); } spinSaberTimeMult.OnChange += SpinSaberTimeSelected; spinSaberTimeMult.GetValue = () => timeMult; if (blindingOptionsEnabled) { MultiSelectOption blindTimeMult = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsLeft, "Blind Time", "SSM", "Duration of being blinded."); blindTimeMult.AddOption(-1f, "Disabled"); for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 9; j++) { if (i == 0 && j == 0) { continue; } blindTimeMult.AddOption(i + (j / 10f), i + "." + j + "s"); } } blindTimeMult.AddOption(10, "10.0s"); blindTimeMult.OnChange += BlindTimeSelected; blindTimeMult.GetValue = () => blindTime; MultiSelectOption visibleTimeMult = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsLeft, "Visible Time", "SSM", "Duration of visibility."); visibleTimeMult.AddOption(-1f, "Disabled"); for (int i = 0; i <= 9; i++) { for (int j = 0; j <= 9; j++) { if (i == 0 && j == 0) { continue; } visibleTimeMult.AddOption(i + (j / 10f), i + "." + j + "s"); } } visibleTimeMult.AddOption(10, "10.0s"); visibleTimeMult.OnChange += VisibleTimeSelected; visibleTimeMult.GetValue = () => visibleTime; } }
public static void CreateUI() { GetIcons(); if (BS_Utils.Gameplay.GetUserInfo.GetUserID() == 76561198047644920) { CustomUI.MenuButton.MenuButtonUI.AddButton("AYAYA", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("papatutuwawa", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("chikin dayo", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("cececlown", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("desu", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("Smilew", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("hamnomanim", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("catgirls", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("mousegirl", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("miku", null, _GMPIcon); CustomUI.MenuButton.MenuButtonUI.AddButton("ohisee", null, _GMPIcon); } string disableScoreString = "<size=120%><color=#ff0000ff><b><u>Disables Score Submission</u> </b></color></size> \r\n<size=100%> "; //Rumble Option var gmpTweaksMenu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "GMP Tweaks", "MainMenu", "gmptweaksMenu", "GameplayModifiersPlus Tweaks", _GMPIcon); var rumbleOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Controller Rumble", "MainMenu", "Toggle Controller Vibration in songs", _GMPIcon); rumbleOption.GetValue = ModPrefs.GetInt("GameplayModifiersPlus", "GameRumbleSetting", -1, false) != 1 ? false : true;; rumbleOption.OnToggle += (value) => { ModPrefs.SetInt("GameplayModifiersPlus", "GameRumbleSetting", value == true ? 1 : 0); Plugin.Log("Changed value"); }; var disableFireWorksOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Disable Fireworks", "gmptweaksMenu", "Disable fireworks after a song", _GMPIcon); disableFireWorksOption.GetValue = ModPrefs.GetBool("GameplayModifiersPlus", "DisableFireworks", false, false); disableFireWorksOption.OnToggle += (value) => { disableFireworks = value; ModPrefs.SetBool("GameplayModifiersPlus", "DisableFireworks", value); Plugin.Log("Changed value"); }; var disableRippleOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Disable Note Ripple", "gmptweaksMenu", "Disable ripple effect after cutting a note", _GMPIcon); disableRippleOption.GetValue = ModPrefs.GetBool("GameplayModifiersPlus", "DisableRipple", false, false); disableRippleOption.OnToggle += (value) => { disableRipple = value; ModPrefs.SetBool("GameplayModifiersPlus", "DisableRipple", value); Plugin.Log("Changed value"); }; var gmp1Menu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "GamePlayModifiersPlus", "MainMenu", "GMP1", "GameplayModifiersPlus Options", _GMPIcon); var disableScoresOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsLeft, "Disable Score Submission", "MainMenu", "<size=120%><color=#ff0000ff><b><u>Disables Score Submission</u></b></color></size>", _GMPIcon); disableScoresOption.GetValue = disableSubmission; disableScoresOption.OnToggle += (value) => { disableSubmission = value; if (value) { BS_Utils.Gameplay.ScoreSubmission.ProlongedDisableSubmission("Gameplay Modifiers Plus"); } else { BS_Utils.Gameplay.ScoreSubmission.RemoveProlongedDisable("Gameplay Modifiers Plus"); } }; //GMP1 Options // var backOption = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "Back", "GMP1", "MainMenu", "Return from GamePlayModifiersOptions", _BackButton); if (Plugin.twitchPluginInstalled) { var twitchStuffOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Chat Integration", "GMP1", disableScoreString + "Allows Chat to mess with your game if connected. !gm help", _TwitchIcon); twitchStuffOption.GetValue = chatIntegration; twitchStuffOption.OnToggle += (value) => { chatIntegration = value; Plugin.Log("Changed value"); }; var chatDeltaOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Chat Delta", "GMP1", "Display Change in Performance Points / Rank in Twitch Chat if Connected", _ChatDeltaIcon); chatDeltaOption.GetValue = ModPrefs.GetBool("GameplayModifiersPlus", "chatDelta", false, true); chatDeltaOption.OnToggle += (chatDelta) => { ModPrefs.SetBool("GameplayModifiersPlus", "chatDelta", chatDelta); Plugin.Log("Changed value"); }; } //GMP2 Options var gmp2Menu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "Additional Modifiers", "GMP1", "GMP2", "Additional Modifiers", _GMPIcon); //Multiplayer Option toggle var multiOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Allow in Multiplayer", "GMP1", "Allow GMP activation in multiplayer room if players equip similar version of the plugin, refer to the readme for more information. Your Version: " + Plugin.pluginVersion, _GMPIcon); multiOption.GetValue = ModPrefs.GetBool("GameplayModifiersPlus", "allowMulti", false, true); multiOption.OnToggle += (value) => { allowMulti = value; ModPrefs.SetBool("GameplayModifiersPlus", "allowMulti", value); Plugin.Log("Changed value"); }; var rainbowOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Rainbow", "GMP2", "Rainbow Notes", _RainbowIcon); rainbowOption.GetValue = rainbow; rainbowOption.OnToggle += (value) => { rainbow = value; Plugin.Log("Changed value"); }; rainbowOption.AddConflict("Chat Integration"); var tunnelOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Tunnel", "GMP2", "Play the song in a tunnel", _GMPIcon); tunnelOption.GetValue = tunnel; tunnelOption.OnToggle += (value) => { tunnel = value; Plugin.Log("Changed value"); }; var reverseOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Reversal ", "GMP2", disableScoreString + "Reverses the direction the notes come from", _SwapSabersIcon); reverseOption.GetValue = reverse; reverseOption.OnToggle += (value) => { reverse = value; Plugin.Log("Changed value"); }; reverseOption.AddConflict("Chat Integration"); var repeatOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Repeat", "GMP2", disableScoreString + "Restarts song on song end", _RepeatIcon); repeatOption.GetValue = repeatSong; repeatOption.OnToggle += (value) => { repeatSong = value; Plugin.Log("Changed value"); }; if (Plugin.mappingExtensionsPresent) { var sixlanesOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Six Lanes", "GMP2", disableScoreString + "Extends the map to be in 6 lanes", _GMPIcon); sixlanesOption.GetValue = sixLanes; sixlanesOption.OnToggle += (value) => { sixLanes = value; Plugin.Log("Changed value"); }; var fourlayersOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Four Layers", "GMP2", disableScoreString + "Extends the map to be in 4 vertical layers rather than 3", _GMPIcon); fourlayersOption.GetValue = fourLayers; fourlayersOption.OnToggle += (value) => { fourLayers = value; Plugin.Log("Changed value"); }; var fiveLanesOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Five Lanes", "GMP2", disableScoreString + "Extends the map to be in 5 lanes", _GMPIcon); fiveLanesOption.GetValue = fiveLanes; fiveLanesOption.OnToggle += (value) => { fiveLanes = value; Plugin.Log("Changed value"); }; fiveLanesOption.AddConflict("Six Lanes"); var laneshiftOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Lane Shift", "GMP2", disableScoreString + "Randomly shifts notes off of their normal lane", _GMPIcon); laneshiftOption.GetValue = laneShift; laneshiftOption.OnToggle += (value) => { laneShift = value; Plugin.Log("Changed value"); }; var angleShiftOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Angle Shift", "GMP2", disableScoreString + "Randomly shifts notes off of their normal Angle", _GMPIcon); angleShiftOption.GetValue = angleShift; angleShiftOption.OnToggle += (value) => { angleShift = value; Plugin.Log("Changed value"); }; } var gnomeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Gnome on miss", "GMP2", "Probably try not to miss.", _GnomeIcon); gnomeOption.GetValue = gnomeOnMiss; gnomeOption.OnToggle += (value) => { gnomeOnMiss = value; Plugin.Log("Changed value"); }; gnomeOption.AddConflict("Chat Integration"); gnomeOption.AddConflict("Faster Song"); gnomeOption.AddConflict("Slower Song"); var bulletTimeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Bullet Time", "GMP2", disableScoreString + "Slow down time by pressing the triggers on your controllers.", _BulletTimeIcon); bulletTimeOption.GetValue = bulletTime; bulletTimeOption.OnToggle += (value) => { bulletTime = value; Plugin.Log("Changed value"); }; bulletTimeOption.AddConflict("Faster Song"); bulletTimeOption.AddConflict("Slower Song"); bulletTimeOption.AddConflict("Chat Integration"); var noteSizeOption = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.ModifiersRight, "Note Size", "GMP2", disableScoreString + "Change the size of the notes. Overwritten by Chat Integration and any other size changing options"); for (float i = 10; i <= 200; i += 10) { noteSizeOption.AddOption(i / 100); } noteSizeOption.GetValue = (() => { float num = fixedNoteScale; if (num % 0.1f != 0) { num = (float)Math.Round(num, 1); } num = Mathf.Clamp(num, 0.1f, 2f); return(num); }); noteSizeOption.OnChange += (value) => { fixedNoteScale = value; Plugin.Log("Changed Value"); }; var swapSabersOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Testing Ground", "GMP2", disableScoreString + "Currently Used To test Random stuff"); swapSabersOption.GetValue = swapSabers; swapSabersOption.OnToggle += (value) => { swapSabers = value; Plugin.Log("Changed value"); }; swapSabersOption.AddConflict("Chat Integration"); var njsRandomOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Random NJS", "GMP2", disableScoreString + "Randomizes Note Jump Speed", _RandomIcon); njsRandomOption.GetValue = njsRandom; njsRandomOption.OnToggle += (value) => { njsRandom = value; Plugin.Log("Changed value"); }; njsRandomOption.AddConflict("Chat Integration"); var offsetrandomOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Random Spawn Offset", "GMP2", disableScoreString + "Randomizes Note Spawn offset", _RandomIcon); offsetrandomOption.GetValue = offsetrandom; offsetrandomOption.OnToggle += (value) => { offsetrandom = value; Plugin.Log("Changed value"); }; offsetrandomOption.AddConflict("Chat Integration"); var randomSizeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Random Note Size", "GMP2", disableScoreString + "Randomizes Note Size", _RandomIcon); randomSizeOption.GetValue = njsRandom; randomSizeOption.OnToggle += (value) => { randomSize = value; Plugin.Log("Changed value"); }; randomSizeOption.AddConflict("Chat Integration"); var funkyOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Funky", "GMP2", disableScoreString + "Funky Notes", _FunkyIcon); funkyOption.GetValue = funky; funkyOption.OnToggle += (value) => { funky = value; Plugin.Log("Changed value"); }; funkyOption.AddConflict("Chat Integration"); var noArrowsOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "No Arrows", "GMP2", disableScoreString + "No arrows but without the color randomization", _NoArrowsIcon); noArrowsOption.GetValue = noArrows; noArrowsOption.OnToggle += (value) => { noArrows = value; Plugin.Log("Changed value"); }; noArrowsOption.AddConflict("Chat Integration"); var oneColorOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "One Color ", "GMP2", disableScoreString + "Changes Blocks to One Color, allows you to hit them with either saber. Haptics for saber clash and walls disabled with this modifier on", _GMPIcon); oneColorOption.GetValue = oneColor; oneColorOption.OnToggle += (value) => { oneColor = value; Plugin.Log("Changed value"); }; oneColorOption.AddConflict("Chat Integration"); var removeCrouchOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Remove Crouch Walls ", "GMP2", disableScoreString + "Removes walls that require you to duck, leaving other walls in tact", _GMPIcon); removeCrouchOption.GetValue = removeCrouchWalls; removeCrouchOption.OnToggle += (value) => { removeCrouchWalls = value; Plugin.Log("Changed value"); }; }
private static void GameplaySettingsUISetup() { /* * MODIFIERS */ Sprite sprite = Base64Sprites.Base64ToSprite("iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA3WAAAN1gGQb3mcAAAAB3RJTUUH4wINFyAWrJdsNwAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4yMfEgaZUAAAKSSURBVEhL3dbLq05RHMbxEzEhuQ0OBi4DDDAxcSlDE1ISCgMGDAgTt8iACRMlyW0kKSZMKIRcBsQAfwGRiUK5RLm9vs9u/XbrXefZ+30z9KvP6V3Puuxz9nv2Wnug0+n8q4d4UGR9s2GffuBnkfXNhn36fy68Cd+xIcuc9/hQZCWtobU2Zlmlq5GswR/8QtvF5ySuTzRXa2it1SmrdTUyOxAX1y9S9o9FXFify/61iItqrbK/9TuOi99I7WFYj8f4jSh9foR10BiNvYXGi4oNMwswCRNwD1Gf8CTR56i70FjN0Vy3ZsWGhdF4AdUr6PsagegfCX0d6lM9xyjkawxhw8JZqLTgRLgxor74BU/BjanZMDMDela/YVrK2mi8Hh/NmZ4yy4aZPVCdget3zkG1C66/oh/jsRN7k92I5/MyVCvRNbHFKqguQe250Jqxvq41Th0HUFacOneqVqezCLFwLxqr0ly1dYqVtV8d+tc/jKPJEcSjcBWq5YiFe1kB1RWovRBaM9Y/hMFyUukgVMfh+p0TUOlOuv6KDTOzoR1Im8SUlLXRmM/QbjYzZZYNCxehuo984yipL3a3C3BjajYsaAt8CdVJuDESt1hjNceNqdkwo1sdJ9EXqNxppdNI9RXzoDmzUI6r2TCJ8/RaautkUr3GcMQ43eK3UMX5fR2t57kNkR/im1Mmz6BagsiWKqCeIrIt0NzGiw8JoGe26RCP7VC7UuxEel5V5SOXv0wsS1mtq5Fsgx4Hd4gfQ1NpEyrHaw2ttTXLKl2NzBiTyVTorz5fOI1BuDl2rSFBD/vQVNvh5lg2bLEYep+6XbiJ+XBzLBv2oBeCN/iYaMPQQePGNrJhD3rL0It81DtMhhvboDPwF6eIOFNA61CjAAAAAElFTkSuQmCC"); ToggleOption lightshowModifier = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersLeft, "Lightshow Only", hintText: "Disables all notes and sabers, allowing you to view the lightshow!", optionIcon: sprite); lightshowModifier.GetValue = ChromaConfig.LightshowModifier; lightshowModifier.OnToggle += LightshowToggled; /* * COLOURS */ GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsRight, "Chroma Colours", "MainMenu", "CTC", "Choose your Colour Scheme and more!"); ToggleOption technicolourToggle = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "Technicolour", "CTC", "Enable/Disable Technicolour. See Technicolour options below."); technicolourToggle.GetValue = ChromaConfig.TechnicolourEnabled; technicolourToggle.OnToggle += TechnicolourToggled; technicolourToggle.AddConflict("RNG PLights"); /* * EVENTS */ GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsRight, "Chroma Events", "MainMenu", "CTE", "Toggle RGB lighting and special events"); ToggleOption rgbLightsToggle = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "RGB Lights", "CTE", "Enable/Disable RGB lighting events."); rgbLightsToggle.GetValue = ChromaConfig.CustomColourEventsEnabled; rgbLightsToggle.OnToggle += RGBEventsToggled; rgbLightsToggle.AddConflict("Darth Maul"); ToggleOption specialEventsToggle = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "Special Events", "CTE", "Enable/Disable Special Events, such as note size changing, player heal/harm events, and rotation events."); specialEventsToggle.GetValue = ChromaConfig.CustomSpecialEventsEnabled; specialEventsToggle.OnToggle += SpecialEventsToggled; specialEventsToggle.AddConflict("Darth Maul"); GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.PlayerSettingsRight, "Techni. Options", "CTC", "CTT", "Adjust Technicolour Settings."); List <Tuple <float, string> > technicolourOptions = new List <Tuple <float, string> > { { 0f, "OFF" }, { 1f, "WARM/COLD" }, { 2f, "EITHER" }, { 3f, "TRUE RANDOM" } }; //float[] techniOptions = new float[technicolourOptions.Count]; //for (int i = 0; i < technicolourOptions.Count; i++) techniOptions[i] = i; MultiSelectOption techniLights = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Lights", "CTT", "Technicolour style of the lights."); for (int i = 0; i < technicolourOptions.Count; i++) { techniLights.AddOption(i, technicolourOptions[i].Item2); } techniLights.GetValue += delegate { return((int)ChromaConfig.TechnicolourLightsStyle); }; techniLights.OnChange += delegate(float value) { ColourManager.TechnicolourStyle style = ColourManager.GetTechnicolourStyleFromFloat(value); ChromaConfig.TechnicolourLightsStyle = style; }; MultiSelectOption techniLightsGrouping = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Lights Grouping", "CTT", ChromaConfig.WaiverRead ? "The more isolated, the more intense. Isolated Event has the best performance.\n <color=red>Mayhem prevents fades and flashes from working properly</color>." : "Isolated Event for better performance, but more chaotic lighting"); techniLightsGrouping.AddOption(0f, "Standard"); techniLightsGrouping.AddOption(1f, "Isolated Event"); if (ChromaConfig.WaiverRead) { techniLightsGrouping.AddOption(2f, "Isolated (Mayhem)"); } techniLightsGrouping.GetValue += delegate { return((int)ChromaConfig.TechnicolourLightsGrouping); }; techniLightsGrouping.OnChange += delegate(float value) { ChromaConfig.TechnicolourLightsGrouping = ColourManager.GetTechnicolourLightsGroupingFromFloat(value); }; MultiSelectOption techniFrequency = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Lights Freq", "CTT", "The higher the frequency, the more colour changes. 10% is default."); for (int i = 1; i <= 20; i++) { techniFrequency.AddOption(0.05f * i, i == 2 ? "10% (Def)" : (5f * i) + "%"); } techniFrequency.GetValue += delegate { return(ChromaConfig.TechnicolourLightsFrequency); }; techniFrequency.OnChange += delegate(float value) { ChromaConfig.TechnicolourLightsFrequency = value; }; /*ToggleOption techniIndividualLights = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "Isolated Lights", "CTT", "If enabled, Technicolour will only affect one light source at a time. This results in much, much more colour variety being possible, but also can look excessively chaotic."); * techniIndividualLights.GetValue = ChromaConfig.TechnicolourLightsIndividual; * techniIndividualLights.OnToggle += delegate (bool value) { * ChromaConfig.TechnicolourLightsIndividual = value; * };*/ /*MultiSelectOption techniBarriers = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Walls", "CTT", "Technicolour style of the walls/barriers."); * for (int i = 0; i < technicolourOptions.Count; i++) techniBarriers.AddOption(i, technicolourOptions[i].Item2); * techniBarriers.GetValue += delegate { * return (int)ChromaConfig.TechnicolourWallsStyle; * }; * techniBarriers.OnChange += delegate (float value) { * ColourManager.TechnicolourStyle style = ColourManager.GetTechnicolourStyleFromFloat(value); * ChromaConfig.TechnicolourWallsStyle = style; * };*/ //Walls don't need to have other options since they only work nicely with Either ToggleOption techniWalls = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Barriers", "CTT", "If enabled, Barriers will rainbowify!"); techniWalls.GetValue = ChromaConfig.TechnicolourWallsStyle == ColourManager.TechnicolourStyle.ANY_PALETTE; techniWalls.OnToggle += delegate(bool value) { ChromaConfig.TechnicolourWallsStyle = value ? ColourManager.TechnicolourStyle.ANY_PALETTE : ColourManager.TechnicolourStyle.OFF; }; MultiSelectOption techniBlocks = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Blocks", "CTT", "Technicolour style of the blocks."); for (int i = 0; i < technicolourOptions.Count; i++) { techniBlocks.AddOption(i, technicolourOptions[i].Item2); } techniBlocks.GetValue += delegate { return((int)ChromaConfig.TechnicolourBlocksStyle); }; techniBlocks.OnChange += delegate(float value) { ColourManager.TechnicolourStyle style = ColourManager.GetTechnicolourStyleFromFloat(value); ChromaConfig.TechnicolourBlocksStyle = style; }; MultiSelectOption techniSsabers = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.PlayerSettingsRight, "Tech. Sabers", "CTT", "Technicolour style of the sabers."); for (int i = 0; i < technicolourOptions.Count; i++) { techniSsabers.AddOption(i, technicolourOptions[i].Item2); } techniSsabers.GetValue += delegate { return((int)ChromaConfig.TechnicolourSabersStyle); }; techniSsabers.OnChange += delegate(float value) { ColourManager.TechnicolourStyle style = ColourManager.GetTechnicolourStyleFromFloat(value); ChromaConfig.TechnicolourSabersStyle = style; }; ToggleOption techniSabersMismatch = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.PlayerSettingsRight, "Desync Sabers", "CTT", "If true, technicolour sabers will have their \"time\" start and progress differently, resulting in their colours not matching so often."); techniSabersMismatch.GetValue = !ChromaConfig.MatchTechnicolourSabers; techniSabersMismatch.OnToggle += TechnicolourSaberMismatchToggled; GameplaySubMenuCreatedEvent?.Invoke("CTC"); GameplaySubMenuCreatedEvent?.Invoke("CTE"); GameplaySubMenuCreatedEvent?.Invoke("CTT"); ExtensionGameplayMenusEvent?.Invoke(); }
public static void CreateUI() { GetIcons(); string disableScoreString = "<size=120%><color=#ff0000ff><b><u>Disables Score Submission</u> </b></color></size> \r\n<size=100%> "; var gmp1Menu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "GamePlayModifiersPlus", "MainMenu", "GMP1", "GameplayModifiersPlus Options", _GMPIcon); //GMP1 Options // var backOption = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "Back", "GMP1", "MainMenu", "Return from GamePlayModifiersOptions", _BackButton); var twitchStuffOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Chat Integration", "GMP1", disableScoreString + "Allows Chat to mess with your game if connected. !gm help", _TwitchIcon); twitchStuffOption.GetValue = chatIntegration; twitchStuffOption.OnToggle += (value) => { chatIntegration = value; Plugin.Log("Changed value"); }; var chatDeltaOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Chat Delta", "GMP1", "Display Change in Performance Points / Rank in Twitch Chat if Connected", _ChatDeltaIcon); chatDeltaOption.GetValue = ModPrefs.GetBool("GameplayModifiersPlus", "chatDelta", false, true); chatDeltaOption.OnToggle += (chatDelta) => { ModPrefs.SetBool("GameplayModifiersPlus", "chatDelta", chatDelta); Plugin.Log("Changed value"); }; //GMP2 Options var gmp2Menu = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "Additional Modifiers", "GMP1", "GMP2", "Additional Modifiers", _GMPIcon); // var backOption2 = GameplaySettingsUI.CreateSubmenuOption(GameplaySettingsPanels.ModifiersRight, "Back", "GMP2", "GMP1", "Return from Additional Modifiers", _BackButton); var repeatOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Repeat", "GMP2", disableScoreString + "Restarts song on song end", _RepeatIcon); repeatOption.GetValue = repeatSong; repeatOption.OnToggle += (value) => { repeatSong = value; Plugin.Log("Changed value"); }; var gnomeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Gnome on miss", "GMP2", "Probably try not to miss.", _GnomeIcon); gnomeOption.GetValue = gnomeOnMiss; gnomeOption.OnToggle += (value) => { gnomeOnMiss = value; Plugin.Log("Changed value"); }; gnomeOption.AddConflict("Chat Integration"); gnomeOption.AddConflict("Faster Song"); gnomeOption.AddConflict("Slower Song"); var bulletTimeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Bullet Time", "GMP2", disableScoreString + "Slow down time by pressing the triggers on your controllers.", _BulletTimeIcon); bulletTimeOption.GetValue = bulletTime; bulletTimeOption.OnToggle += (value) => { bulletTime = value; Plugin.Log("Changed value"); }; bulletTimeOption.AddConflict("Faster Song"); bulletTimeOption.AddConflict("Slower Song"); bulletTimeOption.AddConflict("Chat Integration"); var noteSizeOption = GameplaySettingsUI.CreateListOption(GameplaySettingsPanels.ModifiersRight, "Note Size", "GMP2", disableScoreString + "Change the size of the notes. Overwritten by Chat Integration and any other size changing options"); for (float i = 10; i <= 200; i += 10) { noteSizeOption.AddOption(i / 100); } noteSizeOption.GetValue = (() => { float num = fixedNoteScale; if (num % 0.1f != 0) { num = (float)Math.Round(num, 1); } num = Mathf.Clamp(num, 0.1f, 2f); return(num); }); noteSizeOption.OnChange += (value) => { fixedNoteScale = value; Plugin.Log("Changed Value"); }; var swapSabersOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Testing Ground", "GMP2", disableScoreString + "Currently Used To test Random stuff", _SwapSabersIcon); swapSabersOption.GetValue = swapSabers; swapSabersOption.OnToggle += (value) => { swapSabers = value; Plugin.Log("Changed value"); }; swapSabersOption.AddConflict("Chat Integration"); var njsRandomOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Random NJS", "GMP2", disableScoreString + "Randomizes Note Jump Speed", _RandomIcon); njsRandomOption.GetValue = njsRandom; njsRandomOption.OnToggle += (value) => { njsRandom = value; Plugin.Log("Changed value"); }; njsRandomOption.AddConflict("Chat Integration"); var randomSizeOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Random Note Size", "GMP2", disableScoreString + "Randomizes Note Size", _RandomIcon); randomSizeOption.GetValue = njsRandom; randomSizeOption.OnToggle += (value) => { randomSize = value; Plugin.Log("Changed value"); }; randomSizeOption.AddConflict("Chat Integration"); var rainbowOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Rainbow", "GMP2", disableScoreString + "Rainbow Notes", _RainbowIcon); rainbowOption.GetValue = rainbow; rainbowOption.OnToggle += (value) => { rainbow = value; Plugin.Log("Changed value"); }; rainbowOption.AddConflict("Chat Integration"); var funkyOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "Funky", "GMP2", disableScoreString + "Funky Notes", _FunkyIcon); funkyOption.GetValue = funky; funkyOption.OnToggle += (value) => { funky = value; Plugin.Log("Changed value"); }; funkyOption.AddConflict("Chat Integration"); var noArrowsOption = GameplaySettingsUI.CreateToggleOption(GameplaySettingsPanels.ModifiersRight, "No Arrows", "GMP2", disableScoreString + "No arrows but without the color randomization", _NoArrowsIcon); noArrowsOption.GetValue = noArrows; noArrowsOption.OnToggle += (value) => { noArrows = value; Plugin.Log("Changed value"); }; noArrowsOption.AddConflict("Chat Integration"); }