5 using System.Collections.Generic;
34 public List<User> CurrentUsers {
get;
private set; }
38 CurrentUsers =
new List<User>();
40 serverSessionsTracker = sessionsTracker;
42 serverSessionsTracker.CurrentUserLeft += OnCurrentUserLeftSession;
44 serverSessionsTracker.UserJoined += OnUserJoinedSession;
45 serverSessionsTracker.UserLeft += OnUserLeftSession;
55 for (
int u = 0; u < CurrentUsers.Count; u++)
57 User user = CurrentUsers[u];
58 if (user.
GetID() == userId)
71 GC.SuppressFinalize(
this);
74 protected virtual void Dispose(
bool disposing)
78 serverSessionsTracker.CurrentUserJoined -= OnCurrentUserJoinedSession;
79 serverSessionsTracker.CurrentUserLeft -= OnCurrentUserLeftSession;
81 serverSessionsTracker.UserJoined -= OnUserJoinedSession;
82 serverSessionsTracker.UserLeft -= OnUserLeftSession;
88 private void OnCurrentUserJoinedSession(
Session joinedSession)
93 ClearCurrentSession();
99 CurrentUsers.Add(user);
100 UserJoined.RaiseEvent(user);
104 private void OnCurrentUserLeftSession(
Session leftSession)
109 ClearCurrentSession();
112 private void OnUserJoinedSession(
Session session,
User user)
119 if (!CurrentUsers.Contains(user))
122 for (
int i = CurrentUsers.Count - 1; i >= 0; i--)
124 if (CurrentUsers[i].GetID() == user.
GetID())
126 CurrentUsers.RemoveAt(i);
130 CurrentUsers.Add(user);
131 UserJoined.RaiseEvent(user);
136 private void OnUserLeftSession(
Session session,
User user)
143 for (
int i = CurrentUsers.Count - 1; i >= 0; i--)
145 if (CurrentUsers[i].GetID() == user.
GetID())
147 CurrentUsers.RemoveAt(i);
148 UserLeft.RaiseEvent(user);
159 private void ClearCurrentSession()
161 for (
int i = 0; i < CurrentUsers.Count; i++)
163 UserLeft.RaiseEvent(CurrentUsers[i]);
166 CurrentUsers.Clear();