/// <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)); }
/// <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]); }