DAY 6
I changed a little the GameManager to add the ability of restart the game whe you die. And i had to add some functions to initialize things.
So, when the level is loaded the game starts
private void Play() { _currentLevel.StartLevel(); Instantiate(_playerPrefab, _currentLevel.PlayerStartingPoint.position, Quaternion.identity); _state = GameState.PLAYING_LEVEL; }
I guess I can let the level instantiate the player but for now I will do it in the GameManager. And when the player die, I just have to call Play again, without reloading the level.
PlayerController
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.CompareTag("Enemy")) { GameManager.Instance.GameOver(); Destroy(gameObject); } }
GameManager
public void GameOver() { _state = GameState.RESTARTING_LEVEL; }
private void Update() { if (_state.Equals(GameState.PLAYING_LEVEL)) { if (_currentLevel.PrisonersCount == 0 && _currentLevel.IsTeleporterActive() == false) { _currentLevel.ActivateTeleporter(); } } else if (_state.Equals(GameState.RESTARTING_LEVEL)) { Play(); } }
I hope its work.
When all the prisoners are freed, the teleporter should be activatedWhen player die the level should be restarted
Next steps: UI