void HandlePersonaState(IPacketMsg packetMsg) { var perState = new ClientMsgProtobuf <CMsgClientPersonaState>(packetMsg); EClientPersonaStateFlag flags = ( EClientPersonaStateFlag )perState.Body.status_flags; foreach (var friend in perState.Body.friends) { SteamID friendId = friend.friendid; if (friendId.IsIndividualAccount) { User cacheFriend = cache.GetUser(friendId); if ((flags & EClientPersonaStateFlag.PlayerName) == EClientPersonaStateFlag.PlayerName) { cacheFriend.Name = friend.player_name; } if ((flags & EClientPersonaStateFlag.Presence) == EClientPersonaStateFlag.Presence) { cacheFriend.AvatarHash = friend.avatar_hash; cacheFriend.PersonaState = ( EPersonaState )friend.persona_state; cacheFriend.PersonaStateFlags = ( EPersonaStateFlag )friend.persona_state_flags; } if ((flags & EClientPersonaStateFlag.GameDataBlob) == EClientPersonaStateFlag.GameDataBlob) { cacheFriend.GameName = friend.game_name; cacheFriend.GameID = friend.gameid; cacheFriend.GameAppID = friend.game_played_app_id; } } else if (friendId.IsClanAccount) { Clan cacheClan = cache.Clans.GetAccount(friendId); if ((flags & EClientPersonaStateFlag.PlayerName) == EClientPersonaStateFlag.PlayerName) { cacheClan.Name = friend.player_name; } if ((flags & EClientPersonaStateFlag.Presence) == EClientPersonaStateFlag.Presence) { cacheClan.AvatarHash = friend.avatar_hash; } } else { } // todo: cache other details/account types? } foreach (var friend in perState.Body.friends) { var callback = new PersonaStateCallback(friend); this.Client.PostCallback(callback); } }
/// <summary> /// Requests persona state for a specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamId">A SteamID to request the info of.</param> /// <param name="requestedInfo">The requested info flags. If none specified, this uses <see cref="SteamConfiguration.DefaultPersonaStateFlags"/>.</param> public void RequestFriendInfo(SteamID steamId, EClientPersonaStateFlag requestedInfo = 0) { if (steamId == null) { throw new ArgumentNullException(nameof(steamId)); } RequestFriendInfo(new SteamID[] { steamId }, requestedInfo); }
/// <summary> /// Requests persona state for a list of specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamIdList">A list of SteamIDs to request the info of.</param> /// <param name="requestedInfo">The requested info flags.</param> public void RequestFriendInfo(IEnumerable <SteamID> steamIdList, EClientPersonaStateFlag requestedInfo = defaultInfoRequest) { var request = new ClientMsgProtobuf <CMsgClientRequestFriendData>(EMsg.ClientRequestFriendData); request.Body.friends.AddRange(steamIdList.Select(sID => sID.ConvertToUInt64())); request.Body.persona_state_requested = ( uint )requestedInfo; this.Client.Send(request); }
/// <summary> /// Requests persona state for a list of specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamIdList">A list of SteamIDs to request the info of.</param> /// <param name="requestedInfo">The requested info flags. If none specified, this uses <see cref="SteamConfiguration.DefaultPersonaStateFlags"/>.</param> public void RequestFriendInfo(IEnumerable <SteamID> steamIdList, EClientPersonaStateFlag requestedInfo = default(EClientPersonaStateFlag)) { if (steamIdList == null) { throw new ArgumentNullException(nameof(steamIdList)); } if (requestedInfo == default(EClientPersonaStateFlag)) { requestedInfo = Client.Configuration.DefaultPersonaStateFlags; } var request = new ClientMsgProtobuf <CMsgClientRequestFriendData>(EMsg.ClientRequestFriendData); request.Body.friends.AddRange(steamIdList.Select(sID => sID.ConvertToUInt64())); request.Body.persona_state_requested = ( uint )requestedInfo; this.Client.Send(request); }
/// <summary> /// Requests persona state for a specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamId">A SteamID to request the info of.</param> /// <param name="requestedInfo">The requested info flags.</param> public void RequestFriendInfo( SteamID steamId, EClientPersonaStateFlag requestedInfo = defaultInfoRequest ) { RequestFriendInfo( new SteamID[] { steamId }, requestedInfo ); }
/// <summary> /// Requests persona state for a list of specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamIdList">A list of SteamIDs to request the info of.</param> /// <param name="requestedInfo">The requested info flags.</param> public void RequestFriendInfo( IEnumerable<SteamID> steamIdList, EClientPersonaStateFlag requestedInfo = defaultInfoRequest ) { var request = new ClientMsgProtobuf<CMsgClientRequestFriendData>( EMsg.ClientRequestFriendData ); request.Body.friends.AddRange( steamIdList.Select( sID => sID.ConvertToUInt64() ) ); request.Body.persona_state_requested = ( uint )requestedInfo; this.Client.Send( request ); }
public ISteamConfigurationBuilder WithDefaultPersonaStateFlags(EClientPersonaStateFlag personaStateFlags) { state.DefaultPersonaStateFlags = personaStateFlags; return(this); }
/// <summary> /// Requests persona state for a specified SteamID. /// Results are returned in <see cref="SteamFriends.PersonaStateCallback"/>. /// </summary> /// <param name="steamId">A SteamID to request the info of.</param> /// <param name="requestedInfo">The requested info flags.</param> public void RequestFriendInfo(SteamID steamId, EClientPersonaStateFlag requestedInfo = defaultInfoRequest) { RequestFriendInfo(new SteamID[] { steamId }, requestedInfo); }