public static void CheckAccessType(ApiWorldInstance.AccessType accessType) { switch (accessType) { case ApiWorldInstance.AccessType.Public: SetCloning(PublicCloningSetting.Value); break; case ApiWorldInstance.AccessType.FriendsOfGuests: SetCloning(FriendsPlusCloningSetting.Value); break; case ApiWorldInstance.AccessType.FriendsOnly: SetCloning(FriendsCloningSetting.Value); break; case ApiWorldInstance.AccessType.InvitePlus: SetCloning(InvitePlusCloningSetting.Value); break; case ApiWorldInstance.AccessType.InviteOnly: SetCloning(InviteCloningSetting.Value); break; } }
public static void OnInstanceChange(ApiWorldInstance __1) { if (__1 != null) { currentAccessType = __1.InstanceType; } }
private IEnumerable <ApiWorldInstance> GetViableInstances(string forUserId, List <string> instanceIdsToIgnore = null, bool excludePublicInstances = false, bool includePublicInstancesOnly = false) { if (instanceIdsToIgnore == null) { instanceIdsToIgnore = new List <string>(); } if (worldInstances != null) { List <ApiWorldInstance> list = new List <ApiWorldInstance>(); for (int i = 0; i < worldInstances.Count; i++) { ApiWorldInstance apiWorldInstance = worldInstances[i]; int num = Mathf.Min(capacity, Mathf.Max(6, Mathf.FloorToInt((float)capacity * 0.66f))); ApiWorldInstance.AccessType accessType = apiWorldInstance.GetAccessType(); string instanceCreator = apiWorldInstance.GetInstanceCreator(); bool flag = accessType == ApiWorldInstance.AccessType.Public || accessType == ApiWorldInstance.AccessType.FriendsOfGuests; if (apiWorldInstance.count < capacity && apiWorldInstance.count < num && !instanceIdsToIgnore.Contains(apiWorldInstance.idWithTags) && !instanceIdsToIgnore.Contains(apiWorldInstance.idOnly) && accessType != ApiWorldInstance.AccessType.InviteOnly && accessType != ApiWorldInstance.AccessType.InvitePlus && (flag || !includePublicInstancesOnly) && (!excludePublicInstances || !flag) && (accessType != ApiWorldInstance.AccessType.FriendsOnly || APIUser.IsFriendsWith(instanceCreator)) && (accessType != ApiWorldInstance.AccessType.FriendsOfGuests || (instanceCreator != null && !(instanceCreator != forUserId)))) { list.Add(apiWorldInstance); } } return(from instance in list orderby instance.count descending select instance); } return(new ApiWorldInstance[0]); }
public static string GetAccessName(ApiWorldInstance.AccessType accessType) { return(accessType switch { ApiWorldInstance.AccessType.Public => "Public", ApiWorldInstance.AccessType.FriendsOfGuests => "Friends+", ApiWorldInstance.AccessType.FriendsOnly => "Friends Only", ApiWorldInstance.AccessType.InviteOnly => "Invite Only", ApiWorldInstance.AccessType.InvitePlus => "Invite+", ApiWorldInstance.AccessType.Counter => "Coun... wait wut?", _ => throw new ArgumentOutOfRangeException(nameof(accessType), accessType, "what the f**k happened?") });
public static void HandleInvite(Notification notification) { currentNotification = notification; worldId = notification.details["worldId"].ToString().Split(':')[0]; // hmm it gets sent but it's not included when accepting an invite..... if (notification.details.ContainsKey("instanceId")) { string[] instanceIdDetails = notification.details["instanceId"].ToString().Split(':'); instanceIdWithTags = instanceIdDetails.Length > 0 ? instanceIdDetails[1] : instanceIdDetails[0]; } else { instanceIdWithTags = notification.details["worldId"].ToString().Split(':')[1]; } ApiWorldInstance.AccessType accessType = Utilities.GetAccessType(instanceIdWithTags); var worldName = notification.details["worldName"].ToString(); string instanceType = Utilities.GetAccessName(accessType); switch (accessType) { case ApiWorldInstance.AccessType.Public: case ApiWorldInstance.AccessType.FriendsOfGuests: case ApiWorldInstance.AccessType.InvitePlus: Utilities.ShowPopupWindow( Localization.GetTitle(notification.senderUsername, worldName, instanceType), Localization.GetPublicPopup(notification.senderUsername, worldName, instanceType), Localization.GetJoinButton(), JoinYourself, Localization.GetDropPortalButton(), DropPortal); break; case ApiWorldInstance.AccessType.FriendsOnly: case ApiWorldInstance.AccessType.InviteOnly: Utilities.ShowPopupWindow( Localization.GetTitle(notification.senderUsername, worldName, instanceType), Localization.GetPrivatePopup(notification.senderUsername, worldName, instanceType), Localization.GetJoinButton(), JoinYourself); break; default: Utilities.ShowAlert("Error Getting AccessType", "Did you accept a message?"); break; } }
public static void RoomChanged(string worldName, string roomId, ApiWorldInstance.AccessType accessType, int maxPlayers) { if (!running) { return; } if (!roomId.Equals("")) { if (accessType == ApiWorldInstance.AccessType.InviteOnly || accessType == ApiWorldInstance.AccessType.InvitePlus) { presence.state = "In a private world"; presence.partyId = ""; } else { string accessString = " [Unknown]"; if (accessType == ApiWorldInstance.AccessType.FriendsOfGuests) { accessString = " [Friends+]"; } else if (accessType == ApiWorldInstance.AccessType.FriendsOnly) { accessString = " [Friends]"; } else if (accessType == ApiWorldInstance.AccessType.Public) { accessString = ""; } presence.state = "in " + worldName + accessString; presence.partyId = roomId; presence.partyMax = maxPlayers; } } else { presence.state = "Not in a world"; presence.partyId = ""; presence.partyMax = 0; } DiscordRpc.UpdatePresence(ref presence); }
public static void HandleInvite(Notification notification) { currentNotification = notification; worldId = notification.details["worldId"].ToString().Split(':')[0]; // Whenever vrchat moves away from keeping both same and actually do keep instance as instance only string[] instanceIdDetails = notification.details["instanceId"].ToString().Split(':'); instanceIdWithTags = instanceIdDetails.Length > 0 ? instanceIdDetails[1] : instanceIdDetails[0]; ApiWorldInstance.AccessType accessType = Utilities.GetAccessType(instanceIdWithTags); var worldName = notification.details["worldName"].ToString(); string instanceType = Utilities.GetAccessName(accessType); switch (accessType) { case ApiWorldInstance.AccessType.Public: case ApiWorldInstance.AccessType.FriendsOfGuests: case ApiWorldInstance.AccessType.InvitePlus: Utilities.ShowPopupWindow( Localization.GetTitle(notification.senderUsername, worldName, instanceType), Localization.GetPublicPopup(notification.senderUsername, worldName, instanceType), Localization.GetJoinButton(), JoinYourself, Localization.GetDropPortalButton(), DropPortal); break; case ApiWorldInstance.AccessType.FriendsOnly: case ApiWorldInstance.AccessType.InviteOnly: Utilities.ShowPopupWindow( Localization.GetTitle(notification.senderUsername, worldName, instanceType), Localization.GetPrivatePopup(notification.senderUsername, worldName, instanceType), Localization.GetJoinButton(), JoinYourself); break; default: Utilities.ShowAlert("Error Getting AccessType", "Did you accept a message?"); break; } }
// Token: 0x06000C5F RID: 3167 RVA: 0x000204F4 File Offset: 0x0001E6F4 public static string GetWorldInstanceType(ApiWorldInstance.AccessType accessType) { string result; switch (accessType) { //les info de room case ApiWorldInstance.AccessType.Public: result = "Public"; break; case ApiWorldInstance.AccessType.FriendsOfGuests: result = "Friends of Guests"; break; case ApiWorldInstance.AccessType.FriendsOnly: result = "Friends Only"; break; case ApiWorldInstance.AccessType.InviteOnly: result = "Invite Only"; break; case ApiWorldInstance.AccessType.InvitePlus: result = "Invite+"; break; case ApiWorldInstance.AccessType.Counter: result = "Counter"; break; default: result = "none"; break; } return(result); }
public static string RoomChanged(string worldName, string worldAndRoomId, string roomIdWithTags, ApiWorldInstance.AccessType accessType, int maxPlayers) { if (!running) { return(null); } if (!worldAndRoomId.Equals("")) { if (accessType == ApiWorldInstance.AccessType.InviteOnly || accessType == ApiWorldInstance.AccessType.InvitePlus) { presence.state = "In a private world"; presence.partyId = ""; if (ModPrefs.GetBool("vrctools", "allowdiscordjoinrequests") && (accessType == ApiWorldInstance.AccessType.InvitePlus)) { presence.joinSecret = GenerateRandomString(127); } } else { string accessString = " [Unknown]"; if (accessType == ApiWorldInstance.AccessType.FriendsOfGuests) { accessString = " [Friends+]"; } else if (accessType == ApiWorldInstance.AccessType.FriendsOnly) { accessString = " [Friends]"; } else if (accessType == ApiWorldInstance.AccessType.Public) { accessString = ""; } presence.state = "in " + worldName + accessString; presence.partyId = worldAndRoomId; presence.partyMax = maxPlayers; presence.startTimestamp = (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; if (ModPrefs.GetBool("vrctools", "allowdiscordjoinrequests")) { presence.joinSecret = GenerateRandomString(127); } } } else { presence.state = "Not in a world"; presence.partyId = ""; presence.partyMax = 0; presence.startTimestamp = 0; presence.joinSecret = ""; } DiscordRpc.UpdatePresence(ref presence); return(presence.joinSecret); }
// Token: 0x06000C5B RID: 3163 RVA: 0x0001FF5C File Offset: 0x0001E15C public static void OnThisUpdate() { bool flag = RoomManagerBase.currentRoom != null; if (flag) { ApiWorld currentRoom = RoomManagerBase.currentRoom; DiscordInfo.thisScene = default(Scene); bool flag2 = DiscordInfo.currentWorld != currentRoom; if (flag2) { DiscordInfo.currentWorld = RoomManagerBase.currentRoom; ApiWorldInstance currentWorldInstance = RoomManagerBase.currentWorldInstance; ApiWorldInstance.AccessType accessType = currentWorldInstance.GetAccessType(); int count = currentWorldInstance.users.Count; bool flag3 = accessType == ApiWorldInstance.AccessType.Public; if (flag3) { //info 1 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "public_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } bool flag4 = accessType == ApiWorldInstance.AccessType.InvitePlus; if (flag4) { //info 2 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "inviteplus_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } bool flag5 = accessType == ApiWorldInstance.AccessType.InviteOnly; if (flag5) { //info 3 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "inviteonly_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } bool flag6 = accessType == ApiWorldInstance.AccessType.FriendsOfGuests; if (flag6) { //info 4 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "friendofguests_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } bool flag7 = accessType == ApiWorldInstance.AccessType.FriendsOnly; if (flag7) { //info 5 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "friendsonly_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } bool flag8 = accessType == ApiWorldInstance.AccessType.Counter; if (flag8) { //info 6 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = DiscordInfo.GetWorldName(); DiscordInfo.Presence.state = "In a " + DiscordInfo.GetWorldInstanceType(accessType) + " Lobby"; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "counter_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordInfo.PlayerCount(); DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } } bool flag9 = DiscordInfo.currentWorld != null; if (flag9) { //nb de gens la room ? DiscordInfo.Presence.partySize = PlayerManager.GetAllPlayers().Length; DiscordInfo.Presence.partyMax = DiscordInfo.currentWorld.capacity; DiscordRich.UpdatePresence(DiscordInfo.Presence); } else { //idk DiscordInfo.Presence.partySize = 0; DiscordInfo.Presence.partyMax = 0; DiscordRich.UpdatePresence(DiscordInfo.Presence); } } else { Scene activeScene = SceneManager.GetActiveScene(); bool flag10 = DiscordInfo.thisScene != activeScene; if (flag10) { DiscordInfo.thisScene = activeScene; Scene scene = DiscordInfo.thisScene; //nom de scene idk ? bool flag11 = DiscordInfo.thisScene.name == "ui"; if (flag11) { //info 7 DiscordInfo.ResetTime(); DiscordInfo.Presence.details = "In Loading Screen"; DiscordInfo.Presence.state = string.Empty; DiscordInfo.Presence.startTimestamp = DiscordInfo.timestamp; DiscordInfo.Presence.partySize = 0; DiscordInfo.Presence.partyMax = 0; DiscordInfo.Presence.largeImageKey = "default_logo"; DiscordInfo.Presence.largeImageText = "VRChat"; DiscordInfo.Presence.smallImageKey = "loading_img"; DiscordInfo.Presence.smallImageText = "Using TurtleGangClient"; DiscordRich.UpdatePresence(DiscordInfo.Presence); return; } } } DiscordRich.RunCallbacks(); }
public void PutInstance(ApiWorldInstance inst, Action success, Action <string> error = null) { string idWithTags = inst.idWithTags; int num = -1; for (int i = 0; i < mWorldInstances.Count; i++) { if (mWorldInstances[i].idWithTags == idWithTags) { mWorldInstances[i] = inst; } } bool newInstance = num == -1; Dictionary <string, object> dictionary = new Dictionary <string, object>(); if (newInstance) { dictionary["id"] = inst.idWithTags; ApiWorldInstance.AccessType accessType = inst.GetAccessType(); if (accessType == ApiWorldInstance.AccessType.InviteOnly) { dictionary["private"] = inst.instanceCreator; } else { dictionary["private"] = "false"; } if (accessType == ApiWorldInstance.AccessType.FriendsOnly) { dictionary["friends"] = inst.instanceCreator; } else { dictionary["friends"] = "false"; } } dictionary["name"] = inst.instanceName; string tagString = inst.GetTagString(); if (tagString != null) { dictionary["tags"] = tagString; } ApiDictContainer apiDictContainer = new ApiDictContainer(); apiDictContainer.OnSuccess = delegate(ApiContainer c) { Dictionary <string, object> responseDictionary = (c as ApiDictContainer).ResponseDictionary; if (newInstance && responseDictionary != null) { mWorldInstances.Add(new ApiWorldInstance(this, responseDictionary, c.DataTimestamp)); } if (success != null) { success(); } }; apiDictContainer.OnError = delegate(ApiContainer c) { if (error != null) { error(c.Error); } }; ApiDictContainer responseContainer = apiDictContainer; API.SendPutRequest("worlds/" + base.id + "/" + idWithTags, responseContainer, dictionary); }