public void RemoveOnlinePlayerChangedCallback(OnlinePlayerChangedDelegate callback)
 {
     if (_changedCallbacks != null)
     {
         _changedCallbacks.Remove(callback);
     }
 }
        public void RemovePendingAsyncGetOnlinePlayerCallback(OnlinePlayerChangedDelegate callback)
        {
            List <ulong> keysToRemove = new List <ulong>();

            foreach (var pair in _pendingAsyncPlayerGets)
            {
                pair.Value.RemoveAll(x => x == callback);
                if (pair.Value.Count == 0)
                {
                    var player = GetSteamPlayer(new CSteamID(pair.Key));
                    player.Dispose();                     // unref for pending callback.
                    player.Dispose();                     // unref for GetSteamPlayer()
                    keysToRemove.Add(pair.Key);
                }
            }

            if (keysToRemove.Count == _pendingAsyncPlayerGets.Count)
            {
                _pendingAsyncPlayerGets.Clear();
            }
            else
            {
                for (int i = 0; i < keysToRemove.Count; ++i)
                {
                    _pendingAsyncPlayerGets.Remove(keysToRemove[i]);
                }
            }
        }
 public void AddFriendshipChangedCallback(OnlinePlayerChangedDelegate callback)
 {
     if (!_friendChangedCallbacks.Contains(callback))
     {
         _friendChangedCallbacks.Add(callback);
     }
 }
        public void AsyncGetOnlinePlayer(ulong playerID, OnlinePlayerChangedDelegate callback)
        {
            var player = CreateSteamPlayer(new CSteamID(playerID));

            if (player.name == null)
            {
                List <OnlinePlayerChangedDelegate> changed;
                if (!_pendingAsyncPlayerGets.TryGetValue(playerID, out changed))
                {
                    player.AddRef();
                    changed = new List <OnlinePlayerChangedDelegate>();
                    _pendingAsyncPlayerGets.Add(playerID, changed);
                }
                if (!changed.Contains(callback))
                {
                    changed.Add(callback);
                }
            }
            else
            {
                callback(player, EOnlinePlayerChangedFlags.Name | EOnlinePlayerChangedFlags.Status | EOnlinePlayerChangedFlags.Avatar);
                if (DispatchAsyncPlayerGetCallbacks(player))
                {
                    player.Dispose();
                }
            }

            player.Dispose();
        }
 public void AddOnlinePlayerChangedCallback(OnlinePlayerChangedDelegate callback)
 {
     if (_changedCallbacks == null)
     {
         _changedCallbacks = new List <OnlinePlayerChangedDelegate>();
     }
     if (!_changedCallbacks.Contains(callback))
     {
         _changedCallbacks.Add(callback);
     }
 }
        public void AsyncGetOnlinePlayer(ulong uuid, OnlinePlayerChangedDelegate callback)
        {
            OnlineNullPlayer player;

            if (!_players.TryGetValue(uuid, out player))
            {
                player = new OnlineNullPlayer(new OnlineNullPlayerID(uuid), false);
                _players.Add(uuid, player);
            }
            callback(player, EOnlinePlayerChangedFlags.Name | EOnlinePlayerChangedFlags.Presence);
        }
 public void RemoveFriendshipChangedCallback(OnlinePlayerChangedDelegate callback)
 {
     _friendChangedCallbacks.Remove(callback);
 }
 public void AsyncGetOnlinePlayer(OnlinePlayerID id, OnlinePlayerChangedDelegate callback)
 {
     AsyncGetOnlinePlayer(id.uuid, callback);
 }
 public void AddFriendshipChangedCallback(OnlinePlayerChangedDelegate callback)
 {
 }
 public void RemoveOnlinePlayerChangedCallback(OnlinePlayerChangedDelegate callback)
 {
 }
 public void AddOnlinePlayerChangedCallback(OnlinePlayerChangedDelegate callback)
 {
 }
 public void RemovePendingAsyncGetOnlinePlayerCallback(OnlinePlayerChangedDelegate callback)
 {
 }