void OnPersonaState(SK.SteamFriends.PersonaStateCallback callback)
{
SteamUser user;
if (callback.FriendID.ToString() == CurrentUser.SteamId.SteamId32)
{
user = CurrentUser;
// TODO: This check here is not properly done. Rethink.
if (user.Name == null)
{
ClientFullyLoaded?.Invoke(this, null);
}
}
else
{
user = Friends.FirstOrDefault(f => f.SteamId.SteamId32 == callback.FriendID.ToString());
}
if (user == null)
{
return;
}
bool newStatus = (callback.State != 0);
user.AvatarHash = community.GetFriendAvatar(new SK.SteamID(user.SteamId.SteamId32));
user.Name = community.GetPersonaName();
user.LastOnlineDate = new DateTime(Math.Max(callback.LastLogOn.Ticks, callback.LastLogOff.Ticks));
if (user.IsOnline != newStatus)
{
if (newStatus == true)
{
Console.WriteLine($"User '{user.Name}' is now online");
}
else
{
Console.WriteLine($"User '{user.Name}' is now offline");
}
user.IsOnline = newStatus;
}
}