public GameState( GameRoundEntity owner, GameStateModel model, UserInputModel userInputModel, JesterEntity jesterEntity, AudioService audioService, ParticleService particleService) : base(owner) { _model = model; _userInputModel = userInputModel; _jesterEntity = jesterEntity; _audioService = audioService; _particleService = particleService; _audioService.ResetPausedSlots(); _particleService.ResetPausedSlots(); _userInputModel.OnPause .Subscribe(_ => model.IsPaused.Value = !model.IsPaused.Value) .AddTo(owner); _jesterEntity.OnKicked .Subscribe(_ => model.OnRoundStart.Execute()) .AddTo(owner); _jesterEntity.OnLanded .Subscribe(_ => model.OnRoundEnd.Execute()) .AddTo(owner); _model.IsPaused .Subscribe(OnPauseChanged) .AddTo(owner); }