EducationSystem.SignNumGame.GameManager.Move C# (CSharp) Méthode

Move() public méthode

public Move ( Direction direction ) : bool
direction Direction
Résultat bool
        public bool Move(Direction direction)
        {
            Point delta = getDirectionDelta(direction);
            IEnumerable<int> xTransversalOrder = CreateTransversalOrder(delta.X);
            IEnumerable<int> yTransversalOrder = CreateTransversalOrder(delta.Y);
            bool isAnyTileMoved = false;

            foreach (int x in xTransversalOrder)
            {
                foreach (int y in yTransversalOrder)
                {
                    Tile movingTile = Board.Tiles[x, y];

                    if (movingTile != null)
                    {
                        Point targetPosition = GetFarthestPosition(movingTile.Position, delta);
                        Point mergePosition = targetPosition.Add(delta);

                        if (IsTilesMergeable(movingTile, mergePosition))
                        {
                            Tile mergedTile = Board.Tiles[mergePosition.X, mergePosition.Y];
                            MergeTile(movingTile, mergedTile);
                            isAnyTileMoved = true;
                        }
                        else if (!targetPosition.Equals(movingTile.Position))
                        {
                            Move(movingTile, targetPosition);
                            isAnyTileMoved = true;
                        }
                    }
                }
            }

            return isAnyTileMoved;
        }

Same methods

GameManager::Move ( Tile tile, Point newPosition ) : void