コード例 #1
0
    void Start()
    {
        _messenger = Game.Container.Resolve <IMessenger>();

        _slappedToken = _messenger?.Subscribe <WasSlappedMessage>((message) =>
        {
            _slappedSource?.PlayOneShot(_slappedSource.clip);
        });

        _missToken = _messenger?.Subscribe <SlapMessage>((message) =>
        {
            _missSource?.PlayOneShot(_missSource.clip);
        });

        _jumpToken = _messenger?.Subscribe <JumpMessage>((message) =>
        {
            _jumpSource?.PlayOneShot(_jumpSounds[message.PlayerNumber % _jumpSounds.Count]);
        });

        _dashToken = _messenger?.Subscribe <DashAnimationMessage>((message) =>
        {
            _dashSource?.PlayOneShot(_dashSource.clip);
        });

        _deathToken = _messenger?.Subscribe <DeathMessage>((message) =>
        {
            _deathSource?.PlayOneShot(_deathSource.clip);
        });
    }
コード例 #2
0
 private void Init(IComponentUniqueId mathUniqueId, IComponentUniqueId limitsUniqueId)
 {
     this.MathUniqueID   = mathUniqueId;
     this.LimitsUniqueID = limitsUniqueId;
     _gameEngineRelocationSubscription = ServiceLocator.GetInstance <IPubSubMediator>()
                                         .Subscribe <ComponentRelocatedEventData <Folders.EngineFolder> >(GameEngineRelocatedEventHandler);
 }
コード例 #3
0
 public void Unsubscribe(ISubscriptionToken token, Type payloadType)
 {
     foreach (var subscription in GetSubscriptionForPayLoad(payloadType).Where(s => s.Token.Equals(token)).ToArray())
     {
         _subscriptions[payloadType].Remove(subscription);
     }
 }
コード例 #4
0
    private void Start()
    {
        _startTime = Time.time;

        _audioSource = GetComponent <AudioSource>();

        Core.Loggers.ILoggerFactory loggerFactory = Game.Container.Resolve <Core.Loggers.ILoggerFactory>();
        _logger = loggerFactory.Create(this);

        _messenger = Game.Container.Resolve <IMessenger>();

        _playerEnteredGoalMessageToken = _messenger.Subscribe((PlayerEnteredGoalMessage playerEnteredGoalMessage) =>
        {
            StartCoroutine(DelayedScreenSwitch());
        });

        _playerCrashedMessageToken = _messenger.Subscribe((PlayerCrashedMessage playerCrashedMessage) =>
        {
            ShowCrashMenu();
            _audioSource.Stop();
        });

        StartCoroutine(CountdownToLiftof());
        StartCoroutine(Countdown());
    }
コード例 #5
0
 public void Unsubscribe(ISubscriptionToken token)
 {
     lock (_subscriptionTokens)
     {
         _subscriptionTokens.Remove(token);
     }
 }
コード例 #6
0
        public void Should_unsubscribe_on_dispose_then_publish_event_to_subscribers()
        {
            //Arrange
            Messenger unit = GetUnit();

            UnitTestMessage unityTestMessage = new UnitTestMessage();

            //Act
            UnitTestMessage    message1          = null;
            ISubscriptionToken subscriptionToken = unit.Subscribe((UnitTestMessage message) =>
            {
                message1 = message;
            });
            UnitTestMessage message2 = null;

            unit.Subscribe((UnitTestMessage message) =>
            {
                message2 = message;
            });

            subscriptionToken.Dispose();

            unit.Publish(unityTestMessage);

            //Assert
            Assert.Null(message1);
            Assert.AreEqual(unityTestMessage, message2);
        }
コード例 #7
0
 public void Unsubscribe <TMessage>(ISubscriptionToken token) where TMessage : BaseMessage
 {
     lock (_locker)
     {
         var subscriptions = GetSubscriptionsFor <TMessage>();
         subscriptions.Remove(token.Id);
     }
 }
コード例 #8
0
        protected ISubscriptionToken AddSubscriber(ISubscriptionToken token)
        {
            lock (_subscriptionTokens)
            {
                _subscriptionTokens.Add(token);

                return(token);
            }
        }
コード例 #9
0
        private SubscriptionToken ExtractTokenFromWrapper(ISubscriptionToken subscriptionToken)
        {
            var tokenWrapper = subscriptionToken as SubscriptionTokenWrapper <SubscriptionToken>;

            if (tokenWrapper == null)
            {
                throw new ArgumentException($"{nameof(subscriptionToken)} must be of type {typeof(SubscriptionTokenWrapper<SubscriptionToken>).FullName}");
            }

            return(tokenWrapper.Token);
        }
コード例 #10
0
        public void Subscribe_Should_add_subscription_and_generate_a_subscription_token()
        {
            //Arrange
            Messenger unit = GetUnit();

            //Act
            ISubscriptionToken subscriptionToken = unit.Subscribe((UnitTestMessage message) => { });

            //Assert
            Assert.NotNull(subscriptionToken);
        }
コード例 #11
0
 public override void SetValue(object newValue, ILifetimeContainer container = null)
 {
     if (HttpContext.Current == null)
     {
         throw new InvalidOperationException("HttpContext not available");
     }
     HttpContext.Current.Items[_key] = newValue;
     if (newValue as IDisposable != null)
     {
         _disposeToken = HttpContext.Current.DisposeOnPipelineCompleted(newValue as IDisposable);
     }
 }
コード例 #12
0
    void Start()
    {
        _body = GetComponent <Rigidbody2D>();

        _logger    = Game.Container.Resolve <ILoggerFactory>().Create(this);
        _messenger = Game.Container.Resolve <IMessenger>();

        _slapMessageToken = _messenger.Subscribe <SlapMessage>((message) =>
        {
            HandleSlapped(message);
        });
    }
コード例 #13
0
 public override void RemoveValue(ILifetimeContainer container = null)
 {
     if (HttpContext.Current != null)
     {
         HttpContext.Current.Items.Remove(key);
         if (disposeToken != null)
         {
             disposeToken.Unsubscribe();
             disposeToken = null;
         }
     }
 }
コード例 #14
0
        public override void SetValue(object newValue, ILifetimeContainer container = null)
        {
            if (HttpContext.Current != null)
            {
                HttpContext.Current.Items[key] = newValue;
            }

            if (newValue as IDisposable != null)
            {
                disposeToken = HttpContext.Current.DisposeOnPipelineCompleted(newValue as IDisposable);
            }
        }
コード例 #15
0
        public void Unsubscribe_Should_unsubscribe_token()
        {
            //Arrange
            Messenger unit = GetUnit();

            ISubscriptionToken subscriptionToken = unit.Subscribe((UnitTestMessage message) => { });

            //Act
            unit.Unsubscribe(subscriptionToken);

            //Assert
        }
コード例 #16
0
    // Start is called before the first frame update
    void Start()
    {
        _animator         = _playerSkin.GetComponent <Animator>();
        _playerController = this.GetComponent <PlayerController>();
        _rigidbody        = this.GetComponent <Rigidbody2D>();
        _messenger        = Game.Container.Resolve <IMessenger>();
        _logger           = Game.Container.Resolve <ILoggerFactory>().Create(this);

        _changeDirectionToken = _messenger.Subscribe <ChangeDirectionMessage>((message) =>
        {
            if (message.PlayerNumber == _playerController.playerNumber)
            {
                _logger.Log($"Player {message.PlayerNumber} changed direction.");
                _playerSkin.transform.localScale = new Vector3(_playerSkin.transform.localScale.x * -1f, _playerSkin.transform.localScale.z, _playerSkin.transform.localScale.z);
            }
        });

        _dashAnimationToken = _messenger.Subscribe <DashAnimationMessage>((message) =>
        {
            if (message.PlayerNumber == _playerController.playerNumber && _dashParticlePrefab != null)
            {
                if (_playerSkin != null)
                {
                    var particles = GameObject.Instantiate(_dashParticlePrefab);
                    particles.transform.SetParent(_playerSkin.transform);
                    particles.transform.localScale    = Vector3.one;
                    particles.transform.localPosition = Vector3.zero;
                }
            }
        });

        _slappedAnimationToken = _messenger.Subscribe <WasSlappedMessage>((message) =>
        {
            if (message.PlayerNumber == _playerController.playerNumber && _slapParticlePrefab != null)
            {
                if (_playerSkin != null)
                {
                    var particles = GameObject.Instantiate(_slapParticlePrefab);
                    particles.transform.SetParent(_playerSkin.transform);
                    particles.transform.localScale    = Vector3.one;
                    particles.transform.localPosition = Vector3.zero;
                }
            }
        });
    }
コード例 #17
0
    private void Start()
    {
        Core.Loggers.ILoggerFactory loggerFactory = Game.Container.Resolve <Core.Loggers.ILoggerFactory>();
        _logger = loggerFactory.Create(this);

        _audioSource = GetComponent <AudioSource>();

        _messenger = Game.Container.Resolve <IMessenger>();

        _liftoffToken = _messenger.Subscribe((LiftoffMessage liftoffMessage) =>
        {
            _audioSource.Play();
            isStarted  = true;
            _startTime = Time.time;
        });

        _playerEnteredGoalMessageToken = _messenger.Subscribe((PlayerEnteredGoalMessage playerEnteredGoalMessage) =>
        {
            isFinished     = true;
            _verticalSpeed = 3f;
        });

        _playerCrashedMessageToken = _messenger.Subscribe((PlayerCrashedMessage playerCrashedMessage) =>
        {
            if (playerCrashedMessage.Sender != this)
            {
                _isAlive = false;
                _audioSource.Stop();
            }
        });



        _rigidbody2D = GetComponent <Rigidbody2D>();
        _transform   = GetComponent <Transform>();

        _startTime = Time.time;
    }
コード例 #18
0
    private void Start()
    {
        _transform = GetComponent <Transform>();

        Core.Loggers.ILoggerFactory loggerFactory = Game.Container.Resolve <Core.Loggers.ILoggerFactory>();
        _logger = loggerFactory.Create(this);
        if (_target == null)
        {
            _logger.Error("No target found");
        }

        _messenger = Game.Container.Resolve <IMessenger>();

        _liftofToken = _messenger.Subscribe((LiftoffMessage liftoffMessage) =>
        {
            isStarted  = true;
            _startTime = Time.time;
        });

        _playerEnteredGoalMessageToken = _messenger.Subscribe((PlayerEnteredGoalMessage playerEnteredGoalMessage) =>
        {
            isFinished = true;
        });

        _playerCrashedMessageToken = _messenger.Subscribe((PlayerCrashedMessage playerCrashedMessage) =>
        {
            isCrashed = true;
        });

        _sceneStartTime = Time.time;
        //_transform.position = new Vector3(transform.position.x, _target.position.y + _offset, transform.position.z);

        _offset = _transform.position.y - _target.position.y;

        _cameraStartPosition = transform.position;
    }
コード例 #19
0
 public void Unsubscribe <TPayload>(ISubscriptionToken subscriptionToken)
 {
     Unsubscribe(subscriptionToken, typeof(TPayload));
 }
コード例 #20
0
 /// <summary>
 /// This handles the Unregistering of Message Subscribers when this VM is destroyed.
 /// </summary>
 /// <param name="subscriptionToken">The ISubscriptionToken to unregister</param>
 protected void HandleSubscriptionOnDispose(ISubscriptionToken subscriptionToken)
 {
     _subscriptionTokens.Add(subscriptionToken);
 }
コード例 #21
0
 public void Unsubscribe(ISubscriptionToken subscriptionToken)
 {
     Unsubscribe(subscriptionToken.Id, subscriptionToken.MessageType);
 }
コード例 #22
0
 public void Unsubscribe <TPayload>(ISubscriptionToken subscriptionToken)
 {
     _eventAggregator.GetEvent <PubSubEvent <TPayload> >().Unsubscribe(ExtractTokenFromWrapper(subscriptionToken));
 }
コード例 #23
0
 public void Unsubscribe(ISubscriptionToken subscriptionToken, Type payloadType)
 {
     GetEvent(payloadType).Unsubscribe(ExtractTokenFromWrapper(subscriptionToken));
 }