using System.Collections.Generic; using System.Linq; using NPSharp.RPC; using NPSharp.RPC.Messages; using NPSharp.Steam; namespace NPSharp { /// /// Represents a remote client connection to an NP server. /// public class NPServerClient { internal readonly NPServer NP; internal readonly RPCServerStream RPC; private readonly Dictionary _presence = new Dictionary(); internal NPServerClient DedicatedServer; internal NPServerClient(NPServer np, RPCServerStream rpcclient) { NP = np; RPC = rpcclient; } public CSteamID UserID { get; internal set; } public IEnumerable Friends { get { return NP.FriendsHandler.GetFriends(this).ToArray(); } } public IEnumerable FriendConnections { get { return NP.Clients.Where(c => Friends.Any(f => f.NPID == c.UserID)); } } public FriendsPresence[] PresenceData { get { return _presence.Select(i => new FriendsPresence {Key = i.Key, Value = i.Value}).ToArray(); } } public bool IsServer { get; set; } public bool IsDirty { get; set; } public int GroupID { get; set; } internal void SetPresence(string key, string value) { if (!_presence.ContainsKey(key)) _presence.Add(key, value); else _presence[key] = value; } } }