diff --git a/Assets/Scripts/AudioManager.cs b/Assets/Scripts/AudioManager.cs index 94b656a..a59955e 100644 --- a/Assets/Scripts/AudioManager.cs +++ b/Assets/Scripts/AudioManager.cs @@ -6,6 +6,8 @@ public class AudioManager : MonoBehaviour [SerializeField] private GameManager _gameManager; [SerializeField] private AudioSource _levelBackgroundMusic; [SerializeField] private AudioSource _buildBackgroundMusic; + [SerializeField] private AudioSource _winMusic; + [SerializeField] private AudioSource _loseMusic; [SerializeField] private AudioSource[] _grassBlockDestroySound; [SerializeField] private AudioSource[] _moneyChangeSound; @@ -70,6 +72,16 @@ public class AudioManager : MonoBehaviour Stop(_levelBackgroundMusic); Play(_buildBackgroundMusic); break; + case GameManager.GameState.Win: + Stop(_levelBackgroundMusic); + Stop(_buildBackgroundMusic); + Play(_winMusic); + break; + case GameManager.GameState.Lose: + Stop(_levelBackgroundMusic); + Stop(_buildBackgroundMusic); + Play(_loseMusic); + break; } } diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 3606970..7f7d06d 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -7,7 +7,9 @@ public class GameManager : MonoBehaviour { BuildingPath, BuildingTurrets, - Level + Level, + Win, + Lose } [SerializeField] private Level[] _levels; diff --git a/Assets/Scripts/WinLoseController.cs b/Assets/Scripts/WinLoseController.cs index 89ea29b..d3885ab 100644 --- a/Assets/Scripts/WinLoseController.cs +++ b/Assets/Scripts/WinLoseController.cs @@ -40,8 +40,11 @@ public class WinLoseController : MonoBehaviour private void OnLastEnemyDestroyed() { - if (_isLastLevel) - _onWin?.Invoke(); + if (!_isLastLevel) + return; + + _gameManager.CurrentState = GameManager.GameState.Win; + _onWin?.Invoke(); } private void OnLevelChanged(GameManager.OnLevelChangedEventArgs args) @@ -52,6 +55,7 @@ public class WinLoseController : MonoBehaviour private void OnDeath() { + _gameManager.CurrentState = GameManager.GameState.Lose; _onGameOver?.Invoke(new OnGameOverEventArgs(_currentLevel)); }