Skip to content

Commit

Permalink
Merge pull request #6598 from Scoppio/fix/minimap-level-numbers
Browse files Browse the repository at this point in the history
fix: actually I fixed everything that there was to fix on the minimap
  • Loading branch information
HammerGS authored Feb 24, 2025
2 parents cdc621e + 2f04e0c commit 8958f96
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 106 deletions.
2 changes: 1 addition & 1 deletion megamek/i18n/megamek/client/messages.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
173 changes: 68 additions & 105 deletions megamek/src/megamek/client/ui/swing/minimap/Minimap.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}

Expand Down Expand Up @@ -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);
}
}

Expand Down Expand Up @@ -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) {
Expand All @@ -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() {
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 8958f96

Please sign in to comment.