From 379ef115187a3dca5475bb115fd6aa0dacb5a8e3 Mon Sep 17 00:00:00 2001 From: Scoppio Date: Sun, 23 Feb 2025 00:05:57 -0300 Subject: [PATCH] fix: actually I fixed everything that there was to fix on the minimap --- .../i18n/megamek/client/messages.properties | 2 +- .../client/ui/swing/minimap/Minimap.java | 173 +++++++----------- 2 files changed, 69 insertions(+), 106 deletions(-) diff --git a/megamek/i18n/megamek/client/messages.properties b/megamek/i18n/megamek/client/messages.properties index d6ccdfa2f27..20c84d24c41 100644 --- a/megamek/i18n/megamek/client/messages.properties +++ b/megamek/i18n/megamek/client/messages.properties @@ -2449,7 +2449,7 @@ Minimap.TotalHeightLabel=T Minimap.X=X Minimap.SymbolsLabel=S Minimap.NoSymbolsLabel=N -Minimap.menu.Zoom=Zoom: +Minimap.menu.Zoom=Zoom: {0} Minimap.menu.ZoomIn=Zoom In + Minimap.menu.ZoomOut=Zoom Out - Minimap.menu.ShowHeight=Show Height diff --git a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java index 5954e0293e5..4cfd0176cbc 100644 --- a/megamek/src/megamek/client/ui/swing/minimap/Minimap.java +++ b/megamek/src/megamek/client/ui/swing/minimap/Minimap.java @@ -405,11 +405,13 @@ public void gameNewAction(GameNewActionEvent e) { */ private void initializeDialog() { if (dialog != null) { - dialog.addMouseListener(mouseListener); - dialog.addMouseMotionListener(mouseMotionListener); - dialog.addMouseWheelListener(mouseWheelListener); - dialog.addComponentListener(componentListener); - dialog.addComponentListener(componentListener); + if (dialog.getMouseListeners().length == 0) { + dialog.addMouseListener(mouseListener); + dialog.addMouseMotionListener(mouseMotionListener); + dialog.addMouseWheelListener(mouseWheelListener); + dialog.addComponentListener(componentListener); + dialog.addComponentListener(componentListener); + } } } @@ -997,11 +999,15 @@ private void paintHeight(Graphics g, Hex h, int x, int y) { height = (h.containsAnyTerrainOf(BUILDING, FUEL_TANK)) ? h.ceiling() : h.floor(); } if (height != 0) { - String sHeight = ((height > -1) && (height < 10)) ? " " + height : height + ""; - int baseX = (x * (HEX_SIDE[zoom] + HEX_SIDE_BY_SIN30[zoom])) + leftMargin; - int baseY = (((2 * y) + 1 + (x % 2)) * HEX_SIDE_BY_COS30[zoom]) + topMargin; + String sHeight = height + ""; + int baseX = coordsXToPixel(x); + int baseY = coordsYtoPixel(y, x); + Font font = new Font(MMConstants.FONT_SANS_SERIF, Font.PLAIN, FONT_SIZE[zoom]); + int fontWidth = getFontMetrics(font).stringWidth(sHeight) / 2; + int fontHeight = getFontMetrics(font).getHeight() / 3; + g.setFont(font); g.setColor(Color.white); - g.drawString(sHeight, baseX + 5, baseY + 5); + g.drawString(sHeight, baseX - fontWidth, baseY + fontHeight); } } @@ -1868,31 +1874,6 @@ private void update() { } }; - ActionListener listener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (e.getActionCommand().equals(ACTION_ZOOM_IN)) { - zoomIn(); - } else if (e.getActionCommand().equals(ACTION_ZOOM_OUT)) { - zoomOut(); - } else if (e.getActionCommand().equals(ACTION_HEIGHT_NONE)) { - setHeightDisplay(SHOW_NO_HEIGHT); - } else if (e.getActionCommand().equals(ACTION_HEIGHT_GROUND)) { - setHeightDisplay(SHOW_GROUND_HEIGHT); - } else if (e.getActionCommand().equals(ACTION_HEIGHT_BUILDING)) { - setHeightDisplay(SHOW_BUILDING_HEIGHT); - } else if (e.getActionCommand().equals(ACTION_HEIGHT_TOTAL)) { - setHeightDisplay(SHOW_TOTAL_HEIGHT); - } else if (e.getActionCommand().equals(ACTION_SYMBOLS_NO)) { - setSymbolsDisplay(SHOW_NO_SYMBOLS); - } else if (e.getActionCommand().equals(ACTION_SYMBOLS_SHOW)) { - setSymbolsDisplay(SHOW_SYMBOLS); - } - } - }; - - - MouseListener mouseListener = new MouseAdapter() { @Override public void mouseClicked(MouseEvent me) { @@ -1918,77 +1899,6 @@ public void mousePressed(MouseEvent me) { } } - private void showPopup(MouseEvent me) { - ScalingPopup popup = new ScalingPopup(); - String msg_zoom = Messages.getString("Minimap.menu.Zoom"); - JMenu zoomMenu = new JMenu(msg_zoom + " " + zoom); - String msg_zoomin = Messages.getString("Minimap.menu.ZoomIn"); - zoomMenu.add(menuItem(msg_zoomin, ACTION_ZOOM_IN, zoom != MAX_ZOOM, listener, false)); - String msg_zoomout = Messages.getString("Minimap.menu.ZoomOut"); - zoomMenu.add(menuItem(msg_zoomout, ACTION_ZOOM_OUT, zoom != MIM_ZOOM, listener, false)); - popup.add(zoomMenu); - - String msg_showheight = Messages.getString("Minimap.menu.ShowHeight"); - JMenu heightMenu = new JMenu(msg_showheight); - - String msg_showheightnone = Messages.getString("Minimap.menu.ShowHeightNone"); - heightMenu.add(menuItem(msg_showheightnone, ACTION_HEIGHT_NONE, zoom >= MIM_ZOOM_FOR_HEIGHT, listener, heightDisplayMode == SHOW_NO_HEIGHT)); - - String msg_showheightground = Messages.getString("Minimap.menu.ShowHeightGround"); - heightMenu.add(menuItem(msg_showheightground, ACTION_HEIGHT_GROUND, zoom >= MIM_ZOOM_FOR_HEIGHT, listener, heightDisplayMode == SHOW_GROUND_HEIGHT)); - - String msg_showheightbuilding = Messages.getString("Minimap.menu.ShowHeightBuilding"); - heightMenu.add(menuItem(msg_showheightbuilding, ACTION_HEIGHT_BUILDING, zoom >= MIM_ZOOM_FOR_HEIGHT, listener, heightDisplayMode == SHOW_BUILDING_HEIGHT)); - - String msg_showheighttotal = Messages.getString("Minimap.menu.ShowHeightTotal"); - heightMenu.add(menuItem(msg_showheighttotal, ACTION_HEIGHT_TOTAL, zoom >= MIM_ZOOM_FOR_HEIGHT, listener, heightDisplayMode == SHOW_TOTAL_HEIGHT)); - - popup.add(heightMenu); - - String lblShowSymbols = Messages.getString("Minimap.menu.ShowSymbols"); - JMenu symbolsMenu = new JMenu(lblShowSymbols); - - String lblShowSymbolsNoSymbols = Messages.getString("Minimap.menu.ShowSymbolsNoSymbols"); - symbolsMenu.add(menuItem(lblShowSymbolsNoSymbols, ACTION_SYMBOLS_NO, true, listener, symbolsDisplayMode == SHOW_NO_SYMBOLS)); - - String lblShowSymbolsSymbols = Messages.getString("Minimap.menu.ShowSymbolsSymbols"); - symbolsMenu.add(menuItem(lblShowSymbolsSymbols, ACTION_SYMBOLS_SHOW, true, listener, symbolsDisplayMode == SHOW_SYMBOLS));; - - JCheckBoxMenuItem toggleDrawSensor = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleShowSensorRange")); - toggleDrawSensor.addActionListener(l -> { - setSensorRangeDisplay(!drawSensorRangeOnMiniMap); - }); - toggleDrawSensor.setSelected(drawSensorRangeOnMiniMap); - symbolsMenu.add(toggleDrawSensor); - - - JCheckBoxMenuItem toggleDrawFacing = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleDrawFacingArrows")); - toggleDrawFacing.addActionListener(l -> { - setFacingArrowsDisplay(!drawFacingArrowsOnMiniMap); - }); - toggleDrawFacing.setSelected(drawFacingArrowsOnMiniMap); - symbolsMenu.add(toggleDrawFacing); - - JCheckBoxMenuItem togglePaintBorders = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleDrawHexBorder")); - togglePaintBorders.addActionListener(l -> { - setPaintBordersDisplay(!paintBorders); - }); - togglePaintBorders.setSelected(drawFacingArrowsOnMiniMap); - symbolsMenu.add(togglePaintBorders); - - popup.add(symbolsMenu); - popup.show(me.getComponent(), me.getX(), me.getY()); - } - - public JCheckBoxMenuItem menuItem(String text, String cmd, boolean enabled, - ActionListener listener, boolean checked) { - JCheckBoxMenuItem result = new JCheckBoxMenuItem(text); - result.setActionCommand(cmd); - result.addActionListener(listener); - result.setEnabled(enabled); - result.setSelected(checked); - return result; - } }; MouseMotionListener mouseMotionListener = new MouseMotionAdapter() { @@ -2027,6 +1937,59 @@ public void componentShown(ComponentEvent ce) { } }; + + private void showPopup(MouseEvent me) { + ScalingPopup popup = new ScalingPopup(); + + JMenu zoomMenu = new JMenu(Messages.getString("Minimap.menu.Zoom", zoom)); + + zoomMenu.add(menuItem(Messages.getString("Minimap.menu.ZoomIn"), ACTION_ZOOM_IN, zoom != MAX_ZOOM, l -> this.zoomIn(), false)); + zoomMenu.add(menuItem(Messages.getString("Minimap.menu.ZoomOut"), ACTION_ZOOM_OUT, zoom != MIM_ZOOM, l -> this.zoomOut(), false)); + popup.add(zoomMenu); + + JMenu heightMenu = new JMenu(Messages.getString("Minimap.menu.ShowHeight")); + heightMenu.add(menuItem(Messages.getString("Minimap.menu.ShowHeightNone"), ACTION_HEIGHT_NONE, zoom >= MIM_ZOOM_FOR_HEIGHT, l -> this.setHeightDisplay(SHOW_NO_HEIGHT), heightDisplayMode == SHOW_NO_HEIGHT)); + heightMenu.add(menuItem(Messages.getString("Minimap.menu.ShowHeightGround"), ACTION_HEIGHT_GROUND, zoom >= MIM_ZOOM_FOR_HEIGHT, l -> this.setHeightDisplay(SHOW_GROUND_HEIGHT) , heightDisplayMode == SHOW_GROUND_HEIGHT)); + heightMenu.add(menuItem(Messages.getString("Minimap.menu.ShowHeightBuilding"), ACTION_HEIGHT_BUILDING, zoom >= MIM_ZOOM_FOR_HEIGHT, l -> this.setHeightDisplay(SHOW_BUILDING_HEIGHT), heightDisplayMode == SHOW_BUILDING_HEIGHT)); + heightMenu.add(menuItem(Messages.getString("Minimap.menu.ShowHeightTotal"), ACTION_HEIGHT_TOTAL, zoom >= MIM_ZOOM_FOR_HEIGHT, l -> this.setHeightDisplay(SHOW_TOTAL_HEIGHT), heightDisplayMode == SHOW_TOTAL_HEIGHT)); + popup.add(heightMenu); + + JMenu symbolsMenu = new JMenu(Messages.getString("Minimap.menu.ShowSymbols")); + symbolsMenu.add(menuItem(Messages.getString("Minimap.menu.ShowSymbolsNoSymbols"), ACTION_SYMBOLS_NO, true, l -> this.setSymbolsDisplay(SHOW_NO_SYMBOLS), symbolsDisplayMode == SHOW_NO_SYMBOLS)); + symbolsMenu.add(menuItem(Messages.getString("Minimap.menu.ShowSymbolsSymbols"), ACTION_SYMBOLS_SHOW, true, l -> this.setSymbolsDisplay(SHOW_SYMBOLS), symbolsDisplayMode == SHOW_SYMBOLS));; + + JCheckBoxMenuItem toggleDrawSensor = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleShowSensorRange")); + toggleDrawSensor.addActionListener(l -> setSensorRangeDisplay(!drawSensorRangeOnMiniMap)); + toggleDrawSensor.setSelected(drawSensorRangeOnMiniMap); + symbolsMenu.add(toggleDrawSensor); + + + JCheckBoxMenuItem toggleDrawFacing = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleDrawFacingArrows")); + toggleDrawFacing.addActionListener(l -> setFacingArrowsDisplay(!drawFacingArrowsOnMiniMap)); + toggleDrawFacing.setSelected(drawFacingArrowsOnMiniMap); + symbolsMenu.add(toggleDrawFacing); + + JCheckBoxMenuItem togglePaintBorders = new JCheckBoxMenuItem(Messages.getString("Minimap.menu.ToggleDrawHexBorder")); + togglePaintBorders.addActionListener(l -> { + setPaintBordersDisplay(!paintBorders); + }); + togglePaintBorders.setSelected(paintBorders); + symbolsMenu.add(togglePaintBorders); + + popup.add(symbolsMenu); + popup.show(this, me.getX(), me.getY()); + } + + public JCheckBoxMenuItem menuItem(String text, String cmd, boolean enabled, + ActionListener listener, boolean checked) { + JCheckBoxMenuItem result = new JCheckBoxMenuItem(text); + result.setActionCommand(cmd); + result.addActionListener(listener); + result.setEnabled(enabled); + result.setSelected(checked); + return result; + } + @Override public void preferenceChange(PreferenceChangeEvent e) { if (e.getName().equals(GUIPreferences.MMSYMBOL)