Beispiel #1
0
        public override void OnApplicationStart()
        {
            ICustomLayoutedMenu settingsPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu);

            settingsPage.AddSimpleButton("Unblock unpack queue", Utilities.UnblockUnPackQueue);
            ExpansionKitApi.OnUiManagerInit += OnUiManagerInit;
        }
Beispiel #2
0
        public static void AddButtonToggleListItem(this ICustomLayoutedMenu list, string description, string submenu_name, Action on_button, Action <bool> set_value, Func <bool> get_value, bool update)
        {
            var obj = list.AddCustomButton(ButtonToggleItem);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure button */
                var button = obj.transform.GetChild(1);
                button.GetComponentInChildren <TMP_Text>().text = submenu_name;
                button.GetComponent <Button>().onClick.AddListener(on_button);

                /* Configure toggle */
                var toggle = obj.transform.GetChild(2).GetComponent <Toggle>();
                toggle.isOn = get_value();
                toggle.onValueChanged.AddListener(set_value);

                /* Configure updater */
                if (update)
                {
                    var updater = obj.AddComponent <Updater>();
                    updater.callback = () => { toggle.SetIsOnWithoutNotify(get_value()); };
                }
            };
        }
Beispiel #3
0
        public static void Initialize()
        {
            // Quickmenu
            ICustomLayoutedMenu userQuickMenuPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserQuickMenu);

            userQuickMenuPage.AddSimpleButton("AdvancedInvites\nBlacklist", () => BlacklistUser(CurrentSelectedUser));
            userQuickMenuPage.AddSimpleButton("AdvancedInvites\nWhitelist", () => WhitelistUser(CurrentSelectedUser));

            // User Details menu
            ICustomLayoutedMenu userDetailsMenuPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserDetailsMenu);

            userDetailsMenuPage.AddSimpleButton("AdvancedInvites\nBlacklist", () => BlacklistUser(CurrentSocialUser));
            userDetailsMenuPage.AddSimpleButton("AdvancedInvites\nWhitelist", () => WhitelistUser(CurrentSocialUser));

            // Social menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SocialMenu).AddSimpleButton("AdvancedInvites\nRemove...", ShowUsers);

            // Worlds Menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.WorldMenu).AddSimpleButton("AdvancedInvites\nRemove...", ShowWorlds);

            // World Details menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.WorldDetailsMenu).AddSimpleButton("AdvancedInvites\nBlacklist", BlacklistWorld);

            // Settings Menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu).AddSimpleButton(
                "AdvancedInvites\nReload Sounds",
                () => MelonCoroutines.Start(SoundPlayer.LoadNotificationSounds()));
        }
Beispiel #4
0
        public static void AddIntDiffListItem(this ICustomLayoutedMenu list, string description, Action <int> set_value, Func <int> get_value)
        {
            var obj = list.AddCustomButton(IntChanger);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure value field */
                var text_field = obj.transform.GetChild(1).GetComponent <TMP_Text>();
                text_field.text = get_value().ToString();

                /* Configure updater */
                var updater = obj.AddComponent <Updater>();
                updater.callback = () => { text_field.text = get_value().ToString(); };

                /* Configure buttons */
                Action ConstructChangeCallback(int diff)
                {
                    return(() =>
                    {
                        var value = get_value() + diff;
                        set_value.Invoke(value);
                        text_field.text = value.ToString();
                    });
                }

                obj.transform.GetChild(2).GetComponent <Button>().onClick.AddListener(ConstructChangeCallback(-1));
                obj.transform.GetChild(3).GetComponent <Button>().onClick.AddListener(ConstructChangeCallback(1));
            };
        }
Beispiel #5
0
        public static void Init()
        {
            enableAlwaysOnButton  = CloningBeGoneMod.category.CreateEntry(nameof(enableAlwaysOnButton), true, "Enable/Disable the \"Always have cloning on with this avatar\" button");
            enableAlwaysOffButton = CloningBeGoneMod.category.CreateEntry(nameof(enableAlwaysOffButton), true, "Enable/Disable the \"Always have cloning off with this avatar\" button");
            enableAlwaysOnButton.OnValueChangedUntyped  += OnPrefChanged;
            enableAlwaysOffButton.OnValueChangedUntyped += OnPrefChanged;

            UiManager.OnQuickMenuIndexSet += OnSetMenuIndexCalled;

            ICustomLayoutedMenu menu = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.QuickMenu);

            menu.AddToggleButton("Always have cloning on with this avatar", new Action <bool>((state) =>
            {
                if (ignore)
                {
                    return;
                }

                if (state)
                {
                    CloningBeGoneMod.cloningOnAvatars.Value.Add(Player.prop_Player_0.prop_ApiAvatar_0.id);
                }
                else
                {
                    CloningBeGoneMod.cloningOnAvatars.Value.Remove(Player.prop_Player_0.prop_ApiAvatar_0.id);
                }

                if (RoomManager.field_Internal_Static_ApiWorldInstance_0 != null)
                {
                    CloningBeGoneMod.CheckAccessType(RoomManager.field_Internal_Static_ApiWorldInstance_0.type);
                }
                CloningBeGoneMod.OnAvatarInstantiated(Player.prop_Player_0.prop_ApiAvatar_0);
            }), null, new Action <GameObject>((gameObject) => { alwaysOnButton = gameObject; alwaysOnButton?.SetActive(enableAlwaysOnButton.Value); }));

            menu.AddToggleButton("Always have cloning off with this avatar", new Action <bool>((state) =>
            {
                if (ignore)
                {
                    return;
                }

                if (state)
                {
                    CloningBeGoneMod.cloningOffAvatars.Value.Add(Player.prop_Player_0.prop_ApiAvatar_0.id);
                }
                else
                {
                    CloningBeGoneMod.cloningOffAvatars.Value.Remove(Player.prop_Player_0.prop_ApiAvatar_0.id);
                }

                if (RoomManager.field_Internal_Static_ApiWorldInstance_0 != null)
                {
                    CloningBeGoneMod.CheckAccessType(RoomManager.field_Internal_Static_ApiWorldInstance_0.type);
                }
                CloningBeGoneMod.OnAvatarInstantiated(Player.prop_Player_0.prop_ApiAvatar_0);
            }), null, new Action <GameObject>((gameObject) => { alwaysOffButton = gameObject; alwaysOffButton?.SetActive(enableAlwaysOnButton.Value); }));
        }
Beispiel #6
0
        private static void AddGenericHeader(this ICustomLayoutedMenu menu, GameObject layout, string header)
        {
            var obj = menu.AddCustomButton(layout);

            obj.OnInstanceCreated += obj =>
            {
                obj.GetComponentInChildren <TMP_Text>().text = header;
            };
        }
        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!");
        }
Beispiel #8
0
        public static void AddSliderListItem(this ICustomLayoutedMenu list, string description, Action <float> set_value, Func <float> get_value, float min = -1.0f, float max = 1.0f)
        {
            var obj = list.AddCustomButton(FloatSlider);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure slider */
                var slider = obj.transform.GetChild(1).GetComponent <Slider>();
                slider.minValue = min;
                slider.maxValue = max;
                slider.value    = get_value();
                slider.onValueChanged.AddListener(set_value);

                /* Configure updater */
                var updater = obj.AddComponent <Updater>();
                updater.callback = () => { slider.SetValueWithoutNotify(get_value()); };
            };
        }
Beispiel #9
0
        public static void Initialize()
        {
            // Quickmenu
            ICustomLayoutedMenu userQuickMenuPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserQuickMenu);

            userQuickMenuPage.AddSimpleButton("AdvancedInvites\nBlacklist", () => BlacklistUser(CurrentSelectedUser));
            userQuickMenuPage.AddSimpleButton("AdvancedInvites\nWhitelist", () => WhitelistUser(CurrentSelectedUser));

            // User Details menu
            ICustomLayoutedMenu userDetailsMenuPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserDetailsMenu);

            userDetailsMenuPage.AddSimpleButton("AdvancedInvites\nBlacklist", () => BlacklistUser(CurrentSocialUser));
            userDetailsMenuPage.AddSimpleButton("AdvancedInvites\nWhitelist", () => WhitelistUser(CurrentSocialUser));

            // Social menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SocialMenu).AddSimpleButton("AdvancedInvites\nRemove...", ShowUsers);

            // Worlds Menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.WorldMenu).AddSimpleButton("AdvancedInvites\nRemove...", ShowWorlds);

            // World Details menu
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.WorldDetailsMenu).AddSimpleButton("AdvancedInvites\nBlacklist", BlacklistWorld);
        }
Beispiel #10
0
        public static void AddDropdownListItem(this ICustomLayoutedMenu list, string description, Type values, Action <int> on_change, int initial_state)
        {
            var obj = list.AddCustomButton(DropdownListItem);

            obj.OnInstanceCreated += (GameObject obj) =>
            {
                /* Add description text */
                obj.transform.GetChild(0).GetComponent <TMP_Text>().text = description;

                /* Configure Enum Dropdown */
                var dropdown = obj.transform.GetChild(1).GetComponent <TMP_Dropdown>();
                var options  = new Il2CppSystem.Collections.Generic.List <string> {
                };
                foreach (var name in Enum.GetNames(values))
                {
                    options.Add(name);
                }
                dropdown.ClearOptions();
                dropdown.AddOptions(options);
                dropdown.value = initial_state;
                dropdown.onValueChanged.AddListener(on_change);
            };
        }
Beispiel #11
0
        public override void OnApplicationStart()
        {
            ICustomLayoutedMenu settingsPage = ExpansionKitApi.GetExpandedMenu(ExpandedMenu.SettingsMenu);

            settingsPage.AddSimpleButton("Unblock unpack queue", delegate { Utilities.UnblockUnPackQueue(); });
        }
Beispiel #12
0
 public static void AddCategoryHeader(this ICustomLayoutedMenu menu, string header)
 {
     menu.AddGenericHeader(CategoryHeader, header);
 }
Beispiel #13
0
 public static void AddFloatDiffListItem(this ICustomLayoutedMenu list, string description, Action <float> set_value, Func <float> get_value)
 {
     AddIntDiffListItem(list, description, (val) => set_value((float)val), () => { return((int)get_value()); });
 }