コード例 #1
0
        private void LoadUserInfoScreen()
        {
            // Refresh Button
            VRCEUiButton btnRefresh = new VRCEUiButton("refresh", new Vector2(0f, 0f), "Refresh");

            btnRefresh.OnClick += () =>
            {
                if (string.IsNullOrEmpty(PageUserInfo.userIdOfLastUserPageInfoViewed))
                {
                    return;
                }
                string id = PageUserInfo.userIdOfLastUserPageInfoViewed;

                ApiCache.Invalidate <APIUser>(id);
                APIUser.FetchUser(id, user =>
                {
                    PageUserInfo pageUserInfo = VRCEUi.UserInfoScreen.GetComponent <PageUserInfo>();

                    if (pageUserInfo != null)
                    {
                        pageUserInfo.SetupUserInfo(user);
                    }
                },
                                  error =>
                                  VRCModLogger.LogError($"Failed to fetch user of id {id}: {error}"));
            };
            VRCMenuUtilsAPI.AddUserInfoButton(btnRefresh);
        }
コード例 #2
0
 public static DownloadInfo CreateUserPageDownloadInfo(
     ApiWorld ApiWorld,
     string InstanceIDTags,
     DownloadType DownloadType,
     PageUserInfo PageUserInfo)
 {
     return(new DownloadInfo(ApiWorld, InstanceIDTags, DownloadType, PageUserInfo));
 }
コード例 #3
0
        private static IEnumerator UpdateUserFromPage(PageUserInfo pageUserInfo)
        {
            yield return(new WaitForSeconds(.5f));

            ourHideAuthorTextSink(
                AvatarHiding.ourBlockedAvatarAuthors.ContainsKey(pageUserInfo.field_Private_APIUser_0?.id ?? "")
                    ? "Unhide all avatars by this author"
                    : "Hide all avatars by this author");
        }
コード例 #4
0
        public void LoadModuleLandingPage()
        {
            try
            {
                switch (currMODULE)
                {
                case APP_MODULES.ADMIN:
                    pageADMIN = new pageADMINLanding();
                    this.Controls.Add(pageADMIN);
                    pageADMIN.Dock = DockStyle.Fill;
                    break;

                case APP_MODULES.CRM:
                    pageCRM = new pageCRMLanding();
                    this.Controls.Add(pageCRM);
                    pageCRM.Dock = DockStyle.Fill;
                    break;

                case APP_MODULES.PMC:
                    pagePMC = new pagePMC();
                    this.Controls.Add(pagePMC);
                    pagePMC.Dock = DockStyle.Fill;
                    break;

                case APP_MODULES.MASTERS:
                    pageMASTER = new pageMASTERS();
                    this.Controls.Add(pageMASTER);
                    pageMASTER.Dock = DockStyle.Fill;
                    break;

                case APP_MODULES.HR:
                    pageHR = new pageHRLanding();
                    this.Controls.Add(pageHR);
                    pageHR.Dock = DockStyle.Fill;
                    break;

                case APP_MODULES.USER_INFO:
                    pageMY_INFO = new PageUserInfo();
                    this.Controls.Add(pageMY_INFO);
                    pageMY_INFO.Dock = DockStyle.Fill;
                    break;
                }
            }
            catch (Exception ex)
            {
                string errMessage = ex.Message;
                if (ex.InnerException != null)
                {
                    errMessage += string.Format("\n{0}", ex.InnerException.Message);
                }
                MessageBox.Show(errMessage, "frmMODULE::LoadModuleLandingPage", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
コード例 #5
0
        private static void OnPageShown(VRCUiPage obj)
        {
            var userPage = obj.TryCast <PageUserInfo>();

            if (userPage == null)
            {
                return;
            }
            ourUserInfoPage = userPage;

            MelonCoroutines.Start(UpdateUserFromPage(userPage));
        }
コード例 #6
0
ファイル: SendInvite.cs プロジェクト: yamiM0NSTER/client
        private void SendInvite_Tick()
        {
            PageUserInfo pageUserInfo = (PageUserInfo)VRCUiManagerWrappers.Instance.GetPage("UserInterface/MenuContent/Screens/UserInfo");

            if (pageUserInfo != null && pageUserInfo.GetShown())
            {
                Button button = GetInviteButton(pageUserInfo);

                if (button != null)
                {
                    button.interactable = true;
                }
            }
        }
コード例 #7
0
        private static void SetupUserInfo(PageUserInfo __instance)
        {
            SelectedAPI = __instance.user;
            ExtendedUser eUser = ExtendedServer.Users.FirstOrDefault(a => a.UniqueID == SelectedAPI.id);

            VRCExtended.ToggleUserInfoMore(false);
            VRCEUi.InternalUserInfoScreen.Moderator.gameObject.SetActive(false);
            if (APIUser.CurrentUser.id == __instance.user.id)
            {
                VRCExtended.UserInfoLastLogin.Text.text      = "";
                VRCExtended.UserInfoMore.Button.interactable = false;
            }
            else
            {
                APIUser.FetchUser(__instance.user.id, (APIUser user) =>
                {
                    if (string.IsNullOrEmpty(user.last_login))
                    {
                        return;
                    }
                    DateTime dt = DateTime.Parse(user.last_login);

                    if (ModPrefs.GetBool("vrcextended", "useDTFormat"))
                    {
                        VRCExtended.UserInfoLastLogin.Text.text = "Last login: "******"MM.dd.yyyy hh:mm tt");
                    }
                    else
                    {
                        VRCExtended.UserInfoLastLogin.Text.text = "Last login: "******"dd.MM.yyyy hh:mm");
                    }
                },
                                  (string error) =>
                {
                    ExtendedLogger.LogError(error);
                });
                VRCExtended.UserInfoMore.Button.interactable = true;

                if (eUser != null)
                {
                    VRCExtended.UserInfoColliderControl.Button.interactable = true;
                    VRCExtended.UserInfoColliderControl.Text.text           = (eUser.HasColliders ? "Disable colliders" : "Enable colliders");
                }
                else
                {
                    VRCExtended.UserInfoColliderControl.Button.interactable = false;
                    VRCExtended.UserInfoColliderControl.Text.text           = "Not in world!";
                }
            }
        }
コード例 #8
0
ファイル: SendInvite.cs プロジェクト: yamiM0NSTER/client
        Button GetInviteButton(PageUserInfo pageUserInfo)
        {
            if (m_inviteButton == null)
            {
                List <VRCUiButton> componentsInChildren = pageUserInfo.GetComponentsInChildren <VRCUiButton>().ToList();

                VRCUiButton vrcuiButton = componentsInChildren.Where((button, val) =>
                                                                     button.GetComponentInChildren <Button>().GetComponentInChildren <Text>().text == "Invite" ||
                                                                     button.GetComponentInChildren <Button>().GetComponentInChildren <Text>().text == "Invite Sent"
                                                                     ).FirstOrDefault <VRCUiButton>();

                m_inviteButton = vrcuiButton.GetComponent <Button>();
            }

            return(m_inviteButton);
        }
コード例 #9
0
 public DownloadInfo(
     ApiWorld ApiWorld,
     string InstanceIDTags,
     DownloadType DownloadType,
     PageUserInfo PageUserInfo   = null,
     PageWorldInfo PageWorldInfo = null,
     Notification Notification   = null)
 {
     this.ApiWorld       = ApiWorld;
     this.InstanceIDTags = InstanceIDTags;
     this.DownloadType   = DownloadType;
     this.PageUserInfo   = PageUserInfo;
     if (PageUserInfo != null)
     {
         this.APIUser = PageUserInfo.field_Public_APIUser_0;
     }
     this.PageWorldInfo = PageWorldInfo;
     this.Notification  = Notification;
 }
コード例 #10
0
ファイル: FavCatMod.cs プロジェクト: knah/VRCMods
        public void OnUiManagerInit()
        {
            AssetsHandler.Load();

            try
            {
                if (FavCatSettings.EnableAvatarFavs.Value)
                {
                    AvatarModule = new AvatarModule();
                }
            }
            catch (Exception ex)
            {
                MelonLogger.Error($"Exception in avatar module init: {ex}");
            }

            try
            {
                if (FavCatSettings.EnableWorldFavs.Value)
                {
                    WorldsModule = new WorldsModule();
                }
            }
            catch (Exception ex)
            {
                MelonLogger.Error($"Exception in world module init: {ex}");
            }

            try
            {
                if (FavCatSettings.EnablePlayerFavs.Value)
                {
                    PlayerModule = new PlayersModule();
                }
            }
            catch (Exception ex)
            {
                MelonLogger.Error($"Exception in player module init: {ex}");
            }

            PageUserInfo = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo").GetComponent <PageUserInfo>();
            MelonLogger.Msg("Initialized!");
        }
コード例 #11
0
        private void AddUserInfoButtons()
        {
            if (VRCEUi.UserInfoScreen == null)
            {
                ExtendedLogger.LogError("Failed to find UserInfo screen!");
                return;
            }

            Transform btnPlaylists = VRCEUi.InternalUserInfoScreen.PlaylistsButton;
            Transform btnFavorite  = VRCEUi.InternalUserInfoScreen.FavoriteButton;
            Transform btnReport    = VRCEUi.InternalUserInfoScreen.ReportButton;

            if (btnPlaylists == null || btnFavorite == null || btnReport == null)
            {
                ExtendedLogger.LogError("Failed to get required button!");
                return;
            }
            Vector3 pos = btnPlaylists.GetComponent <RectTransform>().localPosition;

            UserInfoLastLogin = new VRCEUiText("LastLoginText", new Vector2(-470f, -130f), "", VRCEUi.UserInfoScreen.transform);
            UserInfoLastLogin.Text.fontSize -= 20;

            UserInfoMore = new VRCEUiButton("More", new Vector2(pos.x, pos.y + 75f), "More", VRCEUi.InternalUserInfoScreen.UserPanel);
            UserInfoMore.Button.onClick.AddListener(() =>
            {
                if (Patch_PageUserInfo.SelectedAPI == null)
                {
                    return;
                }
                ToggleUserInfoMore(UserInfoMore.Text.text == "More");
            });

            UserInfoColliderControl = new VRCEUiButton("ColliderControl", new Vector2(pos.x, pos.y - 75f), "Not in world!", VRCEUi.InternalUserInfoScreen.UserPanel);
            UserInfoColliderControl.Control.gameObject.SetActive(false);
            UserInfoColliderControl.Button.onClick.AddListener(() =>
            {
                if (Patch_PageUserInfo.SelectedAPI == null)
                {
                    return;
                }
                ExtendedUser user = ExtendedServer.Users.FirstOrDefault(a => a.APIUser.id == Patch_PageUserInfo.SelectedAPI.id);

                if (user == null)
                {
                    return;
                }
                user.HasColliders = !user.HasColliders;
                UserInfoColliderControl.Text.text = (user.HasColliders ? "Disable colliders" : "Enable colliders");
            });

            UserInfoRefresh = new VRCEUiButton("Refresh", new Vector2(pos.x, pos.y), "Refresh", VRCEUi.InternalUserInfoScreen.UserPanel);
            UserInfoRefresh.Control.gameObject.SetActive(false);
            UserInfoRefresh.Button.onClick.AddListener(() =>
            {
                if (Patch_PageUserInfo.SelectedAPI == null)
                {
                    return;
                }

                ApiCache.Invalidate <APIUser>(Patch_PageUserInfo.SelectedAPI.id);
                APIUser.FetchUser(Patch_PageUserInfo.SelectedAPI.id, (APIUser user) =>
                {
                    PageUserInfo pageUserInfo = VRCEUi.UserInfoScreen.GetComponent <PageUserInfo>();
                    if (pageUserInfo != null)
                    {
                        pageUserInfo.SetupUserInfo(user);
                    }
                },
                                  (string error) =>
                {
                    ExtendedLogger.LogError(error);
                });
            });
            ExtendedLogger.Log("Setup PageUserInfo!");
        }
コード例 #12
0
 public static void LoadUser(this PageUserInfo pageUserInfo, APIUser apiUser)
 {
     Delegates.GetLoadUserDelegate(pageUserInfo, apiUser);
 }
コード例 #13
0
ファイル: Utilities.cs プロジェクト: VRCMG/UserInfoExtensions
 public static void UiInit()
 {
     menuController = QuickMenu.prop_QuickMenu_0.field_Public_MenuController_0;
     worldInfo      = GameObject.Find("UserInterface/MenuContent/Screens/WorldInfo").GetComponent <PageWorldInfo>();
     userInfo       = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo").GetComponent <PageUserInfo>();
 }
コード例 #14
0
ファイル: PlayersModule.cs プロジェクト: TheSteppe/VRCMods
        public PlayersModule() : base(ExpandedMenu.SocialMenu, FavCatMod.Database.PlayerFavorites, GetListsParent(), false)
        {
            ExpansionKitApi.GetExpandedMenu(ExpandedMenu.UserDetailsMenu).AddSimpleButton("Local Favorite", ShowFavMenu);

            PageUserInfo = GameObject.Find("UserInterface/MenuContent/Screens/UserInfo").GetComponent <PageUserInfo>();
        }
コード例 #15
0
        private static IEnumerator UpdateUserFromPage(PageUserInfo pageUserInfo)
        {
            yield return(new WaitForSeconds(.5f));

            ourBigMenuHideText.text = AvatarHiding.ourBlockedAvatarAuthors.ContainsKey(pageUserInfo.user?.id ?? "") ? "Unhide all avatars by this author" : "Hide all avatars by this author";
        }
コード例 #16
0
ファイル: Main.cs プロジェクト: Katistic/AvatarStuff
        public override void VRChat_OnUiManagerInit()
        {
            string DoubleStandards = "emmVRC can be obfuscated but this can't be? Thats a bit shitty.";

            baseButton = Sub.GetUiObject("/Avatar/Stats Button");

            GameObject listObj = Sub.CreateObjectFrom(Sub.GetUiObject("/Avatar").transform.Find("Vertical Scroll View/Viewport/Content").transform.Find("Favorite Avatar List").gameObject);

            listObj.transform.Find("Button").GetComponentInChildren <Text>().text = "Public Avatar List";
            listObj.transform.SetSiblingIndex(0);
            listObj.SetActive(false);

            UiAvatarList listListObj = listObj.GetComponent <UiAvatarList>();

            listListObj.category = (UiAvatarList.EnumNPublicSealedvaInPuMiFaSpClPuLi9vUnique) 4;
            listListObj.StopAllCoroutines();

            Sub.CreateAvatarButton("Get Public Avatars", -(baseButton.GetComponent <RectTransform>().sizeDelta.x) - 10f, 0f, delegate()
            {
                Log("Get Public Avatars button (Avatar Menu) clicked!", true);

                ApiAvatar currentAvatar = listListObj.avatarPedestal.field_Internal_ApiAvatar_0;
                System.Collections.Generic.List <ApiAvatar> avatars = Sub.GetPublicAvatars(currentAvatar.authorId);

                MelonModLogger.Log("Got " + avatars.Count.ToString() + " Public Avatars for user " + currentAvatar.authorName);

                listObj.transform.Find("Button").GetComponentInChildren <Text>().text = "Public Avatars for user " + currentAvatar.authorName;
                listObj.SetActive(true);
                listListObj.field_Private_Dictionary_2_String_ApiAvatar_0.Clear();

                string[] arr = (from avatar in avatars select avatar.id).ToArray();
                foreach (ApiAvatar avatar in avatars)
                {
                    listListObj.field_Private_Dictionary_2_String_ApiAvatar_0.Add(avatar.id, avatar);
                }
                listListObj.specificListIds = arr;
                listListObj.Method_Protected_Abstract_Virtual_New_Void_Int32_0(0);
            }, false, "/Avatar/Favorite Button", 300f);

            Sub.CreateAvatarButton("Random Public Avatar", -(baseButton.GetComponent <RectTransform>().sizeDelta.x) - 10f, 80f, delegate()
            {
                Log("Random Public Avatar button clicked!", true);

                Sub.SwitchPedestalToRandomPublicAvatar();
            }, false, "/Avatar/Favorite Button", 300f);

            Button     SocialAvatarButton = new Button(); // Placehold
            GameObject SocialAvatarObj;

            (SocialAvatarButton, SocialAvatarObj) = Sub.CreateSocialButton("Get Public Avatars", 215f, 19f, delegate()
            {
                Log("Get Public Avatars button (Social Menu) clicked!", true);

                PageUserInfo userInfo = GameObject.Find("Screens").transform.Find("UserInfo").transform.GetComponentInChildren <PageUserInfo>();
                System.Collections.Generic.List <ApiAvatar> avatars = Sub.GetPublicAvatars(userInfo.user.id);

                MelonModLogger.Log("Got " + avatars.Count.ToString() + " Public Avatars for user " + userInfo.user.displayName);

                if (avatars.Count == 0)
                {
                    Sub.DoErrorPopup("Public Avatars for " + userInfo.user.displayName, "No public avatars were found for " + userInfo.user.displayName);
                    return;
                }

                listObj.transform.Find("Button").GetComponentInChildren <Text>().text = "Public Avatars for user " + userInfo.user.displayName;
                listObj.SetActive(true);
                listListObj.field_Private_Dictionary_2_String_ApiAvatar_0.Clear();

                string[] arr = (from avatar in avatars select avatar.id).ToArray();
                foreach (ApiAvatar avatar in avatars)
                {
                    listListObj.field_Private_Dictionary_2_String_ApiAvatar_0.Add(avatar.id, avatar);
                }
                listListObj.specificListIds = arr;
                listListObj.Method_Protected_Abstract_Virtual_New_Void_Int32_0(0);

                // Switch to avatar page
                VRCUiManager.prop_VRCUiManager_0.Method_Public_VRCUiPage_VRCUiPage_0(Sub.GetUiObject("/Avatar").gameObject.GetComponentInChildren <VRCUiPage>());
            }, xsize: 200f);

            Sub.CreateSlider(Sub.GetUiObject("/Avatar/Stats Button").transform.parent, baseButton.transform.localPosition.x, baseButton.transform.localPosition.y + (80f * 3), baseButton.GetComponent <RectTransform>().sizeDelta.x, 0f, 360f, delegate(float val)
            {
                Log("Slider value changed to " + val.ToString(), true);
                try
                {
                    Transform tf = GameObject.Find("Screens").transform.Find("Avatar").GetComponent <PageAvatar>().avatar.field_Private_GameObject_0.transform;

                    tf.localRotation = Quaternion.Euler(new Vector3(0, tf.localRotation.eulerAngles.y + (val - lastVal), 0));

                    lastVal         = val;
                    skipRotationFix = true;
                }
                catch (Exception e)
                {
                    WarnLog("Failed to change avatar preview rotation.", true);
                }
            }, 180f);

            emmCheck = true;
        }
コード例 #17
0
ファイル: DownloadInfo.cs プロジェクト: gompocp/VRChatMods
 public DownloadInfo(
     ApiWorld ApiWorld,
     string InstanceIDTags,
     DownloadType DownloadType,
     PageUserInfo PageUserInfo   = null !,