Пример #1
0
    public void ResetLevel()
    {
        StopAllCoroutines();
        Time.timeScale = 1f;

        scoreSystem.ResetScore();

        gui.gameObject.SetActive(true);                 //TODO only enable the ui upon player control
        gui.LevelReset();
        pauseMenu.gameObject.SetActive(false);
        cameraShakeModule.StopAllShaking();

        playArea.SetCamsToMode(initialMode);
        playArea.SetAreaToMode(initialMode);
        playArea.SetMode(initialMode);

        levelTrackFollower.LevelReset();

//		enemySpawner.LevelReset();
//		enemySpawner.SetMode(initialMode);

        enemySystem.LevelReset();
        worldObstacleContainer.LevelReset();

        foreach (ObjectPool pool in objectPools)
        {
            pool.ResetPool();
        }

        for (int i = 0; i < players.Length; i++)
        {
            Player player = players[i];
            player.gameObject.SetActive(true);
            player.LevelResetInit(playerMaxLives);
            player.Mode             = initialMode;
            player.transform.parent = playArea.transform;
            playArea.PutPlayerObjectToSpawnPoint(player.gameObject, playerOffsets[i]);
            playerRespawnStartTimes[i] = 0f;
            playerGameover[i]          = false;
            player.enabled             = false;
            player.SetRegularComponentsActive(false);

            StartCoroutine(playArea.TransitionPlayerWhileRespawning(player.gameObject, playerOffsets[i], levelResetPlayerControlDelay));
            StartCoroutine(WaitAndEnablePlayerControl(player, levelResetPlayerControlDelay));
        }
    }