示例#1
0
        public override void VRChat_OnUiManagerInit()
        {
            ShowUserMethod = typeof(QuickMenu).GetMethods().Where(it => it.GetParameters().Length == 2 && it.GetParameters()[0].ParameterType.ToString() == "System.Int32" && it.GetParameters()[1].ParameterType.ToString() == "System.Boolean").First();
            GameObject pageUserInfoObj = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo");

            if (pageUserInfoObj != null)
            {
                pageUserInfo = pageUserInfoObj.GetComponent <VRC.UI.PageUserInfo>();
                if (pageUserInfo != null)
                {
                    pageAvatar = Resources.FindObjectsOfTypeAll <VRC.UI.PageAvatar>().First(p => (p.transform.Find("Change Button") != null));
                    if (pageAvatar != null)
                    {
                        GameObject statspopup = GameObject.Find("UserInterface/MenuContent/Popups/AvatarStatsPopup");
                        if (statspopup != null)
                        {
                            Transform documentationbutton = statspopup.transform.Find("AvatarStatsMenu/_Buttons/DocumentationButton");
                            if (documentationbutton != null)
                            {
                                RectTransform recttrans = documentationbutton.GetComponent <RectTransform>();
                                if (recttrans != null)
                                {
                                    recttrans.sizeDelta     = new Vector2((recttrans.sizeDelta.x - 600), recttrans.sizeDelta.y);
                                    recttrans.localPosition = new Vector3((recttrans.localPosition.x - 300), recttrans.localPosition.y, recttrans.localPosition.z);
                                }

                                Transform buttontxt_trans = documentationbutton.Find("Text");
                                if (buttontxt_trans != null)
                                {
                                    Text buttontxt = buttontxt_trans.GetComponent <Text>();
                                    if (buttontxt != null)
                                    {
                                        buttontxt.fontSize -= 10;
                                    }
                                }

                                Transform buttonoverheadtxt_trans = documentationbutton.Find("Text (1)");
                                if (buttonoverheadtxt_trans != null)
                                {
                                    RectTransform recttranstxt = buttonoverheadtxt_trans.GetComponent <RectTransform>();
                                    if (recttranstxt != null)
                                    {
                                        recttranstxt.sizeDelta     = new Vector2((recttranstxt.sizeDelta.x + 600), recttranstxt.sizeDelta.y);
                                        recttranstxt.localPosition = new Vector3((recttranstxt.localPosition.x + 300), recttranstxt.localPosition.y, recttranstxt.localPosition.z);
                                    }
                                }

                                Transform showcreatorbutton_trans = DuplicateButton(documentationbutton, "Show Avatar Author", new Vector2(600, 0));
                                Button    showcreatorbutton       = showcreatorbutton_trans.GetComponent <Button>();
                                showcreatorbutton.onClick = new Button.ButtonClickedEvent();
                                showcreatorbutton.onClick.AddListener(DelegateSupport.ConvertDelegate <UnityAction>(new Action(() => {
                                    if ((pageUserInfo != null) && (pageAvatar != null) && (pageAvatar.field_Public_SimpleAvatarPedestal_0 != null))
                                    {
                                        VRC.Core.ApiAvatar currentApiAvatar = pageAvatar.field_Public_SimpleAvatarPedestal_0.field_Internal_ApiAvatar_0;
                                        if (currentApiAvatar != null)
                                        {
                                            string authorid = currentApiAvatar.authorId;
                                            if (!string.IsNullOrEmpty(authorid))
                                            {
                                                HideCurrentPopup();
                                                VRCUiManager.prop_VRCUiManager_0.Method_Public_Void_Boolean_1(true);
                                                VRC.Core.APIUser.FetchUser(authorid, new Action <VRC.Core.APIUser>((user) =>
                                                {
                                                    QuickMenu.prop_QuickMenu_0.prop_APIUser_0 = user;
                                                    ShowUserMethod.Invoke(QuickMenu.prop_QuickMenu_0, new object[] { 4, false });
                                                }), null);
                                            }
                                        }
                                    }
                                })));
                            }
                        }
                    }
                }
            }
        }
        IEnumerator WaitForUIManager()
        {
            yield return(VRCUiManagerUtils.WaitForUiManagerInit());

            GameObject pageUserInfoObj = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo");

            if (pageUserInfoObj != null)
            {
                pageUserInfo = pageUserInfoObj.GetComponent <VRC.UI.PageUserInfo>();
                if (pageUserInfo != null)
                {
                    pageAvatar = Resources.FindObjectsOfTypeAll <VRC.UI.PageAvatar>().First(p => (p.transform.Find("Change Button") != null));
                    if (pageAvatar != null)
                    {
                        GameObject statspopup = GameObject.Find("UserInterface/MenuContent/Popups/AvatarStatsPopup");
                        if (statspopup != null)
                        {
                            Transform documentationbutton = statspopup.transform.Find("AvatarStatsMenu/_Buttons/DocumentationButton");
                            if (documentationbutton != null)
                            {
                                RectTransform recttrans = documentationbutton.GetComponent <RectTransform>();
                                if (recttrans != null)
                                {
                                    recttrans.sizeDelta     = new Vector2((recttrans.sizeDelta.x - 600), recttrans.sizeDelta.y);
                                    recttrans.localPosition = new Vector3((recttrans.localPosition.x - 300), recttrans.localPosition.y, recttrans.localPosition.z);
                                }

                                Transform buttontxt_trans = documentationbutton.Find("Text");
                                if (buttontxt_trans != null)
                                {
                                    Text buttontxt = buttontxt_trans.GetComponent <Text>();
                                    if (buttontxt != null)
                                    {
                                        buttontxt.fontSize -= 10;
                                    }
                                }

                                Transform buttonoverheadtxt_trans = documentationbutton.Find("Text (1)");
                                if (buttonoverheadtxt_trans != null)
                                {
                                    RectTransform recttranstxt = buttonoverheadtxt_trans.GetComponent <RectTransform>();
                                    if (recttranstxt != null)
                                    {
                                        recttranstxt.sizeDelta     = new Vector2((recttranstxt.sizeDelta.x + 600), recttranstxt.sizeDelta.y);
                                        recttranstxt.localPosition = new Vector3((recttranstxt.localPosition.x + 300), recttranstxt.localPosition.y, recttranstxt.localPosition.z);
                                    }
                                }

                                Transform showcreatorbutton_trans = UnityUiUtils.DuplicateButton(documentationbutton, "Show Avatar Author", new Vector2(600, 0));
                                Button    showcreatorbutton       = showcreatorbutton_trans.GetComponent <Button>();
                                showcreatorbutton.onClick = new Button.ButtonClickedEvent();
                                showcreatorbutton.onClick.AddListener(() =>
                                {
                                    if ((pageUserInfo != null) && (pageAvatar != null) && (pageAvatar.avatar != null))
                                    {
                                        VRC.Core.ApiAvatar currentApiAvatar = pageAvatar.avatar.apiAvatar;
                                        if (currentApiAvatar != null)
                                        {
                                            string authorid = currentApiAvatar.authorId;
                                            if (!string.IsNullOrEmpty(authorid))
                                            {
                                                VRC.Core.APIUser.FetchUser(authorid, (VRC.Core.APIUser user) =>
                                                {
                                                    VRCUiManagerUtils.GetVRCUiManager().ShowScreen(pageUserInfo);
                                                    pageUserInfo.SetupUserInfo(user);
                                                    VRCUiPopupManagerUtils.GetVRCUiPopupManager().HideCurrentPopup();
                                                }, null);
                                            }
                                        }
                                    }
                                });
                            }
                        }
                    }
                }
            }
        }