Example #1
0
 public (Path?, Path?) AStarGoRogueOpenMap()
 {
     return(_aStar.ShortestPath(_p1, _p2), _aStar.ShortestPath(_p2, _p1));
 }
Example #2
0
        private void CheckKeyboard()
        {
            var mapView = new GoRogue.MapViews.LambdaMapView <bool>(GameLoop.World.CurrentMap.Width, GameLoop.World.CurrentMap.Height, pos => GameLoop.World.CurrentMap.IsTileWalkable(new Point(pos.X, pos.Y)));

            var AStar = new GoRogue.Pathing.AStar(mapView, Distance.CHEBYSHEV);

            if (SadConsole.Global.KeyboardState.IsKeyReleased(Microsoft.Xna.Framework.Input.Keys.F5))
            {
                SadConsole.Settings.ToggleFullScreen();
            }
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Up))
            {
                GameLoop.CommandManager.MoveActorBy(GameLoop.World.Player, new Point(0, -1));
                CenterOnActor(GameLoop.World.Player);
            }
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Down))
            {
                GameLoop.CommandManager.MoveActorBy(GameLoop.World.Player, new Point(0, 1));
                CenterOnActor(GameLoop.World.Player);
            }
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Left))
            {
                GameLoop.CommandManager.MoveActorBy(GameLoop.World.Player, new Point(-1, 0));
                CenterOnActor(GameLoop.World.Player);
            }
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Right))
            {
                GameLoop.CommandManager.MoveActorBy(GameLoop.World.Player, new Point(1, 0));
                CenterOnActor(GameLoop.World.Player);
            }
            if (SadConsole.Global.KeyboardState.IsKeyReleased(Microsoft.Xna.Framework.Input.Keys.Z))
            {
                GameLoop.CommandManager.UndoMoveActorBy();
                CenterOnActor(GameLoop.World.Player);
            }
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.X))
            {
                GameLoop.CommandManager.RedoMoveActorBy();
                CenterOnActor(GameLoop.World.Player);
            }

            //If the player moved, move the enemy
            if (SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Up) ||
                SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Down) ||
                SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Left) ||
                SadConsole.Global.KeyboardState.IsKeyPressed(Microsoft.Xna.Framework.Input.Keys.Right))
            {
                foreach (Entity monster in GameLoop.World.CurrentMap.Entities.Items)
                {
                    if (monster is Monster)
                    {
                        Path path = AStar.ShortestPath(monster.Position, GameLoop.World.Player.Position);
                        if (path.Length < monster.VisibleRange &&
                            GameLoop.World.CurrentMap.GetEntityAt <Monster>(path.GetStep(0)) == null)
                        {
                            int diceOutcome = Dice.Roll("1d100");
                            if (diceOutcome >= 100 - monster.MoveChance && path.GetStep(0) != GameLoop.World.Player.Position)
                            {
                                GameLoop.CommandManager.MoveMonster((Actor)monster, path.GetStep(0));
                            }
                            if (path.GetStep(0) == GameLoop.World.Player.Position && !(GameLoop.World.Player.Attacked) && diceOutcome >= 50)
                            {
                                GameLoop.CommandManager.MoveMonster((Actor)monster, path.GetStep(0), true);
                            }
                        }
                    }
                }
            }
        }