public IPositionFinal GetFinalPostion(int gridId, IPositionStarting positionStarting) { IGridCoordinate gridCoordinate = _dataService.GetGridCoordinateByGridId(gridId); IPositionFinal positionFinal = new PositionFinal { FinalXPosition = positionStarting.StartingXPosition, FinalYPosition = positionStarting.StartingYPosition, FinalOrientation = positionStarting.Orientation, Lost = false }; char[] array = positionStarting.Instructions.ToCharArray(); foreach (char instruction in array) { if (positionFinal.Lost) { _dataService.SaveOffPosition(gridId, positionFinal); break; } switch (instruction) { case 'L': LeftInstructionProcess(positionFinal); break; case 'R': RightInstructionProcess(positionFinal); break; case 'F': if (!_dataService.IsOffPosition(gridId, positionFinal)) { ForwardInstructionProcess(positionFinal, gridCoordinate); } break; default: break; } } return(positionFinal); }
public async Task <IPositionFinal> GetFinalPostionAsync(int gridId, IPositionStarting positionStarting) { return(await Task.FromResult(GetFinalPostion(gridId, positionStarting))); }