Example #1
0
File: Main.cs Project: VRCMG/VRMods
        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());
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }
Example #6
0
        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>()));
        }
Example #7
0
        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();
        }
Example #8
0
        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();
            }));
        }
Example #9
0
        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();
        }
Example #10
0
        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();
                }
            }));
        }
Example #12
0
        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();
                }
            }));
        }
Example #13
0
File: Main.cs Project: VRCMG/VRMods
        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());
        }
Example #14
0
        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();
        }
Example #15
0
        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();
        }
Example #16
0
        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();
        }
Example #17
0
        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();
        }
Example #18
0
        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();
        }
Example #19
0
        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();
        }
Example #20
0
        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();
        }
Example #21
0
        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();
        }
Example #22
0
        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();
        }
Example #23
0
        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();
        }
Example #24
0
        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());
        }
Example #25
0
        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();
                }
            }));
        }
Example #26
0
        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!");
        }
Example #28
0
        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();
                    }
                },
Example #29
0
        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();
        }
Example #30
0
        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();
        }