private void OnLevelReset(object source, GameManagementEvent gameManagementEvent) { if (gameManagementEvent.GameEvent == GameManagementEvent.GameEvents.LevelReset) { _paddleController.ResetPaddleSize(); } }
private void DestroyOnReset(object source, GameManagementEvent gameManagementEvent) { if (gameManagementEvent.GameEvent == _conditionToDestroy) { DestroyImmediate(this.transform.gameObject); } }
private void Awake() { if (_ballParameters.Transform == null) _ballParameters.Transform = transform; PlayerBallController = DependencyResolver.GetPlayerBallController(_ballParameters); this.Rise(GameManagementEvent.OnBallSpawned()); }
/// <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()); }
private void CheckLoosCondition() { if (_onLevelLoading) { return; } if (_playerBalls == 0) { _deathScreen.gameObject.SetActive(true); this.Rise(GameManagementEvent.OnAllBallsDestroyed()); } }
private void OnGameEvent(object source, GameManagementEvent gameManagementEvent) { switch (gameManagementEvent.GameEvent) { case GameManagementEvent.GameEvents.PaddleHit: OnPaddleHit(); break; case GameManagementEvent.GameEvents.BallFlewAway: OnBallFlew(); break; } }
/// <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()); }
/// <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()); } }
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; } }
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()); } }
private void OnDestroy() { this.Rise(GameManagementEvent.OnBallDestroyed()); }
private void Awake() { SetUpController(); this.Rise(GameManagementEvent.OnBallSpawned()); }