public void SaveRoverMovement(Guid roverId, SetRoverStateCommand roverStateCommand) { var rover = _rovers.FirstOrDefault(x => x.RoverId == roverId); rover.RoverFacingDirection = roverStateCommand.FacingDirection; rover.GridPosition.X = roverStateCommand.XCoordinate; rover.GridPosition.Y = roverStateCommand.YCoordinate; }
public SetRoverStateCommand Translate(Entities.Rover rover, RoverActionCommand roverActionCommand) { var result = new SetRoverStateCommand { XCoordinate = rover.GridPosition.X, YCoordinate = rover.GridPosition.Y }; switch (roverActionCommand.RoverAction) { case RoverAction.TurnLeft: result.FacingDirection = _roverActionToDirection.GetDirection(rover.RoverFacingDirection, roverActionCommand.RoverAction); break; case RoverAction.TurnRight: result.FacingDirection = _roverActionToDirection.GetDirection(rover.RoverFacingDirection, roverActionCommand.RoverAction); break; case RoverAction.MoveForwardInTheDirectionRoverIsFacing: switch (rover.RoverFacingDirection) { case Direction.North: result.YCoordinate--; break; case Direction.South: result.YCoordinate++; break; case Direction.East: result.XCoordinate++; break; case Direction.West: result.XCoordinate--; break; } result.FacingDirection = rover.RoverFacingDirection; break; } return(result); }
public void PerformRoverAction(SetRoverStateCommand roverStateCommand) { GridPosition.Y = roverStateCommand.YCoordinate; GridPosition.X = roverStateCommand.XCoordinate; RoverFacingDirection = roverStateCommand.FacingDirection; }