예제 #1
0
    /// <summary>
    /// Returns neighbor based on the direction and the current tile
    /// </summary>
    /// <param name="direction">Direction of neighbor to return</param>
    /// <param name="tile">Current tile</param>
    /// <returns></returns>
    public Tile getNeighborByDirection(tileDirections direction, Tile tile)
    {
        System.String name       = tile.gameObject.name;
        int           commaBreak = name.IndexOf(',');
        int           x1         = System.Convert.ToInt32(name.Substring(4, commaBreak - 4));
        int           y1         = System.Convert.ToInt32(name.Substring(commaBreak + 1, name.Length - 1 - commaBreak));

        return(getNeighborByDirection(direction, y1, x1));
    }
예제 #2
0
    /// <summary>
    /// Returns neighboring tile to the tile at (x,y) based on the direction
    /// </summary>
    /// <param name="direction">Direction of neighbor to return</param>
    /// <param name="x">X coord of current tile</param>
    /// <param name="y">Y coord of current tile</param>
    /// <returns></returns>
    public Tile getNeighborByDirection(tileDirections direction, int x, int y)
    {
        int xPlus  = (x + 1 < boardSize) ? (x + 1) : 0;
        int xMinus = (x - 1 >= 0) ? (x - 1) : (boardSize - 1);
        int yPlus  = (y + 1 < boardSize) ? (y + 1) : 0;
        int yMinus = (y - 1 >= 0) ? (y - 1) : (boardSize - 1);

        if (x % 2 == 0)
        {
            if (direction == tileDirections.TL)
            {
                return(board[xMinus, y]);
            }
            else if (direction == tileDirections.TR)
            {
                return(board[xMinus, yPlus]);
            }
            else if (direction == tileDirections.R)
            {
                return(board[x, yPlus]);
            }
            else if (direction == tileDirections.BR)
            {
                return(board[xPlus, yPlus]);
            }
            else if (direction == tileDirections.BL)
            {
                return(board[xPlus, y]);
            }
            else if (direction == tileDirections.L)
            {
                return(board[x, yMinus]);
            }
        }
        else
        {
            if (direction == tileDirections.TL)
            {
                return(board[xMinus, yMinus]);
            }
            else if (direction == tileDirections.TR)
            {
                return(board[xMinus, y]);
            }
            else if (direction == tileDirections.R)
            {
                return(board[x, yPlus]);
            }
            else if (direction == tileDirections.BR)
            {
                return(board[xPlus, y]);
            }
            else if (direction == tileDirections.BL)
            {
                return(board[xPlus, yMinus]);
            }
            else if (direction == tileDirections.L)
            {
                return(board[x, yMinus]);
            }
        }
        return(board[x, y]);
    }