// ----------------------------------------------------------------------------------------------------------------------------------------

        // Handle Movement entity
        public void MovementEntityHandler(List <Entity> Entities)
        {
            string        TextDirection = "";
            AgentMovement FinalDirection;

            // Verify if the movement is diagonal
            foreach (Entity entity in Entities)
            {
                if (entity.type.Equals("DireccionDiagonal"))
                {
                    TextDirection = entity.entity;
                }
            }

            // TextDirection is empty, which means it is not a diagonal.
            if (TextDirection.Equals(""))
            {
                foreach (Entity entity in Entities)
                {
                    if (entity.type.Equals("Direccion"))
                    {
                        TextDirection = entity.entity;
                    }
                }
            }

            switch (TextDirection)
            {
            case "arriba":
                FinalDirection = AgentMovement.Up;
                break;

            case "abajo":
                FinalDirection = AgentMovement.Down;
                break;

            case "izquierda":
                FinalDirection = AgentMovement.Left;
                break;

            case "derecha":
                FinalDirection = AgentMovement.Right;
                break;

            case "arriba derecha":
            case "derecha arriba":
                FinalDirection = AgentMovement.UpRight;
                break;

            case "arriba izquierda":
            case "izquierda arriba":
                FinalDirection = AgentMovement.UpLeft;
                break;

            case "abajo derecha":
            case "derecha abajo":
                FinalDirection = AgentMovement.DownRight;
                break;

            case "abajo izquierda":
            case "izquierda abajo":
                FinalDirection = AgentMovement.DownLeft;
                break;

            default:
                TextToSpeech("No reconozco la dirección a la que quieres ir.");
                return;
            }

            // Save the previous position in order to clear the draw
            Node PreviousAgentPosition = new Node()
            {
                X = Board.Agent.Position.Item1,
                Y = Board.Agent.Position.Item2
            };
            Node NewPosition = Board.CreateMovement(FinalDirection);

            if (Board.IsValidMovement(NewPosition))
            {
                List <Node> positions = new List <Node>();
                positions.Add(PreviousAgentPosition);
                positions.Add(NewPosition);

                MainFrame.UpdateItemPosition(positions);
                Board.Show();
                TextToSpeech("Me he movido!");
                Board.MoveAgent(FinalDirection);
            }
            else
            {
                TextToSpeech("No puedo moverme a esa posición, está en uso!");
            }
        }