Exemple #1
0
        // Event handler for Update event
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            //might move this junk out of consoleupdate to clean up, but this moves char for now
            bool       didPlayerAct = false;
            RLKeyPress keyPress     = _rootConsole.Keyboard.GetKeyPress();

            if (CommandSystem.IsPlayerTurn)
            {
                if (keyPress != null)
                {
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        _rootConsole.Close();
                    }
                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            _mapLevel += 1;
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 50, 5, 13, _mapLevel);
                            DungeonMap    = mapGenerator.CreateMap();
                            MessageLog    = new MessageLog();
                            CommandSystem = new CommandSystem();
                            string consoleTitle = $"D$ DungeonZ Level {_mapLevel} - Seed {seed}";
                            didPlayerAct = true;
                        }
                    }
                }

                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }
        }
Exemple #2
0
        public static bool AttemptMoveDownDungeonLevel()
        {
            if (DungeonMap.CanMoveDownToNextLevel())
            {
                MoveDownDungeonLevel();
            }

            return(false);
        }
Exemple #3
0
        // Event handler for RLNET's Update event
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            bool       didPlayerAct = false;
            RLKeyPress keyPress     = _rootConsole.Keyboard.GetKeyPress();

            if (CommandSystem.IsPlayerTurn)
            {
                if (keyPress != null)
                {
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        _rootConsole.Close();
                    }

                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                            DungeonMap         = mapGenerator.CreateMap();
                            MessageLog         = new MessageLog();
                            CommandSystem      = new CommandSystem();
                            _rootConsole.Title = $"RougeSharp RLNet Tutorial - Level {_mapLevel}";
                            didPlayerAct       = true;
                        }
                    }
                }

                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }
        }
Exemple #4
0
        // Event handler for RLNET's Update event
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, Palette.DbWood);
            _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading);
            bool       didPlayerAct = false;
            RLKeyPress keyPress     = _rootConsole.Keyboard.GetKeyPress();

            if (CommandSystem.IsPlayerTurn)
            {
                if (keyPress != null)
                {
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Directions.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Directions.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Directions.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Directions.Right);
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        _rootConsole.Close();
                    }
                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                            DungeonMap         = mapGenerator.CreateMap();
                            MessageLog         = new MessageLog();
                            CommandSystem      = new CommandSystem();
                            _rootConsole.Title = $"SharpRogue - Level {_mapLevel}";
                            didPlayerAct       = true;
                        }
                    }
                }
                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }
        }
Exemple #5
0
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            // draw the console that we setup

            //Write this code at the start too check if your console update method has actually worked first
            //_rootConsole.Print(10, 10, "It worked", RLColor.Green);

            bool       didPlayerAct = false;
            RLKeyPress keyPress     = _rootConsole.Keyboard.GetKeyPress();

            if (commandSystem.IsPlayerTurn)
            {
                //if you have pressed a key
                if (keyPress != null)
                {
                    //checks what key you have pressed if it was up down left or right and depending on the key
                    //uses the command system class too find you new position on the map
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = commandSystem.MovePlayer(Direction.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = commandSystem.MovePlayer(Direction.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = commandSystem.MovePlayer(Direction.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = commandSystem.MovePlayer(Direction.Right);
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        _rootConsole.Close();
                    }

                    //if player is on a stairs going down cell and presses period it will create a new map and message log and
                    //command system it will increase the map level and show it and change player act too true
                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                            DungeonMap         = mapGenerator.CreateMap();
                            messageLog         = new MessageLog();
                            commandSystem      = new CommandSystem();
                            _rootConsole.Title = $"RougeSharp - Level {_mapLevel}";
                            didPlayerAct       = true;

                            player.MaxHealth += 5;
                            player.Health     = player.MaxHealth;

                            player.Gold += 20;
                        }
                    }
                }
            }
            if (didPlayerAct)
            {
                //counts the steps player took
                //messageLog.Add($"Step # {++_steps}");

                _renderRequired = true;
                commandSystem.EndPlayerTurn();
            }
            else
            {
                commandSystem.ActivateMonsters();
                _renderRequired = true;
            }


            //set the background color and text for each console except the map and message consoles
            //_messageConsole.SetBackColor(0, 0, _messageWidth, _messageHeight, RLColor.Red);

            //_statConsole.SetBackColor(0, 0, _statWidth, _statHeight, RLColor.Red);
            //_statConsole.Print(1, 1, "Stats", Colors.TextHeading);

            _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, RLColor.Cyan);
            _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading);
        }
    private IEnumerator OnRootConsoleUpdate()
    {
        while (Application.isPlaying)
        {
            bool didPlayerAct = false;

            if (TargetingSystem.IsPlayerTargeting)
            {
                if (Input.anyKeyDown)
                {
                    _renderRequired = true;
                    foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
                    {
                        if (Input.GetKey(vKey))
                        {
                            TargetingSystem.HandleKey(vKey);
                        }
                    }
                }
            }
            else if (CommandSystem.IsPlayerTurn)
            {
                if (Input.anyKeyDown)
                {
                    if (Input.GetKeyDown(KeyCode.UpArrow))
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                    }
                    else if (Input.GetKeyDown(KeyCode.DownArrow))
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                    }
                    else if (Input.GetKeyDown(KeyCode.LeftArrow))
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                    }
                    else if (Input.GetKeyDown(KeyCode.RightArrow))
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                    }
                    else if (Input.GetKeyDown(KeyCode.Escape))
                    {
                        //_rootConsole.Close();
                    }
                    else if (Input.GetKeyDown(KeyCode.Period))
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                            DungeonMap    = mapGenerator.CreateMap();
                            MessageLog    = new MessageLog();
                            CommandSystem = new CommandSystem();
                            //_rootConsole.Title = string.Format("RougeSharp RLNet Tutorial - Level {0}", _mapLevel);
                            didPlayerAct = true;
                        }
                    }
                    else
                    {
                        foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
                        {
                            if (Input.GetKey(vKey))
                            {
                                didPlayerAct = CommandSystem.HandleKey(vKey);
                            }
                        }
                    }

                    if (didPlayerAct)
                    {
                        _renderRequired = true;
                        CommandSystem.EndPlayerTurn();
                    }
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }

            yield return(null);
        }
    }
Exemple #7
0
        protected override void Update(GameTime gameTime)
        {
            bool didPlayerAct = false;

            _inputState.Update(gameTime);

            if (TargetingSystem.IsPlayerTargeting)
            {
                _renderRequired = true;
                TargetingSystem.HandleInput(_inputState);
            }
            else if (CommandSystem.IsPlayerTurn)
            {
                if (_inputState.IsKeyPressed(Keys.Up))
                {
                    MapMessageLog.Add("");
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                }
                else if (_inputState.IsKeyPressed(Keys.Down))
                {
                    MapMessageLog.Add("");
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                }
                else if (_inputState.IsKeyPressed(Keys.Left))
                {
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                }
                else if (_inputState.IsKeyPressed(Keys.Right))
                {
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                }
                else if (_inputState.IsKeyPressed(Keys.Escape))
                {
                    this.Exit();
                }
                else if (_inputState.IsKeyPressed(Keys.OemPeriod))
                {
                    if (DungeonMap.CanMoveDownToNextLevel())
                    {
                        MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                        DungeonMap        = mapGenerator.CreateMap();
                        MessageLog        = new MessageLog();
                        CommandSystem     = new CommandSystem();
                        this.Window.Title = $"Sean's RogueLike Engine 3 - Level {_mapLevel}";
                        didPlayerAct      = true;
                    }
                }
                else
                {
                    didPlayerAct = CommandSystem.HandleInput(_inputState);
                }

                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }
            base.Update(gameTime);
        }
Exemple #8
0
 /// <summary>
 /// Allow player to interact with the overworld.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void OnOverworldUpdate(object sender, UpdateEventArgs e)
 {
     // Event handler for RLNET's Update event
     didPlayerAct = false;
     keyPress     = console.Keyboard.GetKeyPress();
     if (CommandSystem.IsPlayerTurn)
     {
         if (keyPress != null)
         {
             // User presses a direction
             if (keyPress.Key == RLKey.Keypad1)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.DownLeft);
             }
             else if (keyPress.Key == RLKey.Down || keyPress.Key == RLKey.Keypad2)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
             }
             else if (keyPress.Key == RLKey.Keypad3)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.DownRight);
             }
             else if (keyPress.Key == RLKey.Left || keyPress.Key == RLKey.Keypad4)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
             }
             else if (keyPress.Key == RLKey.Right || keyPress.Key == RLKey.Keypad6)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
             }
             else if (keyPress.Key == RLKey.Keypad7)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.UpLeft);
             }
             else if (keyPress.Key == RLKey.Up || keyPress.Key == RLKey.Keypad8)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
             }
             else if (keyPress.Key == RLKey.Keypad9)
             {
                 didPlayerAct = CommandSystem.MovePlayer(Direction.UpRight);
             }
             // User exits game
             else if (keyPress.Key == RLKey.Escape)
             {
                 console.Close();
             }
             // User walks down stairs
             else if (keyPress.Key == RLKey.KeypadPeriod || keyPress.Key == RLKey.Period)
             {
                 if (DungeonMap.CanMoveDownToNextLevel())
                 {
                     _mapLevel += 1;
                     if (_mapLevel > DungeonMaps.Count)
                     {
                         MapGenerator mapGenerator = new MapGenerator(
                             Dimensions.WorldWidth,
                             Dimensions.WorldHeight,
                             maxRooms,
                             maxRoomWidth,
                             maxRoomHeight,
                             _mapLevel
                             );
                         DungeonMaps.Add(mapGenerator.CreateMap());
                         DungeonMap = DungeonMaps[_mapLevel - 1];
                     }
                     else
                     {
                         DungeonMap = DungeonMaps[_mapLevel - 1];
                         DungeonMap.PlacePlayerNearEntrance();
                         DungeonMap.RescheduleExistingActors();
                     }
                     MessageLog    = new MessageLog();
                     CommandSystem = new CommandSystem();
                     console.Title = $"L.O.R.S. - Level {_mapLevel}";
                     didPlayerAct  = true;
                 }
                 else
                 {
                     MessageLog.Add("No stairs to walk down.");
                 }
             }
             // User walks up stairs
             else if (keyPress.Key == RLKey.Comma || keyPress.Key == RLKey.Keypad0)
             {
                 if (DungeonMap.CanMoveUpToPreviousLevel())
                 {
                     _mapLevel    -= 1;
                     MessageLog    = new MessageLog();
                     CommandSystem = new CommandSystem();
                     console.Title = $"L.O.R.S. - Level {_mapLevel}";
                     DungeonMap    = DungeonMaps[_mapLevel - 1];
                     DungeonMap.PlacePlayerNearExit();
                     DungeonMap.RescheduleExistingActors();
                     didPlayerAct = true;
                 }
                 else
                 {
                     // if we are in the overworld...
                     if (_mapLevel == 1)
                     {
                         MessageLog.Add("What are you gonna do? Walk to the moon?");
                     }
                     else
                     {
                         MessageLog.Add("No stairs to walk up.");
                     }
                 }
             }
             else
             {
                 didPlayerAct = CommandSystem.HandleKey(keyPress.Key);
             }
         }
         if (didPlayerAct)
         {
             _renderRequired = true;
             CommandSystem.EndPlayerTurn();
         }
     }
     else
     {
         CommandSystem.ActivateMonsters();
         _renderRequired = true;
     }
 }
Exemple #9
0
    // Update is called once per frame
    void Update()
    {
        bool didPlayerAct = false;

        if (Input.anyKeyDown || Time.time - _lastKeyPressTime > KeyPressDelay)
        {
            if (TargetingSystem.IsPlayerTargeting)
            {
                if (Input.anyKeyDown)
                {
                    _renderRequired = true;
                    foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
                    {
                        if (Input.GetKey(vKey))
                        {
                            TargetingSystem.HandleKey(vKey);
                        }
                    }
                }
            }
            else if (CommandSystem.IsPlayerTurn)
            {
                var playerTransform = Player.go.transform;
                _lastKeyPressTime = Time.time;
                float horizontal = Input.GetAxisRaw("Horizontal");
                float vertical   = Input.GetAxisRaw("Vertical");
                if (horizontal > 0)
                {
                    playerTransform.localScale = new Vector3(1, 1, 1);
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                }
                else if (horizontal < 0)
                {
                    playerTransform.localScale = new Vector3(-1, 1, 1);
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                }
                else if (vertical > 0)
                {
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                }
                else if (vertical < 0)
                {
                    didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                }
                else if (Input.GetKeyDown(KeyCode.Period))
                {
                    if (DungeonMap.CanMoveDownToNextLevel())
                    {
                        MapGenerator mapGenerator = new MapGenerator(_width, _height, 20, 13, 7, ++_mapLevel);
                        DungeonMap    = mapGenerator.CreateMap();
                        MessageLog    = new MessageLog();
                        CommandSystem = new CommandSystem();

                        didPlayerAct = true;
                    }
                }
                else
                {
                    foreach (KeyCode vKey in System.Enum.GetValues(typeof(KeyCode)))
                    {
                        if (Input.GetKey(vKey))
                        {
                            didPlayerAct = CommandSystem.HandleKey(vKey);
                        }
                    }
                }


                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }
        }
    }
Exemple #10
0
        // Event handler for RLNET's Update event
        private static void OnRootConsoleUpdate(object sender, UpdateEventArgs e)
        {
            bool       didPlayerAct = false;
            RLKeyPress keyPress     = _rootConsole.Keyboard.GetKeyPress();

            if (CommandSystem.IsPlayerTurn)
            {
                if (keyPress != null)
                {
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        _rootConsole.Close();
                    }
                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            MapGenerator mapGenerator = new MapGenerator(_mapWidth, _mapHeight, 20, 13, 7, ++_mapLevel);
                            DungeonMap         = mapGenerator.CreateMap();
                            MessageLog         = new MessageLog();
                            CommandSystem      = new CommandSystem();
                            _rootConsole.Title = $"RougeSharp RLNet Tutorial - Level {_mapLevel}";
                            didPlayerAct       = true;
                        }
                    }
                }

                if (didPlayerAct)
                {
                    _renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters();
                _renderRequired = true;
            }


            //Set background color andd text for our consoles
            //this is temporary, btw
            _mapConsole.SetBackColor(0, 0, _mapWidth, _mapHeight, Colors.FloorBackground);
            _mapConsole.Print(1, 1, "Map", Colors.TextHeading);

            _inventoryConsole.SetBackColor(0, 0, _inventoryWidth, _inventoryHeight, Swatch.DbWood);
            _inventoryConsole.Print(1, 1, "Inventory", Colors.TextHeading);
        }
Exemple #11
0
        private static void OnGameUpdate(object sender, UpdateEventArgs e)
        {
            bool       didPlayerAct = false;
            RLKeyPress keyPress     = rootConsole.Keyboard.GetKeyPress();

            if (CommandSystem.IsPlayerTurn)
            {
                if (CommandSystem.PlayerIsDead)
                {
                    time.Stop();
                    ts = time.Elapsed;
                    DeathMenu();
                }
                if (CommandSystem.IsGameEnded)
                {
                    time.Stop();
                    ts = time.Elapsed;
                    WinMenu();
                }
                if (keyPress != null)
                {
                    if (keyPress.Key == RLKey.Up)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Up);
                    }
                    else if (keyPress.Key == RLKey.Down)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Down);
                    }
                    else if (keyPress.Key == RLKey.Left)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Left);
                    }
                    else if (keyPress.Key == RLKey.Right)
                    {
                        didPlayerAct = CommandSystem.MovePlayer(Direction.Right);
                    }
                    else if (keyPress.Key == RLKey.I)
                    {
                        if (Player.Items.Count != 0)
                        {
                            inventoryConsole.Print(0, 2, ">", Colors.Text);
                            renderRequired      = true;
                            rootConsole.Update -= OnGameUpdate;
                            rootConsole.Update += OnItemUpdate;
                        }
                    }
                    else if (keyPress.Key == RLKey.Escape)
                    {
                        rootConsole.Title = "MagiCave";
                        menuConsole.Clear();
                        for (int i = 0; i < 4; i++)
                        {
                            menuConsole.Print((menuConsole.Width - pauseOptions[i].Length) / 2, 40 + i * 5, pauseOptions[i], RLColor.White);
                        }
                        menuConsole.Print((menuConsole.Width - pauseOptions[0].Length) / 2, 40, pauseOptions[0], RLColor.LightRed);
                        Pause();
                    }
                    else if (keyPress.Key == RLKey.Period)
                    {
                        if (DungeonMap.CanMoveDownToNextLevel())
                        {
                            if (CurrentLevel.Next == null)
                            {
                                DungeonMap.SetIsWalkable(Player.X, Player.Y, true);
                                // If this is going to be a final level
                                if (mapLevel == 4)
                                {
                                    SchedulingSystem A_SchedulingSystem = new SchedulingSystem();
                                    CurrentSchedulingSystem = CurrentSchedulingSystem.Next;
                                    CurrentSchedulingSystem = SchedulingSystems.AddLast(A_SchedulingSystem);
                                    SchedulingSystem        = A_SchedulingSystem;

                                    DungeonGenerator mapGenerator = new DungeonGenerator(mapWidth, mapHeight, 20, 15, 7, ++mapLevel);
                                    DungeonMap = mapGenerator.CreateFinalLevel(SchedulingSystem);

                                    rootConsole.Title = $"MagiCave - Level {mapLevel}";
                                    DungeonMap.UpdatePlayerFieldOfView();
                                    didPlayerAct = true;
                                }
                                // Creating generic level
                                else
                                {
                                    SchedulingSystem A_SchedulingSystem = new SchedulingSystem();
                                    CurrentSchedulingSystem = CurrentSchedulingSystem.Next;
                                    CurrentSchedulingSystem = SchedulingSystems.AddLast(A_SchedulingSystem);
                                    SchedulingSystem        = A_SchedulingSystem;

                                    DungeonGenerator mapGenerator = new DungeonGenerator(mapWidth, mapHeight, 20, 15, 7, ++mapLevel);
                                    DungeonMap        = mapGenerator.CreateMap(SchedulingSystem);
                                    rootConsole.Title = $"MagiCave - Level {mapLevel}";
                                    didPlayerAct      = true;
                                    DungeonMap.UpdatePlayerFieldOfView();
                                }
                                CurrentLevel = CurrentLevel.Next;
                                CurrentLevel = Levels.AddLast(DungeonMap);
                            }
                            // Moving to already created level
                            else
                            {
                                DungeonMap.SetIsWalkable(Player.X, Player.Y, true);
                                DungeonMap = CurrentLevel.Next.Value;

                                Player.X = DungeonMap.Rooms.First()[DungeonMap.Rooms.First().Count / 2].X;
                                Player.Y = DungeonMap.Rooms.First()[DungeonMap.Rooms.First().Count / 2].Y;

                                SchedulingSystem        = CurrentSchedulingSystem.Next.Value;
                                CurrentSchedulingSystem = CurrentSchedulingSystem.Next;

                                rootConsole.Title = $"MagiCave - Level {++mapLevel}";
                                didPlayerAct      = true;
                                CurrentLevel      = CurrentLevel.Next;
                                DungeonMap.UpdatePlayerFieldOfView();
                            }
                        }
                        // Moving to the previous level
                        if (DungeonMap.CanMoveUpToPreviousLevel() && !didPlayerAct)
                        {
                            if (CurrentLevel.Previous != null)
                            {
                                DungeonMap.SetIsWalkable(Player.X, Player.Y, true);
                                DungeonMap = CurrentLevel.Previous.Value;

                                SchedulingSystem        = CurrentSchedulingSystem.Previous.Value;
                                CurrentSchedulingSystem = CurrentSchedulingSystem.Previous;

                                Player.X = DungeonMap.Rooms.Last()[DungeonMap.Rooms.Last().Count / 2].X;
                                Player.Y = DungeonMap.Rooms.Last()[DungeonMap.Rooms.Last().Count / 2].Y;

                                rootConsole.Title = $"MagiCave - Level {--mapLevel}";
                                didPlayerAct      = true;
                                CurrentLevel      = CurrentLevel.Previous;
                                DungeonMap.UpdatePlayerFieldOfView();
                            }
                        }
                    }
                }
                if (didPlayerAct)
                {
                    steps++;
                    renderRequired = true;
                    CommandSystem.EndPlayerTurn();
                }
            }
            else
            {
                CommandSystem.ActivateMonsters(SchedulingSystem);
                renderRequired = true;
            }
        }