From 8a88496c28e8273842b54d0e3690d372d2706469 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Thu, 30 Nov 2023 17:33:27 -0500 Subject: [PATCH 1/4] add illumination indicator to the hextooltip and unittooltip --- .../client/ui/swing/boardview/BoardView.java | 6 +++--- .../client/ui/swing/tooltip/HexTooltip.java | 11 +++++++---- .../client/ui/swing/tooltip/UnitToolTip.java | 6 +++--- .../client/ui/swing/unitDisplay/SummaryPanel.java | 2 +- .../megamek/common/enums/IlluminationLevel.java | 15 +++++++++++++++ .../megamek/common/util/SerializationHelper.java | 1 + 6 files changed, 30 insertions(+), 11 deletions(-) diff --git a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java index cb803585f47..3bc3dd2b40c 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java +++ b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java @@ -5449,7 +5449,7 @@ public String getHexTooltip(MouseEvent e) { // Hex Terrain if (GUIP.getShowMapHexPopup() && (mhex != null)) { StringBuffer sbTerrain = new StringBuffer(); - appendTerrainTooltip(sbTerrain, mhex); + appendTerrainTooltip(sbTerrain, mhex, game); String sTrerain = sbTerrain.toString(); // Distance from the selected unit and a planned movement end point @@ -5750,11 +5750,11 @@ public String getHexTooltip(MouseEvent e) { /** * Appends HTML describing the terrain of a given hex */ - public void appendTerrainTooltip(StringBuffer txt, @Nullable Hex mhex) { + public void appendTerrainTooltip(StringBuffer txt, @Nullable Hex mhex, Game game) { if (mhex == null) { return; } - txt.append(HexTooltip.getTerrainTip(mhex)); + txt.append(HexTooltip.getTerrainTip(mhex, game)); } /** diff --git a/megamek/src/megamek/client/ui/swing/tooltip/HexTooltip.java b/megamek/src/megamek/client/ui/swing/tooltip/HexTooltip.java index dd08e3c3b76..edfd2034deb 100644 --- a/megamek/src/megamek/client/ui/swing/tooltip/HexTooltip.java +++ b/megamek/src/megamek/client/ui/swing/tooltip/HexTooltip.java @@ -20,13 +20,13 @@ import megamek.common.*; import megamek.common.annotations.Nullable; import megamek.common.enums.BasementType; +import megamek.common.enums.IlluminationLevel; import java.util.Vector; import static megamek.client.ui.swing.tooltip.TipUtil.BUILDING_BGCOLOR; import static megamek.client.ui.swing.tooltip.TipUtil.LIGHT_BGCOLOR; -import static megamek.client.ui.swing.util.UIUtil.guiScaledFontHTML; -import static megamek.client.ui.swing.util.UIUtil.uiBlack; +import static megamek.client.ui.swing.util.UIUtil.*; public final class HexTooltip { @@ -155,6 +155,7 @@ public static String getHexTip(Hex mhex, @Nullable Client client) { result.append("
"); } } + return result.toString(); } @@ -187,17 +188,19 @@ public static String getOneLineSummary(BuildingTarget target, Board board) { return result; } - public static String getTerrainTip(Hex mhex) + public static String getTerrainTip(Hex mhex, Game game) { Coords mcoords = mhex.getCoords(); + String illuminated = IlluminationLevel.getIlluminationLevelIndicator(game, mcoords); String result = ""; - StringBuilder sTerrain = new StringBuilder(Messages.getString("BoardView1.Tooltip.Hex", mcoords.getBoardNum(), mhex.getLevel()) + "
"); + StringBuilder sTerrain = new StringBuilder(Messages.getString("BoardView1.Tooltip.Hex", mcoords.getBoardNum(), mhex.getLevel()) + illuminated + "
"); // cycle through the terrains and report types found for (int terType: mhex.getTerrainTypes()) { int tf = mhex.getTerrain(terType).getTerrainFactor(); int ttl = mhex.getTerrain(terType).getLevel(); String name = Terrains.getDisplayName(terType, ttl); + if (name != null) { String msg_tf = Messages.getString("BoardView1.Tooltip.TF"); name += (tf > 0) ? " (" + msg_tf + ": " + tf + ')' : ""; diff --git a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java index c651170fef5..46eae2d64a8 100644 --- a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java +++ b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java @@ -1369,9 +1369,10 @@ private static StringBuilder inGameValues(Entity entity, Player localPlayer, boo } } + String illuminated = entity.isIlluminated() ? DOT_SPACER +"\uD83D\uDCA1" : ""; String searchLight = entity.isUsingSearchlight() ? DOT_SPACER +"\uD83D\uDD26" : ""; searchLight += entity.usedSearchlight() ? " \u2580\u2580" : ""; - result += guiScaledFontHTML(uiYellow()) + searchLight + ""; + result += guiScaledFontHTML(uiYellow()) + illuminated + searchLight + ""; // Gun Emplacement Status if (isGunEmplacement) { @@ -1505,9 +1506,8 @@ private static StringBuilder inGameValues(Entity entity, Player localPlayer, boo } } - // Coloring and italic to make these transient entries stand out + // Coloring to make these transient entries stand out result = guiScaledFontHTML(uiLightViolet()) + result + ""; - result = "" + result + ""; return new StringBuilder().append(result); } diff --git a/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java b/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java index 9bbf444538f..f38c311ffae 100644 --- a/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java +++ b/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java @@ -146,7 +146,7 @@ public void displayMech(Entity entity) { Hex mhex = entity.getGame().getBoard().getHex(entity.getPosition()); if (bv != null && mhex != null) { StringBuffer sb = new StringBuffer(); - bv.appendTerrainTooltip(sb, mhex); + bv.appendTerrainTooltip(sb, mhex, entity.getGame()); col = "" + sb + ""; row = "" + col + ""; hexTxt.append("" + row + "
"); diff --git a/megamek/src/megamek/common/enums/IlluminationLevel.java b/megamek/src/megamek/common/enums/IlluminationLevel.java index 1732bfe5f15..ad07a5e6d0b 100644 --- a/megamek/src/megamek/common/enums/IlluminationLevel.java +++ b/megamek/src/megamek/common/enums/IlluminationLevel.java @@ -25,6 +25,8 @@ import java.util.Objects; +import static megamek.client.ui.swing.util.UIUtil.*; + public enum IlluminationLevel { //region Enum Declarations NONE, @@ -88,4 +90,17 @@ public static IlluminationLevel determineIlluminationLevel(final Game game, fina return neighbouringFire ? IlluminationLevel.FIRE : IlluminationLevel.NONE; } + + public static String getIlluminationLevelIndicator(final Game game, final Coords coords) { + switch (IlluminationLevel.determineIlluminationLevel(game, coords)) { + case FIRE: + return DOT_SPACER + guiScaledFontHTML(uiYellow()) + " \uD83D\uDD25" + ""; + case FLARE: + return DOT_SPACER + guiScaledFontHTML(uiYellow()) + " \uD83C\uDF86" + ""; + case SEARCHLIGHT: + return DOT_SPACER + guiScaledFontHTML(uiYellow()) + " \uD83D\uDD26" + ""; + default: + return ""; + } + } } diff --git a/megamek/src/megamek/common/util/SerializationHelper.java b/megamek/src/megamek/common/util/SerializationHelper.java index 2bfb1bbbc8b..f6cfb1956fc 100644 --- a/megamek/src/megamek/common/util/SerializationHelper.java +++ b/megamek/src/megamek/common/util/SerializationHelper.java @@ -50,6 +50,7 @@ public static XStream getSaveGameXStream() { megamek.common.CompositeTechLevel.DateRange.class, megamek.common.CriticalSlot.class, megamek.common.EquipmentMode.class, + megamek.common.Flare.class, megamek.common.Game.class, megamek.common.Hex.class, megamek.common.Minefield.class, From 3d3b717094e8a37a2c9fd26d7c1f5e2a1afdfe25 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Thu, 30 Nov 2023 18:59:26 -0500 Subject: [PATCH 2/4] add searchlight destroyed indicator to unit tooltip --- .../client/ui/swing/tooltip/UnitToolTip.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java index 46eae2d64a8..cb9b1d87624 100644 --- a/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java +++ b/megamek/src/megamek/client/ui/swing/tooltip/UnitToolTip.java @@ -1370,9 +1370,16 @@ private static StringBuilder inGameValues(Entity entity, Player localPlayer, boo } String illuminated = entity.isIlluminated() ? DOT_SPACER +"\uD83D\uDCA1" : ""; - String searchLight = entity.isUsingSearchlight() ? DOT_SPACER +"\uD83D\uDD26" : ""; - searchLight += entity.usedSearchlight() ? " \u2580\u2580" : ""; - result += guiScaledFontHTML(uiYellow()) + illuminated + searchLight + ""; + result += guiScaledFontHTML(uiYellow()) + illuminated + ""; + + if (entity.hasSearchlight()) { + String searchLight = entity.isUsingSearchlight() ? DOT_SPACER + "\uD83D\uDD26" : ""; + searchLight += entity.usedSearchlight() ? " \u2580\u2580" : ""; + result += guiScaledFontHTML(uiYellow()) + searchLight + ""; + } else { + String searchLight = "\uD83D\uDD26"; + result += guiScaledFontHTML(GUIP.getWarningColor()) + DOT_SPACER + searchLight + ""; + } // Gun Emplacement Status if (isGunEmplacement) { From 349baafa0b6f27107c87c7ef7c73476d1345fc79 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Sat, 2 Dec 2023 13:56:33 -0500 Subject: [PATCH 3/4] set dark map at night to true by default --- megamek/src/megamek/client/ui/swing/GUIPreferences.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/megamek/src/megamek/client/ui/swing/GUIPreferences.java b/megamek/src/megamek/client/ui/swing/GUIPreferences.java index 6a9c8907c05..15fc3a5ba8c 100644 --- a/megamek/src/megamek/client/ui/swing/GUIPreferences.java +++ b/megamek/src/megamek/client/ui/swing/GUIPreferences.java @@ -484,7 +484,7 @@ protected GUIPreferences() { setDefault(BOARD_MOVE_FONT_STYLE, Font.BOLD); store.setDefault(BOARD_ATTACK_ARROW_TRANSPARENCY, 0x80); store.setDefault(BOARD_ECM_TRANSPARENCY, 0x80); - store.setDefault(BOARD_DARKEN_MAP_AT_NIGHT, false); + store.setDefault(BOARD_DARKEN_MAP_AT_NIGHT, true); store.setDefault(BOARD_TRANSLUCENT_HIDDEN_UNITS, true); setDefault(BOARD_TMM_PIP_MODE, 2); // show pips with colors based on move type From d3fe70ebd914f7690cc81fe66fc7b4fa7f609ba0 Mon Sep 17 00:00:00 2001 From: kuronekochomusuke Date: Mon, 4 Dec 2023 17:37:51 -0500 Subject: [PATCH 4/4] code cleanup --- megamek/src/megamek/client/ui/swing/boardview/BoardView.java | 4 ++-- .../src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java index 3bc3dd2b40c..605504a9849 100644 --- a/megamek/src/megamek/client/ui/swing/boardview/BoardView.java +++ b/megamek/src/megamek/client/ui/swing/boardview/BoardView.java @@ -5449,7 +5449,7 @@ public String getHexTooltip(MouseEvent e) { // Hex Terrain if (GUIP.getShowMapHexPopup() && (mhex != null)) { StringBuffer sbTerrain = new StringBuffer(); - appendTerrainTooltip(sbTerrain, mhex, game); + appendTerrainTooltip(sbTerrain, mhex); String sTrerain = sbTerrain.toString(); // Distance from the selected unit and a planned movement end point @@ -5750,7 +5750,7 @@ public String getHexTooltip(MouseEvent e) { /** * Appends HTML describing the terrain of a given hex */ - public void appendTerrainTooltip(StringBuffer txt, @Nullable Hex mhex, Game game) { + public void appendTerrainTooltip(StringBuffer txt, @Nullable Hex mhex) { if (mhex == null) { return; } diff --git a/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java b/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java index f38c311ffae..9bbf444538f 100644 --- a/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java +++ b/megamek/src/megamek/client/ui/swing/unitDisplay/SummaryPanel.java @@ -146,7 +146,7 @@ public void displayMech(Entity entity) { Hex mhex = entity.getGame().getBoard().getHex(entity.getPosition()); if (bv != null && mhex != null) { StringBuffer sb = new StringBuffer(); - bv.appendTerrainTooltip(sb, mhex, entity.getGame()); + bv.appendTerrainTooltip(sb, mhex); col = "" + sb + ""; row = "" + col + ""; hexTxt.append("" + row + "
");