public void drawPath(Graphics g) {
      Graphics2D g2 = (Graphics2D) g;
      List<String> path = new ArrayList<>();
      if (player.isSelected()) {
         Field mouseOverField = null;
         for (int i = 0; i < hexMap.length; i++) {
            for (int j = 0; j < hexMap[i].length; j++) {
               if (hexMap[i][j].isMouseOver()) {
                  mouseOverField = hexMap[i][j];
               }
            }
         }
         if (mouseOverField != null) {
            NavigationMapUtils navigationMapUtils = new NavigationMapUtils();
            List<String> tmpPath =
                  navigationMapUtils.calculateNavMapPath(player.getNavMapPos(), mouseOverField.getNavMapPos(), navMap);
            Set<String> neighboursInRange = navigationMapUtils.calculateNavMapNeighboursInRange(player.getNavMapPos(), 3, navMap);
            for (String navMapPos : tmpPath) {
               if (neighboursInRange.contains(navMapPos)) {
                  path.add(navMapPos);
               }
            }
         }
         if (path.size() > 0) {
            int[] xPoints = new int[path.size() + 1];
            int[] yPoints = new int[path.size() + 1];
            int nPoints = path.size() + 1;
            Field currentField = navMap.get(player.getNavMapPos());
            xPoints[0] = (int)currentField.getXCenterPixel();
            yPoints[0] = (int)currentField.getYCenterPixel();
            for (int i = 0; i < path.size(); i++) {
               String navMapPos = path.get(i);
               currentField = navMap.get(navMapPos);
               xPoints[i + 1] = (int)currentField.getXCenterPixel();
               yPoints[i + 1] = (int)currentField.getYCenterPixel();
            }
            g2.setColor(Color.ORANGE);
//            g2.setStroke(new BasicStroke(5));
            float[] dash = {5.0f};
            BasicStroke dashedBasicStroke =
                  new BasicStroke(5.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f);
            g2.setStroke(dashedBasicStroke);
            g2.drawPolyline(xPoints, yPoints, nPoints);

            g2.setStroke(new BasicStroke(7));
            double l = 10.0; // Pfeilspitzenlänge
            double a = Math.PI / 4 - Math.atan2((yPoints[yPoints.length - 1] - yPoints[yPoints.length - 2]),
                  (xPoints[xPoints.length - 1] - xPoints[xPoints.length - 2]));
            double c = Math.cos(a) * l;
            double s = Math.sin(a) * l;
            g.drawLine(xPoints[xPoints.length - 1], yPoints[yPoints.length - 1], (int) (xPoints[xPoints.length - 1] - s),
                  (int) (yPoints[yPoints.length - 1] - c));
            g.drawLine(xPoints[xPoints.length - 1], yPoints[yPoints.length - 1], (int) (xPoints[xPoints.length - 1] - c),
                  (int) (yPoints[yPoints.length - 1] + s));

         }
      }
   }