public string GetPicture() { // @ToDo wont work, get the avatar of profile int test = SteamFriends.GetSmallFriendAvatar(this.GetSteamID()); return(this.GetSteamImageAsTexture2D(test)); }
public override void OnEnter() { ulong ID = ulong.Parse(this.steamID.Value); CSteamID IDsteam; IDsteam.m_SteamID = ID; int imageID = 0; switch (avatarSize) { case AvaterSize.Small: imageID = SteamFriends.GetSmallFriendAvatar(IDsteam); break; case AvaterSize.Medium: imageID = SteamFriends.GetMediumFriendAvatar(IDsteam); break; case AvaterSize.Large: imageID = SteamFriends.GetLargeFriendAvatar(IDsteam); break; } if (imageID != 0) { GetAvatar(imageID); } else { Fsm.Event(noAvatar); } Finish(); }
private void UpdateSteam() { if (Multiplayer.Clock.ElapsedMilliseconds - lastFriendUpdate < 2000) { return; } friends.Clear(); int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate); for (int i = 0; i < friendCount; i++) { CSteamID friend = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate); SteamFriends.GetFriendGamePlayed(friend, out FriendGameInfo_t friendGame); bool playingRimworld = friendGame.m_gameID.AppID() == SteamIntegration.RimWorldAppId; if (!playingRimworld) { continue; } int avatar = SteamFriends.GetSmallFriendAvatar(friend); string username = SteamFriends.GetFriendPersonaName(friend); string connectValue = SteamFriends.GetFriendRichPresence(friend, "connect"); CSteamID serverHost = CSteamID.Nil; if (connectValue != null && connectValue.Contains(SteamIntegration.SteamConnectStart) && ulong.TryParse(connectValue.Substring(SteamIntegration.SteamConnectStart.Length), out ulong hostId)) { serverHost = (CSteamID)hostId; } friends.Add(new SteamPersona() { id = friend, avatar = avatar, username = username, playingRimworld = playingRimworld, serverHost = serverHost, }); } friends.SortByDescending(f => f.serverHost != CSteamID.Nil); lastFriendUpdate = Multiplayer.Clock.ElapsedMilliseconds; }
/// <summary> /// Get image data from the Steam Api /// </summary> /// <param name="size">The image size to get from Steam</param> /// <param name="steamId">The steam id of the user to get the image for</param> /// <returns></returns> /// <exception cref="ArgumentException"></exception> /// <exception cref="SystemException"></exception> public SteamworksImage GetAvatarFromStreamApi(AvatarSize size, CSteamID steamId) { int imageHandle; switch (size) { case AvatarSize.Small: imageHandle = SteamFriends.GetSmallFriendAvatar(steamId); break; case AvatarSize.Medium: imageHandle = SteamFriends.GetMediumFriendAvatar(steamId); break; case AvatarSize.Large: imageHandle = SteamFriends.GetLargeFriendAvatar(steamId); break; default: throw new ArgumentException("Unknown Steam Avatar size!"); } if (imageHandle == -1 || imageHandle == 0) { throw new SystemException("Invalid Steamworks image handle"); } var image = new SteamworksImage(); if (!SteamUtils.GetImageSize(imageHandle, out image.Width, out image.Height)) { throw new SystemException("Couldn't get image size from Steamworks api"); } uint imageSize = image.Width * image.Height * 4; var buffer = new byte[imageSize]; if (!SteamUtils.GetImageRGBA(imageHandle, buffer, (int)imageSize)) { throw new SystemException("Couldn't get image data from Steamworks api"); } image.imageData = new byte[imageSize]; Array.Copy(buffer, 0, image.imageData, 0, imageSize); return(image); }
internal void GetSmallAvatar(SteamPlayer player, bool raiseEvent) { var index = SteamFriends.GetSmallFriendAvatar(player.steamID); if (index < 1) { return; } uint w, h; if (SteamUtils.GetImageSize(index, out w, out h)) { LoadPlayerAvatar(player, index, (int)w, (int)h, raiseEvent); } }
public static Sprite GetSmallAvatar(CSteamID i_SteamId) { if (!SteamManager.initializedMain) { return(null); } if (!i_SteamId.IsValid()) { return(null); } // Small avatar is 32x32. int smallAvatar = SteamFriends.GetSmallFriendAvatar(i_SteamId); Texture2D texture = BuildTexture(smallAvatar); Sprite sprite = TextureToSprite(texture); return(sprite); }
public override void OnEnter() { imageID = 0; switch (avatarSize) { case AvaterSize.Small: imageID = SteamFriends.GetSmallFriendAvatar(SteamUser.GetSteamID()); break; case AvaterSize.Medium: imageID = SteamFriends.GetMediumFriendAvatar(SteamUser.GetSteamID()); break; case AvaterSize.Large: imageID = SteamFriends.GetLargeFriendAvatar(SteamUser.GetSteamID()); break; } if (imageID != 0) { if (imageID != -1) { GetAvatar(imageID); } else { m_AvatarImageLoaded = Callback <AvatarImageLoaded_t> .Create(OnAvatarImageLoaded); Fsm.Event(imageNotLoadedYet); } } else { Fsm.Event(noAvatar); } Finish(); }
public Texture2D FindAvatar(ulong steamID) { CSteamID theSteamId = new CSteamID(steamID); int avatarid = SteamFriends.GetSmallFriendAvatar(theSteamId); //Debug.Log(avatarid); uint width; uint height; SteamUtils.GetImageSize(avatarid, out width, out height); //Debug.Log(width + " " + height); byte[] pubDest = new byte[width * height * 4]; bool valid = SteamUtils.GetImageRGBA(avatarid, pubDest, 4 * (int)height * (int)width); if (valid) { Texture2D avatarImage = new Texture2D((int)width, (int)height, TextureFormat.RGBA32, false, true); avatarImage.LoadRawTextureData(pubDest); avatarImage.Apply(); return(avatarImage); } Debug.LogError("Could not find image for: " + steamID + width + height + valid); return(null); }
public static Texture2D GetAvatar(CSteamID user = default(CSteamID)) { user = user == default(CSteamID) ? SteamUser.GetSteamID() : user; int FriendAvatar = SteamFriends.GetSmallFriendAvatar(user); bool success = Steamworks.SteamUtils.GetImageSize(FriendAvatar, out uint ImageWidth, out uint ImageHeight); if (success && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; Texture2D returnTexture = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); success = Steamworks.SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); if (success) { returnTexture.LoadRawTextureData(Image); returnTexture.Apply(); } return(returnTexture); } else { return(new Texture2D(0, 0)); } }
//private void Start() { // if (!SteamManager.Initialized) { return; } // string myName = SteamFriends.GetPersonaName(); // int friendCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate); // for (int i = 0; i < friendCount; i++) { // CSteamID friend = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate); // string friendName = SteamFriends.GetFriendPersonaName(friend); // print(myName + " is friends with " + friendName); // } //} public Texture2D GetSmallAvatar(CSteamID user) { int FriendAvatar = SteamFriends.GetSmallFriendAvatar(user); uint ImageWidth, ImageHeight; bool success = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (success && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; Texture2D returnTexture = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); success = SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); if (success) { returnTexture.LoadRawTextureData(Image); returnTexture.Apply(); } return(returnTexture); } else { Debug.LogError("Couldn't get avatar."); return(new Texture2D(0, 0)); } }
public void RenderOnGUI() { GUILayout.BeginArea(new Rect(Screen.width - 200, 0, 200, Screen.height)); GUILayout.Label("Variables:"); GUILayout.Label("m_Friend: " + m_Friend); GUILayout.Label("m_Clan: " + m_Clan); GUILayout.Label("m_CoPlayFriend: " + m_CoPlayFriend); GUILayout.Label("m_SmallAvatar:"); GUILayout.Label(m_SmallAvatar); GUILayout.Label("m_MediumAvatar:"); GUILayout.Label(m_MediumAvatar); GUILayout.Label("m_LargeAvatar:"); GUILayout.Label(m_LargeAvatar); GUILayout.EndArea(); GUILayout.BeginVertical("box"); m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos, GUILayout.Width(Screen.width - 215), GUILayout.Height(Screen.height - 33)); GUILayout.Label("GetPersonaName() : " + SteamFriends.GetPersonaName()); if (GUILayout.Button("SetPersonaName(SteamFriends.GetPersonaName())")) { SteamAPICall_t handle = SteamFriends.SetPersonaName(SteamFriends.GetPersonaName()); OnSetPersonaNameResponseCallResult.Set(handle); print("SteamFriends.SetPersonaName(" + SteamFriends.GetPersonaName() + ") : " + handle); } GUILayout.Label("GetPersonaState() : " + SteamFriends.GetPersonaState()); GUILayout.Label("GetFriendCount(EFriendFlags.k_EFriendFlagImmediate) : " + SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate)); { m_Friend = SteamFriends.GetFriendByIndex(0, EFriendFlags.k_EFriendFlagImmediate); GUILayout.Label("GetFriendByIndex(0, EFriendFlags.k_EFriendFlagImmediate) : " + m_Friend); } GUILayout.Label("GetFriendRelationship(m_Friend) : " + SteamFriends.GetFriendRelationship(m_Friend)); GUILayout.Label("GetFriendPersonaState(m_Friend) : " + SteamFriends.GetFriendPersonaState(m_Friend)); GUILayout.Label("GetFriendPersonaName(m_Friend) : " + SteamFriends.GetFriendPersonaName(m_Friend)); { var fgi = new FriendGameInfo_t(); bool ret = SteamFriends.GetFriendGamePlayed(m_Friend, out fgi); GUILayout.Label("GetFriendGamePlayed(m_Friend, out fgi) : " + ret + " -- " + fgi.m_gameID + " -- " + fgi.m_unGameIP + " -- " + fgi.m_usGamePort + " -- " + fgi.m_usQueryPort + " -- " + fgi.m_steamIDLobby); } GUILayout.Label("GetFriendPersonaNameHistory(m_Friend, 1) : " + SteamFriends.GetFriendPersonaNameHistory(m_Friend, 1)); GUILayout.Label("GetFriendSteamLevel(m_Friend) : " + SteamFriends.GetFriendSteamLevel(m_Friend)); GUILayout.Label("GetPlayerNickname(m_Friend) : " + SteamFriends.GetPlayerNickname(m_Friend)); { int FriendsGroupCount = SteamFriends.GetFriendsGroupCount(); GUILayout.Label("GetFriendsGroupCount() : " + FriendsGroupCount); if (FriendsGroupCount > 0) { FriendsGroupID_t FriendsGroupID = SteamFriends.GetFriendsGroupIDByIndex(0); GUILayout.Label("SteamFriends.GetFriendsGroupIDByIndex(0) : " + FriendsGroupID); GUILayout.Label("GetFriendsGroupName(FriendsGroupID) : " + SteamFriends.GetFriendsGroupName(FriendsGroupID)); int FriendsGroupMembersCount = SteamFriends.GetFriendsGroupMembersCount(FriendsGroupID); GUILayout.Label("GetFriendsGroupMembersCount(FriendsGroupID) : " + FriendsGroupMembersCount); if (FriendsGroupMembersCount > 0) { CSteamID[] FriendsGroupMembersList = new CSteamID[FriendsGroupMembersCount]; SteamFriends.GetFriendsGroupMembersList(FriendsGroupID, FriendsGroupMembersList, FriendsGroupMembersCount); GUILayout.Label("GetFriendsGroupMembersList(FriendsGroupID, FriendsGroupMembersList, FriendsGroupMembersCount) : " + FriendsGroupMembersList[0]); } } } GUILayout.Label("HasFriend(m_Friend, EFriendFlags.k_EFriendFlagImmediate) : " + SteamFriends.HasFriend(m_Friend, EFriendFlags.k_EFriendFlagImmediate)); GUILayout.Label("GetClanCount() : " + SteamFriends.GetClanCount()); m_Clan = SteamFriends.GetClanByIndex(0); GUILayout.Label("GetClanByIndex(0) : " + m_Clan); GUILayout.Label("GetClanName(m_Clan) : " + SteamFriends.GetClanName(m_Clan)); GUILayout.Label("GetClanTag(m_Clan) : " + SteamFriends.GetClanTag(m_Clan)); { int Online; int InGame; int Chatting; bool ret = SteamFriends.GetClanActivityCounts(m_Clan, out Online, out InGame, out Chatting); GUILayout.Label("GetClanActivityCounts(m_Clan, out Online, out InGame, out Chatting) : " + ret + " -- " + Online + " -- " + InGame + " -- " + Chatting); } if (GUILayout.Button("DownloadClanActivityCounts(Clans, Clans.Length)")) { CSteamID[] Clans = { m_Clan, TestConstants.Instance.k_SteamId_Group_SteamUniverse }; SteamAPICall_t handle = SteamFriends.DownloadClanActivityCounts(Clans, Clans.Length); OnDownloadClanActivityCountsResultCallResult.Set(handle); // This call never seems to produce the CallResult. print("SteamFriends.DownloadClanActivityCounts(" + Clans + ", " + Clans.Length + ") : " + handle); } { int FriendCount = SteamFriends.GetFriendCountFromSource(m_Clan); GUILayout.Label("GetFriendCountFromSource(m_Clan) : " + FriendCount); if (FriendCount > 0) { GUILayout.Label("GetFriendFromSourceByIndex(m_Clan, 0) : " + SteamFriends.GetFriendFromSourceByIndex(m_Clan, 0)); } } GUILayout.Label("IsUserInSource(m_Friend, m_Clan) : " + SteamFriends.IsUserInSource(m_Friend, m_Clan)); if (GUILayout.Button("SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false)")) { SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false); print("SteamFriends.SetInGameVoiceSpeaking(" + SteamUser.GetSteamID() + ", " + false + ")"); } if (GUILayout.Button("ActivateGameOverlay(\"Friends\")")) { SteamFriends.ActivateGameOverlay("Friends"); print("SteamFriends.ActivateGameOverlay(" + "\"Friends\"" + ")"); } if (GUILayout.Button("ActivateGameOverlayToUser(\"friendadd\", TestConstants.Instance.k_SteamId_rlabrecque)")) { SteamFriends.ActivateGameOverlayToUser("friendadd", TestConstants.Instance.k_SteamId_rlabrecque); print("SteamFriends.ActivateGameOverlayToUser(" + "\"friendadd\"" + ", " + TestConstants.Instance.k_SteamId_rlabrecque + ")"); } if (GUILayout.Button("ActivateGameOverlayToWebPage(\"http://steamworks.github.io\")")) { SteamFriends.ActivateGameOverlayToWebPage("http://steamworks.github.io"); print("SteamFriends.ActivateGameOverlayToWebPage(" + "\"http://steamworks.github.io\"" + ")"); } if (GUILayout.Button("ActivateGameOverlayToStore(TestConstants.Instance.k_AppId_TeamFortress2, EOverlayToStoreFlag.k_EOverlayToStoreFlag_None)")) { SteamFriends.ActivateGameOverlayToStore(TestConstants.Instance.k_AppId_TeamFortress2, EOverlayToStoreFlag.k_EOverlayToStoreFlag_None); print("SteamFriends.ActivateGameOverlayToStore(" + TestConstants.Instance.k_AppId_TeamFortress2 + ", " + EOverlayToStoreFlag.k_EOverlayToStoreFlag_None + ")"); } if (GUILayout.Button("SetPlayedWith(TestConstants.Instance.k_SteamId_rlabrecque)")) { SteamFriends.SetPlayedWith(TestConstants.Instance.k_SteamId_rlabrecque); print("SteamFriends.SetPlayedWith(" + TestConstants.Instance.k_SteamId_rlabrecque + ")"); } if (GUILayout.Button("ActivateGameOverlayInviteDialog(TestConstants.Instance.k_SteamId_rlabrecque)")) { SteamFriends.ActivateGameOverlayInviteDialog(TestConstants.Instance.k_SteamId_rlabrecque); print("SteamFriends.ActivateGameOverlayInviteDialog(" + TestConstants.Instance.k_SteamId_rlabrecque + ")"); } if (GUILayout.Button("GetSmallFriendAvatar(m_Friend)")) { int ret = SteamFriends.GetSmallFriendAvatar(m_Friend); print("SteamFriends.GetSmallFriendAvatar(" + m_Friend + ") : " + ret); m_SmallAvatar = SteamUtilsTest.GetSteamImageAsTexture2D(ret); } if (GUILayout.Button("GetMediumFriendAvatar(m_Friend)")) { int ret = SteamFriends.GetMediumFriendAvatar(m_Friend); print("SteamFriends.GetMediumFriendAvatar(" + m_Friend + ") : " + ret); m_MediumAvatar = SteamUtilsTest.GetSteamImageAsTexture2D(ret); } if (GUILayout.Button("GetLargeFriendAvatar(m_Friend)")) { int ret = SteamFriends.GetLargeFriendAvatar(m_Friend); print("SteamFriends.GetLargeFriendAvatar(" + m_Friend + ") : " + ret); m_LargeAvatar = SteamUtilsTest.GetSteamImageAsTexture2D(ret); } if (GUILayout.Button("RequestUserInformation(m_Friend, false)")) { bool ret = SteamFriends.RequestUserInformation(m_Friend, false); print("SteamFriends.RequestUserInformation(" + m_Friend + ", " + false + ") : " + ret); } if (GUILayout.Button("RequestClanOfficerList(m_Clan)")) { SteamAPICall_t handle = SteamFriends.RequestClanOfficerList(m_Clan); OnClanOfficerListResponseCallResult.Set(handle); print("SteamFriends.RequestClanOfficerList(" + m_Clan + ") : " + handle); } GUILayout.Label("GetClanOwner(m_Clan) : " + SteamFriends.GetClanOwner(m_Clan)); GUILayout.Label("GetClanOfficerCount(m_Clan) : " + SteamFriends.GetClanOfficerCount(m_Clan)); GUILayout.Label("GetClanOfficerByIndex(m_Clan, 0) : " + SteamFriends.GetClanOfficerByIndex(m_Clan, 0)); GUILayout.Label("GetUserRestrictions() : " + SteamFriends.GetUserRestrictions()); if (GUILayout.Button("SetRichPresence(\"status\", \"Testing 1.. 2.. 3..\")")) { bool ret = SteamFriends.SetRichPresence("status", "Testing 1.. 2.. 3.."); print("SteamFriends.SetRichPresence(" + "\"status\"" + ", " + "\"Testing 1.. 2.. 3..\"" + ") : " + ret); } if (GUILayout.Button("ClearRichPresence()")) { SteamFriends.ClearRichPresence(); print("SteamFriends.ClearRichPresence()"); } GUILayout.Label("GetFriendRichPresence(SteamUser.GetSteamID(), \"status\") : " + SteamFriends.GetFriendRichPresence(SteamUser.GetSteamID(), "status")); GUILayout.Label("GetFriendRichPresenceKeyCount(SteamUser.GetSteamID()) : " + SteamFriends.GetFriendRichPresenceKeyCount(SteamUser.GetSteamID())); GUILayout.Label("GetFriendRichPresenceKeyByIndex(SteamUser.GetSteamID(), 0) : " + SteamFriends.GetFriendRichPresenceKeyByIndex(SteamUser.GetSteamID(), 0)); if (GUILayout.Button("RequestFriendRichPresence(m_Friend)")) { SteamFriends.RequestFriendRichPresence(m_Friend); print("SteamFriends.RequestFriendRichPresence(" + m_Friend + ")"); } if (GUILayout.Button("InviteUserToGame(SteamUser.GetSteamID(), \"testing\")")) { bool ret = SteamFriends.InviteUserToGame(SteamUser.GetSteamID(), "testing"); print("SteamFriends.InviteUserToGame(" + SteamUser.GetSteamID() + ", " + "\"testing\"" + ") : " + ret); } GUILayout.Label("GetCoplayFriendCount() : " + SteamFriends.GetCoplayFriendCount()); if (GUILayout.Button("GetCoplayFriend(0)")) { m_CoPlayFriend = SteamFriends.GetCoplayFriend(0); print("SteamFriends.GetCoplayFriend(" + 0 + ") : " + m_CoPlayFriend); } GUILayout.Label("GetFriendCoplayTime(m_CoPlayFriend) : " + SteamFriends.GetFriendCoplayTime(m_CoPlayFriend)); GUILayout.Label("GetFriendCoplayGame(m_CoPlayFriend) : " + SteamFriends.GetFriendCoplayGame(m_CoPlayFriend)); if (GUILayout.Button("JoinClanChatRoom(m_Clan)")) { SteamAPICall_t handle = SteamFriends.JoinClanChatRoom(m_Clan); OnJoinClanChatRoomCompletionResultCallResult.Set(handle); print("SteamFriends.JoinClanChatRoom(" + m_Clan + ") : " + handle); } if (GUILayout.Button("LeaveClanChatRoom(m_Clan)")) { bool ret = SteamFriends.LeaveClanChatRoom(m_Clan); print("SteamFriends.LeaveClanChatRoom(" + m_Clan + ") : " + ret); } GUILayout.Label("GetClanChatMemberCount(m_Clan) : " + SteamFriends.GetClanChatMemberCount(m_Clan)); GUILayout.Label("GetChatMemberByIndex(m_Clan, 0) : " + SteamFriends.GetChatMemberByIndex(m_Clan, 0)); if (GUILayout.Button("SendClanChatMessage(m_Clan, \"Test\")")) { bool ret = SteamFriends.SendClanChatMessage(m_Clan, "Test"); print("SteamFriends.SendClanChatMessage(" + m_Clan + ", " + "\"Test\"" + ") : " + ret); } //GUILayout.Label("SteamFriends.GetClanChatMessage() : " + SteamFriends.GetClanChatMessage()); // N/A - Must be called from within the callback OnGameConnectedClanChatMsg GUILayout.Label("IsClanChatAdmin(m_Clan, m_Friend) : " + SteamFriends.IsClanChatAdmin(m_Clan, m_Friend)); GUILayout.Label("IsClanChatWindowOpenInSteam(m_Clan) : " + SteamFriends.IsClanChatWindowOpenInSteam(m_Clan)); if (GUILayout.Button("OpenClanChatWindowInSteam(m_Clan)")) { bool ret = SteamFriends.OpenClanChatWindowInSteam(m_Clan); print("SteamFriends.OpenClanChatWindowInSteam(" + m_Clan + ") : " + ret); } if (GUILayout.Button("CloseClanChatWindowInSteam(m_Clan)")) { bool ret = SteamFriends.CloseClanChatWindowInSteam(m_Clan); print("SteamFriends.CloseClanChatWindowInSteam(" + m_Clan + ") : " + ret); } if (GUILayout.Button("SetListenForFriendsMessages(true)")) { bool ret = SteamFriends.SetListenForFriendsMessages(true); print("SteamFriends.SetListenForFriendsMessages(" + true + ") : " + ret); } if (GUILayout.Button("ReplyToFriendMessage(SteamUser.GetSteamID(), \"Testing!\")")) { bool ret = SteamFriends.ReplyToFriendMessage(SteamUser.GetSteamID(), "Testing!"); print("SteamFriends.ReplyToFriendMessage(" + SteamUser.GetSteamID() + ", " + "\"Testing!\"" + ") : " + ret); } //GUILayout.Label("SteamFriends.GetFriendMessage() : " + SteamFriends.GetFriendMessage()); // N/A - Must be called from within the callback OnGameConnectedFriendChatMsg if (GUILayout.Button("GetFollowerCount(SteamUser.GetSteamID())")) { SteamAPICall_t handle = SteamFriends.GetFollowerCount(SteamUser.GetSteamID()); OnFriendsGetFollowerCountCallResult.Set(handle); print("SteamFriends.GetFollowerCount(" + SteamUser.GetSteamID() + ") : " + handle); } if (GUILayout.Button("IsFollowing(m_Friend)")) { SteamAPICall_t handle = SteamFriends.IsFollowing(m_Friend); OnFriendsIsFollowingCallResult.Set(handle); print("SteamFriends.IsFollowing(" + m_Friend + ") : " + handle); } if (GUILayout.Button("EnumerateFollowingList(0)")) { SteamAPICall_t handle = SteamFriends.EnumerateFollowingList(0); OnFriendsEnumerateFollowingListCallResult.Set(handle); print("SteamFriends.EnumerateFollowingList(" + 0 + ") : " + handle); } GUILayout.Label("IsClanPublic(m_Clan) : " + SteamFriends.IsClanPublic(m_Clan)); GUILayout.Label("IsClanOfficialGameGroup(m_Clan) : " + SteamFriends.IsClanOfficialGameGroup(m_Clan)); GUILayout.EndScrollView(); GUILayout.EndVertical(); }
private void RenderPageOne() { GUILayout.Label("SteamFriends.GetPersonaName() : " + SteamFriends.GetPersonaName()); if (GUILayout.Button("SteamFriends.SetPersonaName(SteamFriends.GetPersonaName())")) { SteamAPICall_t handle = SteamFriends.SetPersonaName(SteamFriends.GetPersonaName()); OnSetPersonaNameResponseCallResult.Set(handle); print("SteamFriends.SetPersonaName(" + SteamFriends.GetPersonaName() + ") : " + handle); } GUILayout.Label("SteamFriends.GetPersonaState() : " + SteamFriends.GetPersonaState()); GUILayout.Label("SteamFriends.GetFriendCount(k_EFriendFlagImmediate) : " + SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate)); if (SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate) == 0) { Debug.LogError("You must have atleast one friend to use this Test"); return; } m_Friend = SteamFriends.GetFriendByIndex(0, EFriendFlags.k_EFriendFlagImmediate); GUILayout.Label("SteamFriends.GetFriendByIndex(0, k_EFriendFlagImmediate) : " + m_Friend); GUILayout.Label("SteamFriends.GetFriendRelationship(m_Friend) : " + SteamFriends.GetFriendRelationship(m_Friend)); GUILayout.Label("SteamFriends.GetFriendPersonaState(m_Friend) : " + SteamFriends.GetFriendPersonaState(m_Friend)); GUILayout.Label("SteamFriends.GetFriendPersonaName(m_Friend) : " + SteamFriends.GetFriendPersonaName(m_Friend)); { var fgi = new FriendGameInfo_t(); bool ret = SteamFriends.GetFriendGamePlayed(m_Friend, out fgi); GUILayout.Label("SteamFriends.GetFriendGamePlayed(m_Friend, out fgi) : " + ret + " -- " + fgi.m_gameID + " -- " + fgi.m_unGameIP + " -- " + fgi.m_usGamePort + " -- " + fgi.m_usQueryPort + " -- " + fgi.m_steamIDLobby); } GUILayout.Label("SteamFriends.GetFriendPersonaNameHistory(m_Friend, 1) : " + SteamFriends.GetFriendPersonaNameHistory(m_Friend, 1)); GUILayout.Label("SteamFriends.GetFriendSteamLevel(m_Friend) : " + SteamFriends.GetFriendSteamLevel(m_Friend)); GUILayout.Label("SteamFriends.GetPlayerNickname(m_Friend) : " + SteamFriends.GetPlayerNickname(m_Friend)); { int FriendsGroupCount = SteamFriends.GetFriendsGroupCount(); GUILayout.Label("SteamFriends.GetFriendsGroupCount() : " + FriendsGroupCount); if (FriendsGroupCount > 0) { FriendsGroupID_t FriendsGroupID = SteamFriends.GetFriendsGroupIDByIndex(0); GUILayout.Label("SteamFriends.GetFriendsGroupIDByIndex(0) : " + FriendsGroupID); GUILayout.Label("SteamFriends.GetFriendsGroupName(FriendsGroupID) : " + SteamFriends.GetFriendsGroupName(FriendsGroupID)); int FriendsGroupMembersCount = SteamFriends.GetFriendsGroupMembersCount(FriendsGroupID); GUILayout.Label("SteamFriends.GetFriendsGroupMembersCount(FriendsGroupID) : " + FriendsGroupMembersCount); if (FriendsGroupMembersCount > 0) { CSteamID[] FriendsGroupMembersList = new CSteamID[FriendsGroupMembersCount]; SteamFriends.GetFriendsGroupMembersList(FriendsGroupID, FriendsGroupMembersList, FriendsGroupMembersCount); GUILayout.Label("SteamFriends.GetFriendsGroupMembersList(FriendsGroupID, FriendsGroupMembersList, FriendsGroupMembersCount) : " + FriendsGroupMembersList[0]); } } } GUILayout.Label("SteamFriends.HasFriend(m_Friend, k_EFriendFlagImmediate) : " + SteamFriends.HasFriend(m_Friend, EFriendFlags.k_EFriendFlagImmediate)); GUILayout.Label("SteamFriends.GetClanCount() : " + SteamFriends.GetClanCount()); if (SteamFriends.GetClanCount() == 0) { Debug.LogError("You must have atleast one clan to use this Test"); return; } m_Clan = SteamFriends.GetClanByIndex(0); GUILayout.Label("SteamFriends.GetClanByIndex(0) : " + m_Clan); GUILayout.Label("SteamFriends.GetClanName(m_Clan) : " + SteamFriends.GetClanName(m_Clan)); GUILayout.Label("SteamFriends.GetClanTag(m_Clan) : " + SteamFriends.GetClanTag(m_Clan)); { int Online; int InGame; int Chatting; bool ret = SteamFriends.GetClanActivityCounts(m_Clan, out Online, out InGame, out Chatting); GUILayout.Label("SteamFriends.GetClanActivityCounts(m_Clan, out Online, out InGame, out Chatting) : " + ret + " -- " + Online + " -- " + InGame + " -- " + Chatting); } if (GUILayout.Button("SteamFriends.DownloadClanActivityCounts(m_Clans, 2)")) { CSteamID[] Clans = { m_Clan, new CSteamID(103582791434672565) }; // m_Clan, Steam Universe SteamAPICall_t handle = SteamFriends.DownloadClanActivityCounts(Clans, 2); OnDownloadClanActivityCountsResultCallResult.Set(handle); // This call never seems to produce a callback. print("SteamFriends.DownloadClanActivityCounts(" + Clans + ", 2) : " + handle); } { int FriendCount = SteamFriends.GetFriendCountFromSource(m_Clan); GUILayout.Label("SteamFriends.GetFriendCountFromSource(m_Clan) : " + FriendCount); if (FriendCount > 0) { GUILayout.Label("SteamFriends.GetFriendFromSourceByIndex(m_Clan, 0) : " + SteamFriends.GetFriendFromSourceByIndex(m_Clan, 0)); } } GUILayout.Label("SteamFriends.IsUserInSource(m_Friend, m_Clan) : " + SteamFriends.IsUserInSource(m_Friend, m_Clan)); if (GUILayout.Button("SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false)")) { SteamFriends.SetInGameVoiceSpeaking(SteamUser.GetSteamID(), false); print("SteamClient.SetInGameVoiceSpeaking(" + SteamUser.GetSteamID() + ", false);"); } if (GUILayout.Button("SteamFriends.ActivateGameOverlay(\"Friends\")")) { SteamFriends.ActivateGameOverlay("Friends"); print("SteamClient.ActivateGameOverlay(\"Friends\")"); } if (GUILayout.Button("SteamFriends.ActivateGameOverlayToUser(\"friendadd\", 76561197991230424)")) { SteamFriends.ActivateGameOverlayToUser("friendadd", new CSteamID(76561197991230424)); // rlabrecque print("SteamClient.ActivateGameOverlay(\"friendadd\", 76561197991230424)"); } if (GUILayout.Button("SteamFriends.ActivateGameOverlayToWebPage(\"http://google.com\")")) { SteamFriends.ActivateGameOverlayToWebPage("http://google.com"); print("SteamClient.ActivateGameOverlay(\"http://google.com\")"); } if (GUILayout.Button("SteamFriends.ActivateGameOverlayToStore(440, k_EOverlayToStoreFlag_None)")) { SteamFriends.ActivateGameOverlayToStore((AppId_t)440, EOverlayToStoreFlag.k_EOverlayToStoreFlag_None); // 440 = TF2 print("SteamClient.ActivateGameOverlay(440, k_EOverlayToStoreFlag_None)"); } if (GUILayout.Button("SteamFriends.SetPlayedWith(76561197991230424)")) { SteamFriends.SetPlayedWith(new CSteamID(76561197991230424)); //rlabrecque print("SteamClient.SetPlayedWith(76561197991230424)"); } if (GUILayout.Button("SteamFriends.ActivateGameOverlayInviteDialog(76561197991230424)")) { SteamFriends.ActivateGameOverlayInviteDialog(new CSteamID(76561197991230424)); //rlabrecque print("SteamClient.ActivateGameOverlayInviteDialog(76561197991230424)"); } if (GUILayout.Button("SteamFriends.GetSmallFriendAvatar(m_Friend)")) { int FriendAvatar = SteamFriends.GetSmallFriendAvatar(m_Friend); print("SteamFriends.GetSmallFriendAvatar(" + m_Friend + ") - " + FriendAvatar); uint ImageWidth; uint ImageHeight; bool ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; ret = SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); m_SmallAvatar = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); m_SmallAvatar.LoadRawTextureData(Image); // The image is upside down! "@ares_p: in Unity all texture data starts from "bottom" (OpenGL convention)" m_SmallAvatar.Apply(); } } if (GUILayout.Button("SteamFriends.GetMediumFriendAvatar(m_Friend)")) { int FriendAvatar = SteamFriends.GetMediumFriendAvatar(m_Friend); print("SteamFriends.GetMediumFriendAvatar(" + m_Friend + ") - " + FriendAvatar); uint ImageWidth; uint ImageHeight; bool ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; ret = SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); m_MediumAvatar = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); m_MediumAvatar.LoadRawTextureData(Image); m_MediumAvatar.Apply(); } } if (GUILayout.Button("SteamFriends.GetLargeFriendAvatar(m_Friend)")) { int FriendAvatar = SteamFriends.GetLargeFriendAvatar(m_Friend); print("SteamFriends.GetLargeFriendAvatar(" + m_Friend + ") - " + FriendAvatar); uint ImageWidth; uint ImageHeight; bool ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; ret = SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); if (ret) { m_LargeAvatar = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); m_LargeAvatar.LoadRawTextureData(Image); m_LargeAvatar.Apply(); } } } }
public Texture2D getIcon(CSteamID steamID) { return(this.getIcon(SteamFriends.GetSmallFriendAvatar(steamID))); }
internal SteamFriendsData GetFriendInfo(CSteamID ID) { SteamFriendsData data = new SteamFriendsData(); data._SteamID = ID; var fgi = new FriendGameInfo_t(); //get playing game name bool ret = SteamFriends.GetFriendGamePlayed(data._SteamID, out fgi); if (ret) { if (fgi.m_gameID.AppID() == SteamUtils.GetAppID()) { data._PlayedGameName = "Planet Explorers"; } else { data._PlayedGameName = "Another game"; } //SteamAppList.GetAppName(fgi.m_gameID.AppID(), out data._PlayedGameName, 256); } else { data._PlayedGameName = ""; } //get player state data._PlayerState = SteamFriends.GetFriendPersonaState(data._SteamID); //get player name data._PlayerName = SteamFriends.GetFriendPersonaName(data._SteamID); //get avatar int FriendAvatar = SteamFriends.GetSmallFriendAvatar(data._SteamID); uint ImageWidth; uint ImageHeight; ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { ret = SteamUtils.GetImageRGBA(FriendAvatar, _imageData, SteamFriendsData._imageHeight * SteamFriendsData._imageWidth * 4); for (int n = 0; n < _imageData.Length; n += 4) { int x = (n / 4) % SteamFriendsData._imageWidth; int y = (n / 4) / SteamFriendsData._imageHeight; int tag = (SteamFriendsData._imageWidth * (SteamFriendsData._imageHeight - y - 1) + x) * 4; _imageTurnData[n] = _imageData[tag]; _imageTurnData[n + 1] = _imageData[tag + 1]; _imageTurnData[n + 2] = _imageData[tag + 2]; _imageTurnData[n + 3] = _imageData[tag + 3]; } data._avatar.LoadRawTextureData(_imageTurnData); data._avatar.Apply(); } else { return(null); } return(data); }
internal IEnumerator GetFriends() { if (_funGetFriends == null) { yield break; } _FriendsList.Clear(); AppId_t[] appList; appList = new AppId_t[1]; SteamAppList.GetInstalledApps(appList, 1); SteamAppList.GetNumInstalledApps(); _FriendsCount = SteamFriends.GetFriendCount(EFriendFlags.k_EFriendFlagImmediate | EFriendFlags.k_EFriendFlagIgnoredFriend); for (int i = 0; i < _FriendsCount; i++) { try { SteamFriendsData data = new SteamFriendsData(); //get steamid data._SteamID = SteamFriends.GetFriendByIndex(i, EFriendFlags.k_EFriendFlagImmediate | EFriendFlags.k_EFriendFlagIgnoredFriend); var fgi = new FriendGameInfo_t(); //get playing game name bool ret = SteamFriends.GetFriendGamePlayed(data._SteamID, out fgi); if (ret) { if (fgi.m_gameID.AppID() == SteamUtils.GetAppID()) { data._PlayedGameName = "Planet Explorers"; } else { data._PlayedGameName = "Another game"; } //SteamAppList.GetAppName(fgi.m_gameID.AppID(), out data._PlayedGameName, 256); } //get player state data._PlayerState = SteamFriends.GetFriendPersonaState(data._SteamID); //get player name data._PlayerName = SteamFriends.GetFriendPersonaName(data._SteamID); //get avatar int FriendAvatar = SteamFriends.GetSmallFriendAvatar(data._SteamID); uint ImageWidth; uint ImageHeight; ret = SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { ret = SteamUtils.GetImageRGBA(FriendAvatar, _imageData, SteamFriendsData._imageHeight * SteamFriendsData._imageWidth * 4); for (int n = 0; n < _imageData.Length; n += 4) { int x = (n / 4) % SteamFriendsData._imageWidth; int y = (n / 4) / SteamFriendsData._imageHeight; int tag = (SteamFriendsData._imageWidth * (SteamFriendsData._imageHeight - y - 1) + x) * 4; _imageTurnData[n] = _imageData[tag]; _imageTurnData[n + 1] = _imageData[tag + 1]; _imageTurnData[n + 2] = _imageData[tag + 2]; _imageTurnData[n + 3] = _imageData[tag + 3]; } data._avatar.LoadRawTextureData(_imageTurnData); data._avatar.Apply(); } _FriendsList[i] = data; } catch (Exception e) { Debug.Log("SteamGetFriendsProcess GetFriends " + e.ToString()); _funGetFriends(null, false); } yield return(0); } _funGetFriends(_FriendsList, true); }
private void MyCallbacks_LobbyListUpdated() { // Clear the Lobby List and Members List Panels foreach (Transform child in LobbyDetailsPanel.transform) { GameObject.Destroy(child.gameObject); } foreach (Transform child in LobbyMembersListPanel.transform) { GameObject.Destroy(child.gameObject); } // Instantiate the gameobject for the Each Lobby panel row foreach (var lobby in SteamHub.LobbyList) { string lobbyName = lobby.GetData <String>("name"); if (lobbyName == null || lobbyName == "") { lobbyName = "<unnamed>"; } GameObject lobbyRow = (GameObject)Instantiate(LobbyDetailsRowPanelPrefab, new Vector3(1, 1, 1), Quaternion.identity); lobbyRow.transform.SetParent(LobbyDetailsPanel.transform, false); lobbyRow.transform.localScale = new Vector3(1, 1, 1); lobbyRow.name = "Lobby details row for Lobby ID #" + lobby.LobbyId.ToString(); Text t2 = lobbyRow.transform.Find("Lobby Details Text").GetComponent <Text>(); Boolean isLobbyActive = (SteamHub.LobbyActive != null && lobby.LobbyId == SteamHub.LobbyActive.LobbyId); int lobbyMaxMembers = SteamMatchmaking.GetLobbyMemberLimit(lobby.LobbyId); String str = isLobbyActive ? "(A) " : " "; str += "Lobby \"" + lobbyName + "\" #"; str += lobby.LobbyId.ToString() + ": "; // str += "[" + lobby.MembersCount.ToString() + "/" + lobbyMaxMembers.ToString() + "] "; str += lobby.IsOwner ? " (OWNER)" : ""; t2.text = str; Text t1 = lobbyRow.transform.Find("NumberOfPlayerText").GetComponent <Text>(); t1.text = lobby.MembersCount.ToString() + "/" + lobbyMaxMembers.ToString(); Image fill = lobbyRow.transform.Find("VisualFeedback").GetComponent <Image>(); fill.fillAmount = (float)lobby.MembersCount / lobbyMaxMembers; Button joinButton = lobbyRow.transform.Find("Join Button").GetComponent <Button>(); if (isLobbyActive) { // Provide a leave button Text joinButtonLabelText = (Text)joinButton.transform.GetChild(0).GetComponent <Text>(); joinButtonLabelText.text = "LEAVE"; var lob = lobby; // Capture it for the lambda joinButton.onClick.AddListener(() => ui_click_leaveLobbyButtonPressed(joinButton, lob)); // Instantiate the gameobject for the Each Lobby panel row foreach (var m in lobby.AllMembers) { GameObject memberRow = (GameObject)Instantiate(LobbyMemberDetailsRowPanelPrefab, new Vector3(1, 1, 1), Quaternion.identity); memberRow.transform.SetParent(LobbyMembersListPanel.transform, false); memberRow.transform.localScale = new Vector3(1, 1, 1); memberRow.name = "Member details row for Member ID #" + m.m_SteamID.ToString(); Text t3 = memberRow.transform.Find("Member Details Text").GetComponent <Text>(); Image LargeAvatar = memberRow.transform.Find("ProfileImage").GetComponent <Image>(); int FriendAvatar = SteamFriends.GetSmallFriendAvatar(m); uint ImageWidth; uint ImageHeight; bool ret = Steamworks.SteamUtils.GetImageSize(FriendAvatar, out ImageWidth, out ImageHeight); if (ret && ImageWidth > 0 && ImageHeight > 0) { byte[] Image = new byte[ImageWidth * ImageHeight * 4]; ret = Steamworks.SteamUtils.GetImageRGBA(FriendAvatar, Image, (int)(ImageWidth * ImageHeight * 4)); if (ret) { m_LargeAvatar = new Texture2D((int)ImageWidth, (int)ImageHeight, TextureFormat.RGBA32, false, true); m_LargeAvatar.LoadRawTextureData(Image); m_LargeAvatar.Apply(); LargeAvatar.GetComponent <Image>().sprite = Sprite.Create(m_LargeAvatar, new Rect(0, 0, 32, 32), new Vector2(32, 32)); } } string mName = SteamFriends.GetFriendPersonaName(m); string inGame = ""; if (lobby.GetData <string>(m.ToString()) == "true") { inGame = " (IN GAME) "; } t3.text = inGame + "Member \"" + mName + "\" ID #" + m.m_SteamID.ToString(); Button kickButton = memberRow.transform.Find("Kick Button").GetComponent <Button>(); if (lobby.IsOwner) { var lobKick = lobby; // Capture it for the lambda that follows var memberToKick = m; kickButton.onClick.AddListener(() => ui_click_kickFromLobbyButtonPressed(kickButton, lobKick, memberToKick)); } else { kickButton.interactable = false; } if (lobby.OwnerId == (CSteamID)m.m_SteamID) { kickButton.interactable = false; } } } else { // Provide a join button var lobJoin = lobby; // Capture it for the lambda that follows joinButton.onClick.AddListener(() => ui_click_joinLobbyButtonPressed(joinButton, lobJoin)); } } // Yay all done }