public bool CanMoveArm(RobotVO robot, ArmVO armMoved, ArmSide armSide) { ArmVO arm = armSide == ArmSide.Left ? robot.LeftArm : robot.RightArm; bool isElbowMovement = IsElbowMovement(arm, armMoved.Elbow); bool isWristMovement = IsWristMovement(arm, armMoved.Wrist); // Não se pode mexer mais de uma parte do braço por vez if (isElbowMovement && isWristMovement) { return(false); } if (isElbowMovement) { return(ChangeElbowMovement(arm, armMoved.Elbow)); } if (isWristMovement) { return(ChangeWristMovement(arm, armMoved.Wrist)); } //Não houve mudança return(true); }
public bool ChangeRotation(RobotVO robot, HeadRotation headRotation) { if (robot.Head.HeadInclination == HeadInclination.Down) { return(false); } return(true); }
public IActionResult Index(long id) { RobotVO robot = _robotService.GetRobot(id); if (robot == null) { return(RedirectToAction("Index", "Home")); } RobotModel robotModel = _mapper.Map <RobotModel>(robot); return(View(robotModel)); }
public void NaoDevePermitirRotacionarCabeca() { //Arrange var robot = new RobotVO() { Head = new HeadVO() { HeadInclination = HeadInclination.Down, HeadRotation = HeadRotation.InRest } }; HeadRotation headRotation = HeadRotation.Rotate45Degrees; //Act var result = _headMovement.ChangeRotation(robot, headRotation); //Assert Assert.False(result); }
public RobotVO GetRobot(long id) { RobotVO robot = null; using (var client = new HttpClient()) { client.BaseAddress = new Uri(_kraftwerkAPIUrl); Task <HttpResponseMessage> responseTask = client.GetAsync($"api/robot/{id}"); responseTask.Wait(); HttpResponseMessage result = responseTask.Result; if (result.IsSuccessStatusCode) { Task <RobotVO> readTask = result.Content.ReadAsAsync <RobotVO>(); readTask.Wait(); robot = readTask.Result; } } return(robot); }
public bool CanMoveHead(RobotVO robot, HeadVO headMoved) { bool isInclinationMovement = IsInclinationMovement(robot, headMoved.HeadInclination); bool isRotationMovement = IsRotationMovement(robot, headMoved.HeadRotation); // Não pode haver dois movimentos de uma vez if (isInclinationMovement && isRotationMovement) { return(false); } if (isInclinationMovement) { return(ChangeInclination(robot, headMoved.HeadInclination)); } if (isRotationMovement) { return(ChangeRotation(robot, headMoved.HeadRotation)); } //Não houve movimento return(true); }
private bool IsRotationMovement(RobotVO robot, HeadRotation rotation) => robot.Head.HeadRotation != rotation;
private bool IsInclinationMovement(RobotVO robot, HeadInclination inclination) => robot.Head.HeadInclination != inclination;
public bool ChangeInclination(RobotVO robot, HeadInclination headInclination) => true;