Exemplo n.º 1
0
        private ResponseModel LastStateOfRover(RoverRequest roverRequest, Position position)
        {
            var    response    = new ResponseModel();
            string existFacing = roverRequest.CurrentFacing.ToUpper();

            foreach (var direct in roverRequest.Direction.ToUpper().ToCharArray())
            {
                if (direct.ToString() == "L" ||
                    direct.ToString() == "R")
                {
                    var cardinalDirectionEnumId = EnumExtensions.GetValues <CardinalDirectionEnum>().FirstOrDefault(x => x.Label == existFacing)?.Id;
                    var turnPositionEnumId      = EnumExtensions.GetValues <TurnPositionEnum>().FirstOrDefault(x => x.Label == direct.ToString())?.Id;
                    existFacing   = _directionEnum.SetDirection((CardinalDirectionEnum)cardinalDirectionEnumId, (TurnPositionEnum)turnPositionEnumId);
                    position.Face = existFacing;
                }
                if (direct.ToString() == "M")
                {
                    response = Pointer.GetCurrentPosition(roverRequest.TopPositionX, roverRequest.TopPositionY, position, roverRequest.SecondRoverX, roverRequest.SecondRoverY);
                    position = response.Position;
                    if (response.IsError)
                    {
                        break;
                    }
                }
            }
            return(response);
        }