//public bool TryAddTile(TriominoTile tile, string otherName, TileFace? otherFace)
        public bool TryAddTile(string tileName, string otherName, TileFace? tileFace, TileFace? otherFace)
        {
            // TODO: CanPlacetileOnGameBoard an diesen Funktionskopf anpassen und hier aufrufen.

            TriominoTile.EnsureName(tileName);

            TriominoTile tile = null;
            if (this.NumbTilesOnBoard == 0)
            {
                tile = new TriominoTile(tileName, TileOrientation.Straight);
                return this.AddTile(tile, new Point(23, 23));
            }

            if (tileFace == null || otherFace == null || otherName == null || otherName == string.Empty)
            {
                throw new ArgumentException("Values for Parameter 'otherName' and 'otherFace' can't be null, if it isn't the first turn.");
            }
                      
            Point otherTileGridCoordinates = this.GetTileCoordsByName(otherName);
            TileOrientation tileOrientationOnGameBoard = this.GetTileOrienationFromOtherTileOrientationAndFaces(this.tileGrid[otherTileGridCoordinates.Y, otherTileGridCoordinates.X].Orientation, otherFace.Value, tileFace.Value);

            tile = new TriominoTile(tileName, tileOrientationOnGameBoard);

            Point possibleNewGridCoordinates = this.GetTileGridPositionFromOtherTilePositionAndFace(otherTileGridCoordinates, otherFace.Value);
            

            return this.AddTile(tile, possibleNewGridCoordinates);
        }