Esempio n. 1
0
        public List <PossibleMove> Walk(int x, int y, int steps, bool allowDiag, bool StealthScore, BoardClass Board)
        {
            var PossiblePaths = Board.GetWalkPattern(steps, allowDiag);
            var Result        = new List <PossibleMove>();

            foreach (var path in PossiblePaths)
            {
                int xcur = x, ycur = y;
                int sx = -1, sy = -1;
                var TotalScore = 0;
                var isValid    = true;

                foreach (var step in path)
                {
                    xcur += step.X;
                    ycur += step.Y;
                    if (StealthScore && sx == -1)
                    {
                        sx = xcur;
                        sy = ycur;
                    }
                    if (!Board.IsWalkable(xcur, ycur))
                    {
                        isValid = false;
                        break;
                    }
                    ;
                    TotalScore += Board.Tiles[xcur, ycur].ScoreValue;
                }

                if (isValid)
                {
                    Result.Add(new PossibleMove()
                    {
                        FromX = x, FromY = y, ToX = xcur, ToY = ycur, FirstX = sx, FirstY = sy, ScoreValue = StealthScore ? TotalScore : Board.Tiles[xcur, ycur].ScoreValue, Card = this, Destination = Board.Tiles[xcur, ycur]
                    });
                }
            }
            return(Result.Distinct().ToList());
        }