using UnityEngine; public class GameManager : MonoBehaviour { public Ghost[] ghosts; public Pacman pacman; public Transform pellets; public int ghostMultiplier { get; private set; } = 1; public int score { get; private set;} public int lives { get ; private set;} // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { NewGame(); } private void NewGame() { SetScore(0); Setlives(3); NewRound(); } private void NewRound() { foreach ( Transform pellet in this.pellets) { pellet.gameObject.SetActive(true); } ResetState(); } private void ResetState() { ResetGhostMultiplier(); for ( int i = 0; i < this.ghosts.Length; i++) { this.ghosts[i].ResetState(); } this.pacman.ResetState(); } private void GameOver() { for ( int i = 0; i < this.ghosts.Length; i++) { this.ghosts[i].gameObject.SetActive(false); } this.pacman.gameObject.SetActive(false); } private void SetScore(int score) { this.score = score; } private void Setlives(int lives){ this.lives =lives; } // Update is called once per frame void Update() { if(this.lives <= 0 && Input.anyKeyDown) { NewGame(); } } public void GhostEaten(Ghost ghost) { int points = ghost.points * this.ghostMultiplier; SetScore(this.score + points); this.ghostMultiplier++; } public void PacmanEaten() { this.pacman.gameObject.SetActive(false); Setlives(this.lives - 1); if(this.lives > 0) { Invoke(nameof(ResetState), 3.0f); }else { GameOver(); } } public void PelletEaten(Pellet pellet) { pellet.gameObject.SetActive(false); SetScore(this.score + pellet.points); if(!HasRemainigPellets()) { this.pacman.gameObject.SetActive(false); Invoke(nameof(NewRound), 3.0f); } } public void Power_PelletEaten(Power_Pellet pellet) { for( int i= 0; i < this.ghosts.Length; i++) { this.ghosts[i].Frightened.Enable(pellet.duration); } PelletEaten(pellet); CancelInvoke(); Invoke (nameof(ResetGhostMultiplier), pellet.duration); } public bool HasRemainigPellets() { foreach (Transform pellet in this.pellets) { if(pellet.gameObject.activeSelf) { return true; } } return false; } private void ResetGhostMultiplier() { this.ghostMultiplier = 1; } }