SteamKit2.SteamFriends.HandlePersonaState C# (CSharp) Method

HandlePersonaState() private method

private HandlePersonaState ( IPacketMsg packetMsg ) : void
packetMsg IPacketMsg
return void
        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;

                SteamID sourceId = friend.steamid_source;

                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;
                    }

                    if ( ( flags & EClientPersonaStateFlag.GameExtraInfo ) == EClientPersonaStateFlag.GameExtraInfo )
                    {
                        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;
                    }
                }
                else
                {
                }

                // todo: cache other details/account types?
            }

            foreach ( var friend in perState.Body.friends )
            {
#if STATIC_CALLBACKS
                var callback = new PersonaStateCallback( Client, friend );
                SteamClient.PostCallback( callback );
#else
                var callback = new PersonaStateCallback( friend );
                this.Client.PostCallback( callback );
#endif
            }
        }
        void HandleFriendResponse( IPacketMsg packetMsg )