mirror of
https://github.com/Facepunch/Facepunch.Steamworks.git
synced 2024-12-25 06:05:46 +03:00
Fix GetAvatar sometimes failing instead of waiting for the avatar to load
This commit is contained in:
parent
438127288a
commit
13280cd57c
@ -271,11 +271,21 @@ public void GetAvatar( AvatarSize size, ulong steamid, Action<Image> callback )
|
|||||||
// Lets request it from Steam
|
// Lets request it from Steam
|
||||||
if (!client.native.friends.RequestUserInformation(steamid, false))
|
if (!client.native.friends.RequestUserInformation(steamid, false))
|
||||||
{
|
{
|
||||||
// Steam told us to get fucked
|
// from docs: false means that we already have all the details about that user, and functions that require this information can be used immediately
|
||||||
callback(null);
|
// but that's probably not true because we just checked the cache
|
||||||
|
|
||||||
|
// check again in case it was just a race
|
||||||
|
image = GetCachedAvatar(size, steamid);
|
||||||
|
if ( image != null )
|
||||||
|
{
|
||||||
|
callback(image);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// maybe Steam returns false if it was already requested? just add another callback and hope it comes
|
||||||
|
// if not it'll time out anyway
|
||||||
|
}
|
||||||
|
|
||||||
PersonaCallbacks.Add( new PersonaCallback
|
PersonaCallbacks.Add( new PersonaCallback
|
||||||
{
|
{
|
||||||
SteamId = steamid,
|
SteamId = steamid,
|
||||||
@ -326,7 +336,10 @@ internal void Cycle()
|
|||||||
{
|
{
|
||||||
if ( cb.Callback != null )
|
if ( cb.Callback != null )
|
||||||
{
|
{
|
||||||
cb.Callback( null );
|
// final attempt, will be null unless the callback was missed somehow
|
||||||
|
var image = GetCachedAvatar( cb.Size, cb.SteamId );
|
||||||
|
|
||||||
|
cb.Callback( image );
|
||||||
}
|
}
|
||||||
|
|
||||||
PersonaCallbacks.Remove( cb );
|
PersonaCallbacks.Remove( cb );
|
||||||
|
Loading…
Reference in New Issue
Block a user