public void OnDownArrowWasPressed()
        {
            if(!isMoving) {
                direction = XNAGameObjectDirection.Down;
                desiredTile = currentTile.NearbyTiles[direction];

                if (desiredTile.IsWalkable)
                {
                    frame.Y = 0;
                    isMoving = true;
                }
            }
        }
示例#2
0
        public void OnUpArrowWasPressed()
        {
            if (!isMoving)
            {
                direction   = XNAGameObjectDirection.Up;
                desiredTile = currentTile.NearbyTiles[direction];

                if (desiredTile.IsWalkable)
                {
                    frame.Y  = frame.Height * 3;
                    isMoving = true;
                }
            }
        }
示例#3
0
        public bool IsObjectAbleToMove(XNAGameObject xnaObject, XNAGameObjectDirection direction)
        {
            /*int predictableX = Convert.ToInt32(xnaObject.GetPositon().X / Settings.TILE_WIDTH) + 0;
             * int predictableY = Convert.ToInt32(xnaObject.GetPositon().Y / Settings.TILE_HEIGHT) + 0;
             * Tile predictTile = null;
             *
             * Tile currentTile = null;
             *
             * foreach (Tile tile in map.Tiles)
             * {
             *  if (xnaObject.GetCenter().X >= tile.Frame.X &&
             *      xnaObject.GetCenter().X <= tile.Frame.X + tile.Frame.Width &&
             *      xnaObject.GetCenter().Y >= tile.Frame.Y &&
             *      xnaObject.GetCenter().Y <= tile.Frame.Y + tile.Frame.Height)
             *  {
             *      currentTile = tile;
             *      break;
             *  }
             * }
             *
             * if (currentTile != null)
             * {
             *  if (direction == XNAGameObjectDirection.Down)
             *  {
             *      predictTile = map.Tiles[(int)currentTile.MapPosition.X, (int)currentTile.MapPosition.Y + 1];
             *  }
             *  else if (direction == XNAGameObjectDirection.Up)
             *  {
             *      predictTile = map.Tiles[(int)currentTile.MapPosition.X, (int)currentTile.MapPosition.Y - 1];
             *  }
             *  else if (direction == XNAGameObjectDirection.Left)
             *  {
             *      predictTile = map.Tiles[(int)currentTile.MapPosition.X - 1, (int)currentTile.MapPosition.Y];
             *  }
             *  else if (direction == XNAGameObjectDirection.Right)
             *  {
             *      predictTile = map.Tiles[(int)currentTile.MapPosition.X + 1, (int)currentTile.MapPosition.Y];
             *  }
             * }
             *
             * if(predictTile != null)
             *  Debug.WriteLine("X: " + predictTile.Frame.X + " Y:" + predictTile.Frame.Y + " isWalkable: " + predictTile.IsWalkable);
             *
             * return predictTile != null && predictTile.IsWalkable;*/

            return(true);
        }
        public bool IsObjectAbleToMove(XNAGameObject xnaObject, XNAGameObjectDirection direction)
        {
            /*int predictableX = Convert.ToInt32(xnaObject.GetPositon().X / Settings.TILE_WIDTH) + 0;
            int predictableY = Convert.ToInt32(xnaObject.GetPositon().Y / Settings.TILE_HEIGHT) + 0;
            Tile predictTile = null;

            Tile currentTile = null;

            foreach (Tile tile in map.Tiles)
            {
                if (xnaObject.GetCenter().X >= tile.Frame.X &&
                    xnaObject.GetCenter().X <= tile.Frame.X + tile.Frame.Width &&
                    xnaObject.GetCenter().Y >= tile.Frame.Y &&
                    xnaObject.GetCenter().Y <= tile.Frame.Y + tile.Frame.Height)
                {
                    currentTile = tile;
                    break;
                }
            }

            if (currentTile != null)
            {
                if (direction == XNAGameObjectDirection.Down)
                {
                    predictTile = map.Tiles[(int)currentTile.MapPosition.X, (int)currentTile.MapPosition.Y + 1];
                }
                else if (direction == XNAGameObjectDirection.Up)
                {
                    predictTile = map.Tiles[(int)currentTile.MapPosition.X, (int)currentTile.MapPosition.Y - 1];
                }
                else if (direction == XNAGameObjectDirection.Left)
                {
                    predictTile = map.Tiles[(int)currentTile.MapPosition.X - 1, (int)currentTile.MapPosition.Y];
                }
                else if (direction == XNAGameObjectDirection.Right)
                {
                    predictTile = map.Tiles[(int)currentTile.MapPosition.X + 1, (int)currentTile.MapPosition.Y];
                }
            }

            if(predictTile != null)
                Debug.WriteLine("X: " + predictTile.Frame.X + " Y:" + predictTile.Frame.Y + " isWalkable: " + predictTile.IsWalkable);

            return predictTile != null && predictTile.IsWalkable;*/

            return true;
        }
        public void OnRightArrowWasPressed()
        {
            if (!isMoving)
            {
                direction = XNAGameObjectDirection.Right;
                desiredTile = currentTile.NearbyTiles[direction];

                if (desiredTile.IsWalkable)
                {
                    frame.Y = frame.Height * 2;
                    isMoving = true;
                }
            }
        }