public void AddHandler(IFriendTrackerHandler listener) { TrackedSceneInfo wrapper; if (listeners.TryGetValue(listener, out wrapper)) { return; } wrapper = new TrackedSceneInfo(listener); if (friendsController.isInitialized) { ProcessNewListener(wrapper); } listeners.Add(listener, wrapper); }
void ProcessNewListener(TrackedSceneInfo listener) { Vector2Int friendCoords = new Vector2Int(); using (var friendIterator = friends.GetEnumerator()) { while (friendIterator.MoveNext()) { if (!friendIterator.Current.Value.IsOnline()) { continue; } friendCoords.x = (int)friendIterator.Current.Value.status.position.x; friendCoords.y = (int)friendIterator.Current.Value.status.position.y; if (listener.ContainCoords(friendCoords)) { friendIterator.Current.Value.AddListener(listener); } } } }
void OnListenerRemoved(TrackedSceneInfo listener) { listener.OnListenerDisposed -= OnListenerDisposed; listener.OnFriendRemoved(profile); }
void OnListenerDisposed(TrackedSceneInfo listener) { listener.OnListenerDisposed -= OnListenerDisposed; friendListeners.Remove(listener); }
public void RemoveListener(TrackedSceneInfo listener) { OnListenerRemoved(listener); friendListeners.Remove(listener); }
public void AddListener(TrackedSceneInfo listener) { listener.OnListenerDisposed += OnListenerDisposed; friendListeners.Add(listener); listener.OnFriendAdded(profile, backgroundColor); }