public static void OpenUserWorldInWorldMenu() { UserInfoExtensionsMod.HideAllPopups(); string location; if (!Utilities.ActiveUser.IsSelf) { location = Utilities.ActiveUser.location; } else { location = APIUser.CurrentUser.location; } if (Utilities.userInfo.field_Private_ApiWorld_1 != null && !(string.IsNullOrEmpty(location) || location == "private")) { string processedLocation = Utilities.ActiveUser.location.Split(new char[] { ':' }, 2)[1]; int count; try { count = Utilities.userInfo.field_Private_ApiWorld_1.instances[processedLocation]; } catch { count = 0; } ApiWorldInstance instance = new ApiWorldInstance(Utilities.userInfo.field_Private_ApiWorld_1, processedLocation, count); Utilities.worldInfo.Method_Public_Void_ApiWorld_ApiWorldInstance_Boolean_Boolean_0(Utilities.userInfo.field_Private_ApiWorld_1, instance); VRCUiManager.prop_VRCUiManager_0.ShowScreenButton("UserInterface/MenuContent/Screens/WorldInfo"); } else { Utilities.OpenPopupV2("Notice", "Cannot grab this user's world", "Close", new Action(() => Utilities.ClosePopup())); } }
public static void OpenUserInBrowser() { UserInfoExtensionsMod.HideAllPopups(); System.Diagnostics.Process.Start("https://vrchat.com/home/user/" + Utilities.ActiveUser.id); Utilities.OpenPopupV2("Notice:", "User has been opened in the default browser", "Close", new Action(() => Utilities.ClosePopup())); }
public static void ShowBioLinksPopup() { UserInfoExtensionsMod.HideAllPopups(); if (Utilities.ActiveUser.bioLinks == null) { Utilities.OpenPopupV2("Notice:", "Cannot get users links", "Close", new Action(() => Utilities.ClosePopup())); } else { CheckLinks(Utilities.ActiveUser.bioLinks); if (Utilities.ActiveUser.bioLinks.Count == 0) { Utilities.OpenPopupV2("Notice:", "This user has no bio links", "Close", new Action(() => Utilities.ClosePopup())); } else if (bioLinks.Count == 0) { Utilities.OpenPopupV2("Notice:", "This user has invalid links", "Close", new Action(() => Utilities.ClosePopup())); } else { VRCUiManager.prop_VRCUiManager_0.ShowScreenButton("UserInterface/MenuContent/Popups/BioLinksPopup"); } } }
public static void ShowBioLanguagesPopup() { UserInfoExtensionsMod.HideAllPopups(); if (userLanguages == null || userLanguages.Count == 0) { Utilities.OpenPopupV2("Notice:", "This user has no bio languages", "Close", new Action(() => Utilities.ClosePopup())); } else { VRCUiManager.prop_VRCUiManager_0.ShowScreenButton("UserInterface/MenuContent/Popups/BioLanguagesPopup"); } }
public static void GetBio() { UserInfoExtensionsMod.HideAllPopups(); if (Utilities.ActiveUser.bio != null && Utilities.ActiveUser.bio.Length >= 100) { Utilities.OpenPopupV1("Bio:", Utilities.ActiveUser.bio, "Close", new Action(() => Utilities.ClosePopup())); } else { Utilities.OpenPopupV2("Bio:", Utilities.ActiveUser.bio, "Close", new Action(() => Utilities.ClosePopup())); } }
public static void FromAvatar() { UserInfoExtensionsMod.HideAllPopups(); if (!canGet) { Utilities.OpenPopupV2("Slow down!", "Please wait a little in between button presses", "Close", new Action(() => Utilities.ClosePopup())); return; } MelonCoroutines.Start(StartTimer()); isFromSocialPage = false; OpenUserInSocialMenu(avatarPage.field_Public_SimpleAvatarPedestal_0.field_Internal_ApiAvatar_0.authorId); }
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!"); }
public static void ToQuickMenu() { UserInfoExtensionsMod.HideAllPopups(); foreach (Player player in PlayerManager.field_Private_Static_PlayerManager_0.field_Private_List_1_Player_0) { if (player.field_Private_APIUser_0 == null) { continue; } if (player.field_Private_APIUser_0.id == Utilities.ActiveUser.id) { closeMenu.Invoke(VRCUiManager.prop_VRCUiManager_0, new object[] { true, false }); //Closes Big Menu openQuickMenu.Invoke(QuickMenu.prop_QuickMenu_0, new object[] { true }); //Opens Quick Menu QuickMenu.prop_QuickMenu_0.Method_Public_Void_Player_0(PlayerManager.Method_Public_Static_Player_String_0(Utilities.ActiveUser.id)); //Does the rest lmao return; } } Utilities.OpenPopupV2("Notice:", "You cannot show this user on the Quick Menu because they are not in the same instance", "Close", new Action(() => Utilities.ClosePopup())); }
public static async void FromSocial() { UserInfoExtensionsMod.HideAllPopups(); if (!canGet) { Utilities.OpenPopupV2("Slow down!", "Please wait a little in between button presses", "Close", new Action(() => Utilities.ClosePopup())); return; } MelonCoroutines.Start(StartTimer()); WebRequest request = WebRequest.Create(avatarLink.OriginalString); try { WebResponse response = await request.GetResponseAsync().NoAwait(); isFromSocialPage = true; StreamReader streamReader = new StreamReader(response.GetResponseStream()); JObject jsonData = JObject.Parse(streamReader.ReadToEnd()); JsonData requestedData = jsonData.ToObject <JsonData>(); await Utilities.YieldToMainThread(); OpenUserInSocialMenu(requestedData.ownerId); response.Close(); streamReader.Close(); } catch { Utilities.OpenPopupV2("Error!", "Something went wrong and the author could not be retreived. Please try again", "Close", new Action(() => Utilities.ClosePopup())); return; } }