Beispiel #1
0
    /// <summary>
    /// Exits a level, generating the next one
    /// </summary>
    public static void NextLevel()
    {
        //Randomizes the gamemode
        if (Settings.RandomizedGamemode)
        {
            Settings.KeyMode   = GeneratorRNG.Next(2) == 0;
            Settings.BlindMode = GeneratorRNG.Next(3) == 0;
            Settings.CoinMode  = GeneratorRNG.Next(2) == 0;
        }

        //The player finsihed by exiting through the door. Register it
        if (CurrentLevel.Player.Alive)
        {
            History.Register(CurrentLevel.Perfect ? LevelOutcome.PerfectClear : LevelOutcome.Clear);
        }
        //TODO Implement skip button
        //The player hit skip
        else
        {
            //If the player has moved and clicked skip, count a death
            if (CurrentLevel.Player.Steps.Count > 0)
            {
                History.Register(LevelOutcome.Death);
            }
            //If not, do not register the skip as anything
        }

        //Start the next level
        StartLevel(Settings.Generator.GenerateLevel());
    }
Beispiel #2
0
    /// <summary>
    /// Starts the game
    /// </summary>
    public static void StartNewGame() //BM Game Starter
    {
        //Ends the current game session
        if (GameplayStatus != GameplayStaus.MainMenu)
        {
            Events.OnGameEnd.Invoke();
        }

        //Sets up RNGs
        if (Settings.GenerateRandomSeed)
        {
            Settings.Seed = UnityEngine.Random.Range(0, int.MaxValue);
        }

        _this._rng  = new System.Random(Settings.Seed);
        _this._rng2 = new System.Random(Settings.Seed);

        //Clears the level log
        _this._log = new LevelHistory();

        //Randomizes the gamemode
        if (Settings.RandomizedGamemode)
        {
            Settings.KeyMode   = GeneratorRNG.Next(2) == 0;
            Settings.BlindMode = GeneratorRNG.Next(3) == 0;
            Settings.CoinMode  = GeneratorRNG.Next(2) == 0;
        }

        //Generates the level
        StartLevel(Settings.Generator.GenerateLevel());

        Events.OnGameStart.Invoke();
    }