public override void OnApplicationStart() { var toggleChairsMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.WorldMenu).AddSimpleButton("Toggle Chairs", () => toggleChairsMenu.Show()); toggleChairsMenu.AddSimpleButton("Disable Active Chairs", (() => { int countChange = 0; var objects = Resources.FindObjectsOfTypeAll <VRCStation>(); foreach (var item in objects) { if (item.gameObject.active) //Only disable active chairs { countChange++; objectsDisabled.Add(item); item.gameObject.SetActive(false); // item.gameObject finds the parent gameObject of the VRCStation } } MelonLogger.Log("Disabled " + countChange + " chair objects"); })); toggleChairsMenu.AddSimpleButton("Re-enable Chairs", (() => { int countChange = 0; foreach (var item in objectsDisabled) { if (item is null) { continue; } countChange++; item.gameObject.SetActive(true); } MelonLogger.Log("Enabled " + countChange + " chair objects"); objectsDisabled.Clear(); })); toggleChairsMenu.AddSimpleButton("Close", () => toggleChairsMenu.Hide()); }
public void DefaultsMenu(bool useBigMenu) { ICustomShowableLayoutedMenu mirrorLayerMenu = null; mirrorLayerMenu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescriptionCustom.QuickMenu3Column) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescriptionCustom.QuickMenu3Column_Longer); mirrorLayerMenu.AddLabel("Set Default Layer Mask On World Join"); mirrorLayerMenu.AddToggleButton("Set on Join", b => setMaskOnJoin.Value = b, () => setMaskOnJoin.Value); //mirrorLayerMenu.AddLabel($"Mask: {defaultMask.Value}"); mirrorLayerMenu.AddSpacer(); mirrorLayerMenu.AddSpacer(); mirrorLayerMenu.AddSimpleButton($"Enable All", () => { defaultMask.Value = -1; UpdateButtons(defaultMask.Value); }); mirrorLayerMenu.AddSimpleButton($"Disable All", () => { defaultMask.Value = 0; UpdateButtons(defaultMask.Value); }); foreach (KeyValuePair <int, string> entry in layerList) { mirrorLayerMenu.AddLabel($"Layer #{entry.Key} {(IsLayerEnabled(defaultMask.Value, entry.Key) ? "++++++++" : "-----------")} \n{entry.Value}", (button) => buttonList[entry.Key] = button.transform); mirrorLayerMenu.AddSimpleButton($"Enable", () => { defaultMask.Value = defaultMask.Value | (1 << entry.Key); UpdateButtons(defaultMask.Value); }); //Remove Layer mirrorLayerMenu.AddSimpleButton($"Disable", () => { defaultMask.Value = defaultMask.Value & ~(1 << entry.Key); UpdateButtons(defaultMask.Value); }); //Add Layer } mirrorLayerMenu.AddSimpleButton($"Close", () => { mirrorLayerMenu.Hide(); }); mirrorLayerMenu.AddSimpleButton($"Back", () => { EditMirrorLayersMenu(useBigMenu, null); }); mirrorLayerMenu.Show(); }
public void ColorMenuAdj(bool useBigMenu) { ICustomShowableLayoutedMenu Menu = null; Menu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescriptionCustom.QuickMenu3Column4Row) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescriptionCustom.QuickMenu3Column4Row); string[] colorList = { "Red", "Green", "Blue" }; for (int i = 0; i < colorList.GetLength(0); i++) { string c = colorList[i].Substring(0, 1); Menu.AddSimpleButton($"{(colorList[i])} -", () => { category.GetEntry <float>($"CubeColor{c}").Value = Clamp(category.GetEntry <float>($"CubeColor{c}").Value - 10, 0, 100); OnPreferencesSaved(); Menu.Hide(); ColorMenuAdj(useBigMenu); }); Menu.AddSimpleButton($"{(colorList[i])} -0-", () => { category.GetEntry <float>($"CubeColor{c}").Value = 0f; OnPreferencesSaved(); Menu.Hide(); ColorMenuAdj(useBigMenu); }); Menu.AddSimpleButton($"{(colorList[i])} +", () => { category.GetEntry <float>($"CubeColor{c}").Value = Clamp(category.GetEntry <float>($"CubeColor{c}").Value + 10, 0, 100); OnPreferencesSaved(); Menu.Hide(); ColorMenuAdj(useBigMenu); }); } Menu.AddSimpleButton("Color Adj\n----\nBack", () => { CubeMenu(useBigMenu); }); Menu.AddLabel($"R:{category.GetEntry<float>("CubeColorR").Value}\nG:{category.GetEntry<float>("CubeColorG").Value}\nB:{category.GetEntry<float>("CubeColorB").Value}"); Menu.Show(); }
public void CubeMenu(bool useBigMenu) { ICustomShowableLayoutedMenu cubeMenu = null; cubeMenu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescriptionCustom.QuickMenu3Column4Row) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescriptionCustom.QuickMenu3Column4Row); cubeMenu.AddSimpleButton($"Destroy Cube", () => { DestroyCube(); cubeState = 0; }); cubeMenu.AddSimpleButton($"Create Custom Cube", () => { CreateCube(customCubeHeight, customCubeWidth, customCubeLength, cubeHeightOffset); cubeState = 10; }); cubeMenu.AddSimpleButton($"Settings", () => { SettMenu(useBigMenu); }); /// cubeMenu.AddSimpleButton($"Create Small Cube", () => { CreateCube(5, 5, 5, .1f); cubeState = 1; }); cubeMenu.AddSimpleButton($"Create Medium Cube", () => { CreateCube(15, 15, 15, .05f); cubeState = 2; }); cubeMenu.AddSimpleButton($"Create Large Cube", () => { CreateCube(30, 30, 30, .05f); cubeState = 3; }); ///// cubeMenu.AddSimpleButton($"Wall Visibility Menu", () => { WallMenu(useBigMenu); }); cubeMenu.AddSimpleButton($"Color Menu", () => { ColorMenu(useBigMenu); }); cubeMenu.AddSimpleButton($"Color Menu Adjust", () => { ColorMenuAdj(useBigMenu); }); ///// cubeMenu.AddSimpleButton($"--Exit--", () => { cubeMenu.Hide(); }); cubeMenu.AddToggleButton("Pickupable", (action) => { category.GetEntry <bool>("WallsPickupable").Value = !category.GetEntry <bool>("WallsPickupable").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("WallsPickupable").Value); cubeMenu.AddToggleButton("Pickups snap to hand", (action) => { category.GetEntry <bool>("PickupOrient").Value = !category.GetEntry <bool>("PickupOrient").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("PickupOrient").Value); //cubeMenu.AddSpacer(); cubeMenu.Show(); }
public void ColorMenu(bool useBigMenu) { var colorList = new Dictionary <string, Color> { { "Black", Color.black }, { "Grey", Color.grey }, { "White", Color.white },// { "Red", Color.red }, { "Green", Color.green }, { "Blue", Color.blue },// { "Cyan", Color.cyan }, { "Magenta", Color.magenta }, { "Yellow", Color.yellow }// }; ICustomShowableLayoutedMenu Menu = null; Menu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescriptionCustom.QuickMenu3Column4Row) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescriptionCustom.QuickMenu3Column4Row); foreach (KeyValuePair <string, Color> entry in colorList) { if (entry.Key == "x") { Menu.AddSpacer(); continue; } //If desc is x, then skip Menu.AddSimpleButton(entry.Key, () => { category.GetEntry <float>("CubeColorR").Value = entry.Value.r * 100; category.GetEntry <float>("CubeColorG").Value = entry.Value.g * 100; category.GetEntry <float>("CubeColorB").Value = entry.Value.b * 100; OnPreferencesSaved(); }); } // Menu.AddSimpleButton("Color Menu\n----\nBack", () => { CubeMenu(useBigMenu); }); Menu.Show(); }
public override void Init() { AvatarInfoMenuButton = MelonPreferences.CreateEntry("UserInfoExtensionsSettings", nameof(AvatarInfoMenuButton), true, "Show \"Avatar Info Menu\" button in Avatar Menu"); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.AvatarMenu).AddSimpleButton("Avatar Info Menu", new Action(() => { avatarInfoMenu?.Show(); OnMenuShown(); }), new Action <GameObject>((go) => { avatarInfoMenuButtonGameObject = go; GetAvatarAuthor.avatarPage.GetComponent <EnableDisableListener>().OnDisabled += new Action(() => avatarInfoMenu?.Hide()); })); avatarInfoMenu = ExpansionKitApi.CreateCustomFullMenuPopup(new LayoutDescription() { RowHeight = 80, NumColumns = 3, NumRows = 5 }); avatarInfoMenu.AddLabel("Avatar information:"); avatarInfoMenu.AddSpacer(); avatarInfoMenu.AddSimpleButton("Back", new Action(() => avatarInfoMenu.Hide())); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => authorNameLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); avatarInfoMenu.AddSimpleButton("Show Avatar Description", new Action(() => { avatarInfoMenu.Hide(); UiManager.OpenSmallPopup("Description:", avatar.description == null ? "" : avatar.description, "Close", UiManager.ClosePopup); })); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => avatarNameLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => platformLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => releaseTypeLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => lastUpdatedLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); avatarInfoMenu.AddSimpleButton("", new Action(() => { }), new Action <GameObject>((gameObject) => VersionLabel = gameObject.transform.GetChild(0).GetComponent <Text>())); }
private void ShowMixinMenu() { var disabledMixinSet = mySettings.DisabledMixinsEntry.Value.Split('|').ToHashSet(); var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddLabel("Click on a mix-in style to toggle it"); foreach (var(id, name) in myStylesLoader.GetKnownMixIns()) { menu.AddSimpleButton($"{name} ({(disabledMixinSet.Contains(id) ? "Disabled" : "Enabled")})", () => { if (disabledMixinSet.Contains(id)) { disabledMixinSet.Remove(id); } else { disabledMixinSet.Add(id); } mySettings.DisabledMixinsEntry.Value = disabledMixinSet.Join(delimiter: "|"); menu.Hide(); ShowMixinMenu(); }); } menu.AddSimpleButton("Close", menu.Hide); menu.Show(); }
public static void Initialize() { Page = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); Page.AddLabel("Title", new Action <GameObject>((obj) => { titleObject = obj; })); Page.AddLabel("Waiting for key...", new Action <GameObject>((obj) => { textObject = obj; })); Page.AddSimpleButton("Clear", new Action(() => { selectedKeys.Clear(); })); Page.AddSimpleButton("Accept", new Action(() => { AcceptAction?.Invoke(selectedKeys); fetchingKeys = false; Page.Hide(); })); Page.AddSimpleButton("Cancel", new Action(() => { CancelAction?.Invoke(); fetchingKeys = false; Page.Hide(); })); }
private static void ShowWorlds() { ICustomShowableLayoutedMenu worldsPermissionsPopup = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); if (WorldPermissionHandler.BlacklistedWorlds.Count > 0) { worldsPermissionsPopup.AddLabel("Blacklisted Worlds"); foreach (WorldPermissionHandler.PermissionEntry blacklistedWorld in WorldPermissionHandler.BlacklistedWorlds) { worldsPermissionsPopup.AddSimpleButton( blacklistedWorld.WorldName, () => { worldsPermissionsPopup.Hide(); WorldPermissionHandler.RemoveFromBlacklist(blacklistedWorld.WorldId); WorldPermissionHandler.SaveSettings(); ShowWorlds(); }); } worldsPermissionsPopup.AddSpacer(); } worldsPermissionsPopup.AddSimpleButton("Close", () => worldsPermissionsPopup.Hide()); worldsPermissionsPopup.Show(); }
public static void OpenSavePresetMenu(int presetNumber) { var savePresetMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); string defaultText = Helpers.GetPresetName(presetNumber); savePresetMenu.AddSimpleButton("Save this preset", () => { savePresetMenu.Hide(); BuiltinUiUtils.ShowInputPopup("Enter a preset name", defaultText, InputField.InputType.Standard, false, "Save", (x, kc, txt) => Helpers.SaveSafetySettings(presetNumber, x)); }); savePresetMenu.Show(); }
protected override void OnPickerSelected(IPickerElement model) { PlaySound(); var avatar = new ApiAvatar() { id = model.Id }; if (Imports.IsDebugMode()) { MelonLogger.Log($"Performing an API request for {model.Id}"); } avatar.Fetch(new Action <ApiContainer>((_) => { if (Imports.IsDebugMode()) { MelonLogger.Log($"Done an API request for {model.Id}"); } FavCatMod.Database?.UpdateStoredAvatar(avatar); var canUse = avatar.releaseStatus == "public" || avatar.authorId == APIUser.CurrentUser.id; if (!canUse) { myPageAvatar.field_Public_SimpleAvatarPedestal_0.DisplayErrorAvatar(); myPageAvatar.field_Public_SimpleAvatarPedestal_0.field_Internal_ApiAvatar_0 = avatar; // set it directly here because refreshing will load it } else { myPageAvatar.field_Public_SimpleAvatarPedestal_0.Refresh(avatar); } // VRC has a tendency to change visibility of its lists after pedestal refresh ReorderLists(); RefreshFavButtons(); }), new Action <ApiContainer>(c => { if (Imports.IsDebugMode()) { MelonLogger.Log("API request errored with " + c.Code + " - " + c.Error); } if (c.Code == 404 && listsParent.gameObject.activeInHierarchy) { FavCatMod.Database.CompletelyDeleteAvatar(model.Id); var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddSpacer(); menu.AddSpacer(); menu.AddLabel("This avatar is not available anymore (deleted)"); menu.AddLabel("It has been removed from all favorite lists"); menu.AddSpacer(); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Close", menu.Hide); menu.Show(); } })); }
protected override void OnPickerSelected(IPickerElement model) { PlaySound(); if (FavCatSettings.AvatarSearchMode.Value == "author") { FavCatMod.Instance.playerModule?.OnPickerSelected(((IStoredModelAdapter <StoredAvatar>)model).Model.AuthorId, listsParent.gameObject); //TO-FIX return; } var avatar = new ApiAvatar() { id = model.Id }; if (MelonDebug.IsEnabled()) { MelonDebug.Msg($"Performing an API request for {model.Id}"); } avatar.Fetch(new Action <ApiContainer>((_) => { if (MelonDebug.IsEnabled()) { MelonDebug.Msg($"Done an API request for {model.Id}"); } FavCatMod.Database?.UpdateStoredAvatar(avatar); myPageAvatar.field_Public_SimpleAvatarPedestal_0.Refresh(avatar); // VRC has a tendency to change visibility of its lists after pedestal refresh ReorderLists(); RefreshFavButtons(); }), new Action <ApiContainer>(c => { if (MelonDebug.IsEnabled()) { MelonDebug.Msg("API request errored with " + c.Code + " - " + c.Error); } if (c.Code == 404 && listsParent.gameObject.activeInHierarchy) { FavCatMod.Database.CompletelyDeleteAvatar(model.Id); var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddSpacer(); menu.AddSpacer(); menu.AddLabel("This avatar is not available anymore (deleted or privated)"); menu.AddLabel("It has been removed from all favorite lists"); menu.AddSpacer(); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Close", menu.Hide); menu.Show(); } })); }
public override void OnApplicationStart() { var toolTipsMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("Controller Tooltips", () => toolTipsMenu.Show()); toolTipsMenu.AddLabel("Enable/Disable the Controller Tooltips that sometimes get stuck on!"); toolTipsMenu.AddSimpleButton("Disable Tooltips", (() => ToggleToolTips(false))); toolTipsMenu.AddSimpleButton("Enable Tooltips", (() => ToggleToolTips(true))); toolTipsMenu.AddSimpleButton("Close", () => toolTipsMenu.Hide()); }
public static void OpenLoadMenu() { var loadMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns); loadMenu.AddSimpleButton($"Load {Helpers.GetPresetName(1)}", () => { Helpers.LoadSafetySettings(1); loadMenu.Hide(); }); loadMenu.AddSimpleButton($"Load {Helpers.GetPresetName(2)}", () => { Helpers.LoadSafetySettings(2); loadMenu.Hide(); }); loadMenu.AddSimpleButton($"Load {Helpers.GetPresetName(3)}", () => { Helpers.LoadSafetySettings(3); loadMenu.Hide(); }); loadMenu.AddSimpleButton("Close", () => loadMenu.Hide()); loadMenu.Show(); }
public static void OpenSaveMenu() { var saveMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns); saveMenu.AddSimpleButton($"Save {Helpers.GetPresetName(1)}", () => OpenSavePresetMenu(1)); saveMenu.AddSimpleButton($"Save {Helpers.GetPresetName(2)}", () => OpenSavePresetMenu(2)); saveMenu.AddSimpleButton($"Save {Helpers.GetPresetName(3)}", () => OpenSavePresetMenu(3)); saveMenu.AddSimpleButton("Close", () => saveMenu.Hide()); saveMenu.Show(); }
public static void OpenDeleteMenu() { var deleteMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns); Settings.availablePresets.ActualPresets.OrderBy(sss => sss.settingsPresetNum).ToList().ForEach(sss => deleteMenu.AddSimpleButton($"Delete {sss.settingsPresetName}", () => { Helpers.DeleteSafetySettings(sss.settingsPresetNum); deleteMenu.Hide(); OpenDeleteMenu(); })); deleteMenu.AddSimpleButton("Close", () => deleteMenu.Hide()); deleteMenu.Show(); }
public static void OpenSaveMenu() { var saveMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns); Settings.availablePresets.ActualPresets.OrderBy(sss => sss.settingsPresetNum).ToList().ForEach(sss => saveMenu.AddSimpleButton($"Save {sss.settingsPresetName}", () => { OpenSavePresetMenu(sss.settingsPresetNum); })); saveMenu.AddSimpleButton($"Save new", () => OpenSavePresetMenu(Helpers.NextAvailablePresetNum())); saveMenu.AddSimpleButton("Close", () => saveMenu.Hide()); saveMenu.Show(); }
private void ShowAdjSpeedMenu() { var adjSpeedMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); adjSpeedMenu.AddLabel("Adjust your movement speed"); adjSpeedMenu.AddSimpleButton("Speed 2", (() => ChangePlayerSpeed(4f))); adjSpeedMenu.AddSimpleButton("Speed 1.5", (() => ChangePlayerSpeed(3f))); adjSpeedMenu.AddSimpleButton("Speed Default", (() => ChangePlayerSpeed(2f))); adjSpeedMenu.AddSimpleButton("Speed 1/2", (() => ChangePlayerSpeed(1f))); adjSpeedMenu.AddSimpleButton("Speed 1/4", (() => ChangePlayerSpeed(.5f))); adjSpeedMenu.AddSimpleButton("Speed 1/10", (() => ChangePlayerSpeed(.2f))); adjSpeedMenu.AddSimpleButton("Close", () => adjSpeedMenu.Hide()); adjSpeedMenu.Show(); }
public void ViewMirrorLayers(bool useBigMenu) { ICustomShowableLayoutedMenu mirrorLayerView = null; mirrorLayerView = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescription.WideSlimList); mirrorLayerView.AddLabel("All mirrors in world\n Layer format is 'Layer:E/D' E - Enabled, D-Disabled"); foreach (var vrcMirrorReflection in UnityEngine.Object.FindObjectsOfType <VRC_MirrorReflection>()) { mirrorLayerView.AddSimpleButton($"Edit Mirror: {vrcMirrorReflection.gameObject.name}", () => { EditMirrorLayersMenu(useBigMenu, vrcMirrorReflection); }); mirrorLayerView.AddLabel($"Path: {GetHierarchyPath(vrcMirrorReflection.gameObject.transform)}"); mirrorLayerView.AddLabel($"{FindLayerString(vrcMirrorReflection.m_ReflectLayers.value)}"); } mirrorLayerView.AddSimpleButton($"Back", () => { EditMirrorLayersMenu(useBigMenu, null); }); mirrorLayerView.AddSimpleButton($"Close", () => { mirrorLayerView.Hide(); }); mirrorLayerView.Show(); }
private static void ShowIKTweaksMenu() { var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddSimpleButton("Clear per-avatar stored calibrations", CalibrationManager.ClearNonUniversal); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Open documentation in browser", () => Process.Start("https://github.com/knah/VRCMods#iktweaks")); menu.AddSpacer(); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Close", menu.Hide); menu.Show(); }
public void WallMenu(bool useBigMenu) { ICustomShowableLayoutedMenu wallMenu = null; wallMenu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescription.QuickMenu3Columns); wallMenu.AddSimpleButton($"Toggle\nTop", () => { wallTop.gameObject.SetActive(!wallTop.gameObject.active); }); wallMenu.AddSimpleButton($"Toggle\nFront", () => { wallFront.gameObject.SetActive(!wallFront.gameObject.active); }); wallMenu.AddSimpleButton($"Toggle\nBottom", () => { wallBottom.gameObject.SetActive(!wallBottom.gameObject.active); }); // wallMenu.AddSimpleButton($"Toggle\nLeft", () => { wallLeft.gameObject.SetActive(!wallLeft.gameObject.active); }); wallMenu.AddSimpleButton($"Toggle\nBack", () => { wallBack.gameObject.SetActive(!wallBack.gameObject.active); }); wallMenu.AddSimpleButton($"Toggle\nRight", () => { wallRight.gameObject.SetActive(!wallRight.gameObject.active); }); // wallMenu.AddSimpleButton("Wall Visibility Menu\n----\nBack", () => { CubeMenu(useBigMenu); }); wallMenu.AddSimpleButton($"All On", () => { if (localCube != null) { for (int i = 0; i < localCube.transform.childCount; ++i) { if (localCube.transform.GetChild(i).gameObject != null && !localCube.transform.GetChild(i).gameObject.Equals(null)) { localCube.transform.GetChild(i).gameObject.SetActive(true); } } } }); wallMenu.AddSimpleButton($"All Off", () => { if (localCube != null) { for (int i = 0; i < localCube.transform.childCount; ++i) { if (localCube.transform.GetChild(i).gameObject != null && !localCube.transform.GetChild(i).gameObject.Equals(null)) { localCube.transform.GetChild(i).gameObject.SetActive(false); } } } }); wallMenu.Show(); }
private void ShowFavMenu() { var availableListsMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); var currentWorld = myPageWorldInfo.prop_ApiWorld_0; var storedCategories = GetCategoriesInSortedOrder(); if (storedCategories.Count == 0) { availableListsMenu.AddLabel("Create some categories first before favoriting worlds!"); } availableListsMenu.AddSimpleButton("Close", () => availableListsMenu.Hide()); foreach (var storedCategory in storedCategories) { if (storedCategory.CategoryName == SearchCategoryName) { continue; } availableListsMenu.AddSimpleButton( $"{(!Favorites.IsFavorite(currentWorld.id, storedCategory.CategoryName) ? "Favorite to" : "Unfavorite from")} {storedCategory.CategoryName}", self => { if (Favorites.IsFavorite(currentWorld.id, storedCategory.CategoryName)) { Favorites.DeleteFavorite(currentWorld.id, storedCategory.CategoryName); } else { Favorites.AddFavorite(currentWorld.id, storedCategory.CategoryName); } self.SetText($"{(!Favorites.IsFavorite(currentWorld.id, storedCategory.CategoryName) ? "Favorite to" : "Unfavorite from")} {storedCategory.CategoryName}"); if (FavCatSettings.HidePopupAfterFav.Value) { availableListsMenu.Hide(); } }); } availableListsMenu.Show(); }
private static void ShowUsers() { ICustomShowableLayoutedMenu userPermissionsPopup = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); if (UserPermissionHandler.BlacklistedUsers.Count > 0) { userPermissionsPopup.AddLabel("Blacklisted Users"); foreach (UserPermissionHandler.PermissionEntry blacklistedUser in UserPermissionHandler.BlacklistedUsers) { userPermissionsPopup.AddSimpleButton( blacklistedUser.DisplayName, () => { userPermissionsPopup.Hide(); UserPermissionHandler.RemoveFromBlacklist(blacklistedUser.UserId); UserPermissionHandler.SaveSettings(); ShowUsers(); }); } userPermissionsPopup.AddSpacer(); } if (UserPermissionHandler.WhitelistedUsers.Count > 0) { userPermissionsPopup.AddLabel("Whitelisted Users"); foreach (UserPermissionHandler.PermissionEntry whitelistedUser in UserPermissionHandler.WhitelistedUsers) { userPermissionsPopup.AddSimpleButton( whitelistedUser.DisplayName, () => { userPermissionsPopup.Hide(); UserPermissionHandler.RemoveFromWhitelist(whitelistedUser.UserId); UserPermissionHandler.SaveSettings(); ShowUsers(); }); } userPermissionsPopup.AddSpacer(); } userPermissionsPopup.AddSimpleButton("Close", () => userPermissionsPopup.Hide()); userPermissionsPopup.Show(); }
public override void OnApplicationStart() { MelonPreferences.CreateCategory(catagory, "DisableOneHandMovementUI Settings"); disableMenuOnLoad = MelonPreferences.CreateEntry(catagory, nameof(disableMenuOnLoad), true, "Disable on Load"); debug = MelonPreferences.CreateEntry(catagory, nameof(debug), false, "Debug"); //Because for some reason this wasn't working for someone! var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton("OneHanded UI", () => menu.Show()); menu.AddLabel("Enable/Disable the One Handed Controller Movement UI"); menu.AddSimpleButton("Disable", (() => Toggle(false))); menu.AddSimpleButton("Enable", (() => Toggle(true))); menu.AddSimpleButton("Close", () => menu.Hide()); MelonCoroutines.Start(OnLoad()); }
protected override void OnPickerSelected(IPickerElement picker) { if (picker.Id == myLastRequestedWorld) { return; } PlaySound(); myLastRequestedWorld = picker.Id; var world = new ApiWorld { id = picker.Id }; world.Fetch(new Action <ApiContainer>(_ => { myLastRequestedWorld = ""; if (listsParent.gameObject.activeInHierarchy) { ScanningReflectionCache.DisplayWorldInfoPage(world, null, false, null); } }), new Action <ApiContainer>(c => { myLastRequestedWorld = ""; if (MelonDebug.IsEnabled()) { MelonDebug.Msg("API request errored with " + c.Code + " - " + c.Error); } if (c.Code == 404 && listsParent.gameObject.activeInHierarchy) { FavCatMod.Database.CompletelyDeleteWorld(picker.Id); var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddSpacer(); menu.AddSpacer(); menu.AddLabel("This world is not available anymore (deleted)"); menu.AddLabel("It has been removed from all favorite lists"); menu.AddSpacer(); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Close", menu.Hide); menu.Show(); } })); }
public void SettMenu(bool useBigMenu) { ICustomShowableLayoutedMenu Menu = null; Menu = useBigMenu ? ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.QuickMenu3Columns) : ExpansionKitApi.CreateCustomQuickMenuPage(LayoutDescription.QuickMenu3Columns); Menu.AddToggleButton("Cube Button on QuickMenu", (action) => { category.GetEntry <bool>("CubeQMButt").Value = !category.GetEntry <bool>("CubeQMButt").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("CubeQMButt").Value); Menu.AddToggleButton("Cube Button on World Big Menu", (action) => { category.GetEntry <bool>("CubeBigButt").Value = !category.GetEntry <bool>("CubeBigButt").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("CubeBigButt").Value); Menu.AddSpacer(); /// Menu.AddSimpleButton($"-", () => { category.GetEntry <float>($"CubeHeightOffset").Value = Clamp(category.GetEntry <float>($"CubeHeightOffset").Value - 10, 0, 100); OnPreferencesSaved(); Menu.Hide(); SettMenu(useBigMenu); }); Menu.AddSimpleButton($"Cube Height Offset:{(category.GetEntry<float>("CubeHeightOffset").Value)}\n0=None, 100=-1/2 Height", () => { }); Menu.AddSimpleButton($"+", () => { category.GetEntry <float>($"CubeHeightOffset").Value = Clamp(category.GetEntry <float>($"CubeHeightOffset").Value + 10, 0, 100); OnPreferencesSaved(); Menu.Hide(); SettMenu(useBigMenu); }); /// Menu.AddSimpleButton("Settings Menu\n----\nBack", () => { CubeMenu(useBigMenu); }); Menu.AddToggleButton("Cube Respawns on world join", (action) => { category.GetEntry <bool>("CubeRepawn").Value = !category.GetEntry <bool>("CubeRepawn").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("CubeRepawn").Value); Menu.AddToggleButton("Use Standard Shader vs Unlit Color", (action) => { category.GetEntry <bool>("UseStandard").Value = !category.GetEntry <bool>("UseStandard").Value; OnPreferencesSaved(); }, () => category.GetEntry <bool>("UseStandard").Value); Menu.Show(); }
public override void OnApplicationStart() { Instance = this; CacheManager.Init(); foreach (MethodInfo method in typeof(MenuController).GetMethods().Where(mi => mi.Name.StartsWith("Method_Public_Void_APIUser_") && !mi.Name.Contains("_PDM_"))) { HarmonyInstance.Patch(method, postfix: new HarmonyMethod(typeof(UserInfoExtensionsMod).GetMethod("OnUserInfoOpen", BindingFlags.Static | BindingFlags.Public))); } HarmonyInstance.Patch(AccessTools.Method(typeof(PageUserInfo), "Back"), postfix: new HarmonyMethod(typeof(UserInfoExtensionsMod).GetMethod("OnUserInfoClose", BindingFlags.Static | BindingFlags.Public))); LayoutDescription popupLayout = new LayoutDescription { RowHeight = 80, NumColumns = 3, NumRows = 5 }; menu = ExpansionKitApi.CreateCustomFullMenuPopup(popupLayout); userDetailsMenu = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserDetailsMenu); menu.AddLabel("General Things"); menu.AddSpacer(); menu.AddSimpleButton("Back", () => menu.Hide()); userDetailsMenu.AddSimpleButton("UserInfoExtensions", () => { HideAllPopups(); menu.Show(); foreach (ModuleBase module in modules) { module.OnUIXMenuOpen(); } }); AddModule(new QuickMenuFromSocial()); AddModule(new GetAvatarAuthor()); AddModule(new BioButtons()); AddModule(new UserInformation()); AddModule(new AvatarInformation()); VRCUtils.OnUiManagerInit += OnUiManagerInit; MelonLogger.Msg("Initialized!"); }
private void ShowFavMenu() { var availableListsMenu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); var currentUser = PageUserInfo.field_Public_APIUser_0; var storedCategories = GetCategoriesInSortedOrder(); if (storedCategories.Count == 0) { availableListsMenu.AddLabel("Create some categories first before favoriting players!"); } availableListsMenu.AddSimpleButton("Close", () => availableListsMenu.Hide()); foreach (var storedCategory in storedCategories) { if (storedCategory.CategoryName == SearchCategoryName) { continue; } Text?buttonText = null; availableListsMenu.AddSimpleButton( $"{(!Favorites.IsFavorite(currentUser.id, storedCategory.CategoryName) ? "Favorite to" : "Unfavorite from")} {storedCategory.CategoryName}", () => { if (Favorites.IsFavorite(currentUser.id, storedCategory.CategoryName)) { Favorites.DeleteFavorite(currentUser.id, storedCategory.CategoryName); } else { Favorites.AddFavorite(currentUser.id, storedCategory.CategoryName); } buttonText !.text = $"{(!Favorites.IsFavorite(currentUser.id, storedCategory.CategoryName) ? "Favorite to" : "Unfavorite from")} {storedCategory.CategoryName}"; if (FavCatSettings.IsHidePopupAfterFav) { availableListsMenu.Hide(); } },
private static void ShowIKTweaksMenu() { var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList); menu.AddSpacer(); menu.AddSpacer(); menu.AddSimpleButton("Open documentation in browser", () => Process.Start("https://github.com/knah/VRCMods#iktweaks")); menu.AddSpacer(); menu.AddSimpleButton("Adjust hand offsets", () => ShowHandsCalibrationMenu(IkTweaksSettings.HandPositionOffset, IkTweaksSettings.DefaultHandOffset, 0.001f, "Offsets:", (_, newOff) => VrIkHandling.HandOffsetsManager?.UpdatePositionOffset(_, newOff))); menu.AddSimpleButton("Adjust hand angles", () => ShowHandsCalibrationMenu(IkTweaksSettings.HandAngleOffset, IkTweaksSettings.DefaultHandAngle, 1, "Angles:", (_, newRot) => VrIkHandling.HandOffsetsManager?.UpdateRotationOffset(_, newRot))); menu.AddSpacer(); menu.AddSimpleButton("Close", menu.Hide); menu.Show(); }
private void ExportStyleClick() { var menu = ExpansionKitApi.CreateCustomFullMenuPopup(LayoutDescription.WideSlimList.With(numRows: 4, rowHeight: 100)); if (myStyleEngine == null) { menu.AddLabel("Styles are not loaded yet. Open quick menu once and try again!"); menu.AddSpacer(); menu.AddSpacer(); } else { menu.AddLabel("Are you sure you want to export the default UI skin? This process will freeze your game for a bit. It will be available in UserData/StyletorDefaultSkin."); menu.AddSpacer(); menu.AddSimpleButton("Yep, export it! No freeze can stop me!", DoSkinExport); } menu.AddSimpleButton("Close", menu.Hide); menu.Show(); }