/// <summary> /// Try get two numbers from string. /// </summary> /// <exception cref="ArgumentException">Thrown when line /// contains not allowed character or not enougth parameters.</exception> /// <exception cref="ArgumentOutOfRangeException">Thrown when X (width) or Y (heght) are out of game range.</exception> private IPoint TryGetPoint(string inputArgsStr) { // Validate first line that contain two argument LayerValidations.LayerDimensionsStr(inputArgsStr, GeneralConstants.LayerDimension); var separators = new char[] { ' ' }; var args = inputArgsStr .Split(separators, StringSplitOptions.RemoveEmptyEntries) .ToList(); LayerValidations.Dimensions(args); var dimensionRows = int.Parse(args[0]); int dimensionColumns = int.Parse(args[1]); var point = new Point(dimensionRows, dimensionColumns); return(point); }
/// <summary> /// Get all brick part nymber from input string. /// </summary> /// <param name="inputArgsStr">Row that contains all brick parts.</param> /// <returns>Return list of brick part numbers. </returns> private List <int> GetAllRowNumbers(string inputArgsStr) { var maxBrickNumber = this.GetLayerTargetBrickCount(); var layerColumns = this.GetLayerColumns(); // Validate written numbers in a row LayerValidations.BrickPartsRowPattern(inputArgsStr, layerColumns, maxBrickNumber); var separators = new char[] { ' ' }; var args = inputArgsStr .Split(separators, StringSplitOptions.RemoveEmptyEntries) .Select(int.Parse) .ToList(); // Validate row written numbers range LayerValidations.RowWrittenNumbersRange(args, maxBrickNumber, layerColumns); // Validate brick var state = this.GetLayerState(); LayerValidations.BricksPart(args, state, this.Bricks); return(args); }