Esempio n. 1
0
 private void OnLevelReset(object source, GameManagementEvent gameManagementEvent)
 {
     if (gameManagementEvent.GameEvent == GameManagementEvent.GameEvents.LevelReset)
     {
         _paddleController.ResetPaddleSize();
     }
 }
Esempio n. 2
0
 private void DestroyOnReset(object source, GameManagementEvent gameManagementEvent)
 {
     if (gameManagementEvent.GameEvent == _conditionToDestroy)
     {
         DestroyImmediate(this.transform.gameObject);
     }
 }
Esempio n. 3
0
 private void Awake()
 {
     if (_ballParameters.Transform == null)
         _ballParameters.Transform = transform;
     
     PlayerBallController = DependencyResolver.GetPlayerBallController(_ballParameters);
     this.Rise(GameManagementEvent.OnBallSpawned());
 }
Esempio n. 4
0
        /// <summary> Используется для вызова в <see cref="OnBallCollisionMono.OnBallCollisionEvent"/> </summary>
        public void OnBallCollision(ContactPoint2D playerBallContactPoint)
        {
            //GetComponent это медлено, но ситуация, когда мяч улетел за край карты, возникает редко
            var playerBallComponent = playerBallContactPoint.collider.transform.GetComponent <PlayerBallMono>();

            playerBallComponent.PlayerBallController.PauseBall();
            this.Rise(GameManagementEvent.OnBallFlewAway());
        }
Esempio n. 5
0
        private void CheckLoosCondition()
        {
            if (_onLevelLoading)
            {
                return;
            }

            if (_playerBalls == 0)
            {
                _deathScreen.gameObject.SetActive(true);
                this.Rise(GameManagementEvent.OnAllBallsDestroyed());
            }
        }
Esempio n. 6
0
        private void OnGameEvent(object source, GameManagementEvent gameManagementEvent)
        {
            switch (gameManagementEvent.GameEvent)
            {
            case GameManagementEvent.GameEvents.PaddleHit:
                OnPaddleHit();
                break;

            case GameManagementEvent.GameEvents.BallFlewAway:
                OnBallFlew();
                break;
            }
        }
Esempio n. 7
0
        /// <inheritdoc />
        public void OnPaddleHit(ContactPoint2D ballHitContact)
        {
            var ballRigidBody = ballHitContact.rigidbody;

            if (ballRigidBody == null)
            {
                throw new Exception($"Предполагается, что в игре у шарика обязательно должен быть {nameof(Rigidbody2D)}");
            }

            PlayPaddleEffect(ballHitContact, ballRigidBody);
            AddBallMovementOffset(ballHitContact, ballRigidBody);

            _dispatcher.Rise(this, GameManagementEvent.OnPaddleHit());
        }
Esempio n. 8
0
 /// <inheritdoc />
 public void InitBrick()
 {
     if (IsDead())
     {
         _logger.LogWarning("Был создан кирпичик без единой жизни, он будет сразу же разрушен");
         Object.Destroy(_brickParameters.BrickTransform.gameObject);
     }
     else
     {
         var currentLive = _brickParameters.Lives[_currentLiveId];
         _brickParameters.BrickSpriteHolder.sprite = currentLive.LiveSprite;
         _messageDispatcher.Rise(this, GameManagementEvent.OnBrickSpawned());
     }
 }
Esempio n. 9
0
        private void OnGameEvent(object source, GameManagementEvent gameManagementEvent)
        {
            switch (gameManagementEvent.GameEvent)
            {
            case GameManagementEvent.GameEvents.BrickSpawned:
                OnBrickSpawned();
                return;

            case GameManagementEvent.GameEvents.BallSpawned:
                _playerBalls++;
                return;

            case GameManagementEvent.GameEvents.BallDestroyed:
                _playerBalls--;
                CheckLoosCondition();
                return;
            }
        }
Esempio n. 10
0
        private void CheckWinCondition()
        {
            if (_onLevelLoading)
            {
                return;
            }

            if (_leftedBrick == 0)
            {
                if (_nextLevelId < _gameLevels.Length)
                {
                    _levelComplited.gameObject.SetActive(true);
                }
                else
                {
                    _winScreen.gameObject.SetActive(true);
                }

                this.Rise(GameManagementEvent.OnLevelEnded());
            }
        }
Esempio n. 11
0
 private void OnDestroy()
 {
     this.Rise(GameManagementEvent.OnBallDestroyed());
 }
Esempio n. 12
0
 private void Awake()
 {
     SetUpController();
     this.Rise(GameManagementEvent.OnBallSpawned());
 }