示例#1
0
        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);
        }
示例#2
0
        public bool ChangeRotation(RobotVO robot, HeadRotation headRotation)
        {
            if (robot.Head.HeadInclination == HeadInclination.Down)
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        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));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
 private bool IsRotationMovement(RobotVO robot, HeadRotation rotation) => robot.Head.HeadRotation != rotation;
示例#8
0
 private bool IsInclinationMovement(RobotVO robot, HeadInclination inclination) => robot.Head.HeadInclination != inclination;
示例#9
0
 public bool ChangeInclination(RobotVO robot, HeadInclination headInclination) => true;