public void Spectate(Password password, CreateSpectatorData data, ISpectatorSessionEventListener listener) { if(state == SessionState.Ended) throw new BadSessionStateException(); lock(Lock) { if(!this.data.SpectatorPassword.CheckPassword(password)) throw new BadSessionPasswordException(); if(spectators.Count >= this.data.MaxSpectators) throw new TooManySpectatorsException(); int id = spectators.GenerateID(); SessionSpectator spectator = new SessionSpectator(id, this, data); spectators.Add(id, spectator); spectatorList.Add(spectator); spectator.RegisterListener(listener); eventMgr.SendController(spectator); if(state == SessionState.Playing) game.RegisterSpectator(spectator); eventMgr.OnSpectatorJoinedSession(spectator); server.SaveState(); } }
public void RegisterListener(ISpectatorSessionEventListener listener) { this.listener = listener; }
public void UnregisterListener() { listener = null; }
/// <summary> /// Adds the listener to the list of member listeners. /// </summary> /// <param name="listener"> /// The listener to add. /// </param> public void AddListener(ISpectatorSessionEventListener listener) { if(!mainListeners.Contains(listener)) mainListeners.Add(listener); if(!spectatorListeners.Contains(listener)) spectatorListeners.Add(listener); }