/// <summary> /// Returns a tile from the tileGrid starting from a given face of a specific tile (and it's position on the tileGrid). /// </summary> /// <param name="tile">Tile to start from.</param> /// <returns></returns> internal TriominoTile GetAdjacentTileAtSpecificFace(TriominoTile tile, TileFace tileFace) { ArrayTileOrientation orientation = tile.Orientation.ToArrayTileOrientation(); if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Bottom) { return(this.tileGrid[tile.TileGridPosition.Y + 1, tile.TileGridPosition.X]); } if (orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Bottom) { return(this.tileGrid[tile.TileGridPosition.Y - 1, tile.TileGridPosition.X]); } if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Right || orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Left) { return(this.tileGrid[tile.TileGridPosition.Y, tile.TileGridPosition.X + 1]); } if (orientation == ArrayTileOrientation.BottomUp && tileFace == TileFace.Left || orientation == ArrayTileOrientation.TopDown && tileFace == TileFace.Right) { return(this.tileGrid[tile.TileGridPosition.Y, tile.TileGridPosition.X - 1]); } return(null); }
/// <summary> /// Inserts the values of a tile in the 'tileValueGrid' based on the tiles name, its tileGrid-Coordinates and its 'ArrayTileOrientation' /// </summary> /// <param name="name">The tiles name.</param> /// <param name="tileGridPosition">the tiles position within the tileGrid.</param> /// <param name="orientation">The tile Orientation within the tileValueGrid.</param> private void AddValuesToValueGrid(string name, Point tileGridPosition, ArrayTileOrientation orientation) { string[] nameParts = name.Split('-'); switch(orientation) { case ArrayTileOrientation.BottomUp: this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 1] = int.Parse(nameParts[0]); this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 2] = int.Parse(nameParts[1]); this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X] = int.Parse(nameParts[2]); break; case ArrayTileOrientation.TopDown: this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 1] = int.Parse(nameParts[0]); this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X] = int.Parse(nameParts[1]); this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 2] = int.Parse(nameParts[2]); break; } }
/// <summary> /// Determines the 'ValueGrid' values for a given tileGrid Position according to the tiles 'ArrayTileOrientation'. /// </summary> /// <param name="tileGridPosition">the tiles position within the tileGrid.</param> /// <param name="orientation"></param> /// <returns>the tile values</returns> private List<int?> GetValueGridValuesFromNameGridPositions(Point tileGridPosition, ArrayTileOrientation orientation) { List<int?> valueGridValues = new List<int?>(); switch(orientation) { case ArrayTileOrientation.BottomUp: valueGridValues = new List<int?>() { this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 1], this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 2], this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X] }; break; case ArrayTileOrientation.TopDown: valueGridValues = new List<int?>() { this.tileValueGrid[tileGridPosition.Y + 1, tileGridPosition.X + 1], this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X], this.tileValueGrid[tileGridPosition.Y, tileGridPosition.X + 2] }; break; } return valueGridValues; }