From 3eb8bf0b1d0eb5b9bb0b6f0832e6cdb1614e2d3d Mon Sep 17 00:00:00 2001 From: asvitkine Date: Sat, 4 May 2024 14:57:00 -0400 Subject: [PATCH] Some no-op code cleanups. (#12561) --- .../strategy/engine/framework/ServerGame.java | 45 +++++++++---------- .../triplea/ui/panels/map/MapPanel.java | 36 +++++++-------- .../triplea/ui/panel/move/MovePanel.java | 28 +++--------- 3 files changed, 43 insertions(+), 66 deletions(-) diff --git a/game-app/game-core/src/main/java/games/strategy/engine/framework/ServerGame.java b/game-app/game-core/src/main/java/games/strategy/engine/framework/ServerGame.java index 95440207240..876d14ba33a 100644 --- a/game-app/game-core/src/main/java/games/strategy/engine/framework/ServerGame.java +++ b/game-app/game-core/src/main/java/games/strategy/engine/framework/ServerGame.java @@ -69,7 +69,7 @@ public class ServerGame extends AbstractGame { private final RandomStats randomStats; private IRandomSource randomSource = new PlainRandomSource(); - private IRandomSource delegateRandomSource; + private @Nullable IRandomSource delegateRandomSource; private final DelegateExecutionManager delegateExecutionManager = new DelegateExecutionManager(); @Nullable @Getter private final InGameLobbyWatcherWrapper inGameLobbyWatcher; private boolean needToInitialize = true; @@ -562,8 +562,7 @@ private void startStep(final boolean stepIsRestoredFromSavedGame) { // do any initialization of game data for all players here (not based on a delegate, and should // not be) // we cannot do this the very first run through, because there are no history nodes yet. We - // should do after first - // node is created. + // should do after first node is created. if (needToInitialize) { addPlayerTypesToGameData(gamePlayers.values(), playerManager, bridge); } @@ -613,14 +612,21 @@ private void notifyGameStepChanged(final boolean loadedFromSavedGame) { .stepChanged(stepName, delegateName, gamePlayer, round, displayName, loadedFromSavedGame); } + private String isOrAre(String playerName) { + if (playerName.endsWith("s") || playerName.endsWith("ese") || playerName.endsWith("ish")) { + return "are"; + } else { + return "is"; + } + } + private void addPlayerTypesToGameData( final Collection localPlayers, final PlayerManager allPlayers, final IDelegateBridge bridge) { final GameData data = bridge.getData(); // potential bugs with adding changes to a game that has not yet started and has no history - // nodes yet. So wait for - // the first delegate to start before making changes. + // nodes yet. So wait for the first delegate to start before making changes. if (getCurrentStep() == null || getCurrentStep().getPlayerId() == null || firstRun) { firstRun = false; return; @@ -635,21 +641,16 @@ private void addPlayerTypesToGameData( final CompositeChange change = new CompositeChange(); final Set allPlayersString = allPlayers.getPlayers(); bridge.getHistoryWriter().startEvent("Game Loaded"); + final var historyWriter = bridge.getHistoryWriter(); for (final Player player : localPlayers) { allPlayersString.remove(player.getName()); - final boolean isAi = player.isAi(); - bridge - .getHistoryWriter() - .addChildToEvent( - player.getName() - + ((player.getName().endsWith("s") - || player.getName().endsWith("ese") - || player.getName().endsWith("ish")) - ? " are" - : " is") - + " now being played by: " - + player.getPlayerLabel()); + historyWriter.addChildToEvent( + String.format( + "%s %s now being played by: %s", + player.getName(), isOrAre(player.getName()), player.getPlayerLabel())); + final GamePlayer p = data.getPlayerList().getPlayerId(player.getName()); + final boolean isAi = player.isAi(); final String newWhoAmI = (isAi ? "AI" : "Human") + ":" + player.getPlayerLabel(); if (!p.getWhoAmI().equals(newWhoAmI)) { change.add(ChangeFactory.changePlayerWhoAmIChange(p, newWhoAmI)); @@ -659,14 +660,8 @@ private void addPlayerTypesToGameData( while (playerIter.hasNext()) { final String player = playerIter.next(); playerIter.remove(); - bridge - .getHistoryWriter() - .addChildToEvent( - player - + ((player.endsWith("s") || player.endsWith("ese") || player.endsWith("ish")) - ? " are" - : " is") - + " now being played by: Human:Client"); + historyWriter.addChildToEvent( + String.format("%s %s now being played by: Human:Client", player, isOrAre(player))); final GamePlayer p = data.getPlayerList().getPlayerId(player); final String newWhoAmI = "Human:Client"; if (!p.getWhoAmI().equals(newWhoAmI)) { diff --git a/game-app/game-core/src/main/java/games/strategy/triplea/ui/panels/map/MapPanel.java b/game-app/game-core/src/main/java/games/strategy/triplea/ui/panels/map/MapPanel.java index e94d06a9afa..f967155b7bf 100644 --- a/game-app/game-core/src/main/java/games/strategy/triplea/ui/panels/map/MapPanel.java +++ b/game-app/game-core/src/main/java/games/strategy/triplea/ui/panels/map/MapPanel.java @@ -98,18 +98,18 @@ public class MapPanel extends ImageScrollerLargeView { private final TerritoryHighlighter territoryHighlighter = new TerritoryHighlighter(); private final ImageScrollerSmallView smallView; // units the mouse is currently over - private Tuple> currentUnits; + private @Nullable Tuple> currentUnits; private final SmallMapImageManager smallMapImageManager; - private RouteDescription routeDescription; + private @Nullable RouteDescription routeDescription; private final TileManager tileManager; - private BufferedImage mouseShadowImage = null; + private @Nullable BufferedImage mouseShadowImage = null; private String movementLeftForCurrentUnits = ""; private ResourceCollection movementFuelCost; @Getter private final UiContext uiContext; private final ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); @Getter private Collection> highlightedUnits = List.of(); - private Cursor hiddenCursor = null; + private @Nullable Cursor hiddenCursor = null; private final MapRouteDrawer routeDrawer; private Set countriesToUpdate = new HashSet<>(); private final Object countriesToUpdateLock = new Object(); @@ -234,7 +234,7 @@ public void mouseReleased(final MouseEvent e) { if (!unitSelectionListeners.isEmpty()) { Tuple> tuple = tileManager.getUnitsAtPoint(x, y, gameData); if (tuple == null) { - tuple = Tuple.of(getTerritory(x, y), List.of()); + tuple = Tuple.of(terr, List.of()); } notifyUnitSelected(tuple.getSecond(), tuple.getFirst(), md); } @@ -457,7 +457,10 @@ public void setRoute(final Route route) { /** Set the route, could be null. */ public void setRoute( - final Route route, final Point start, final Point end, final Image cursorImage) { + final @Nullable Route route, + final @Nullable Point start, + final @Nullable Point end, + final @Nullable Image cursorImage) { if (route == null) { routeDescription = null; SwingUtilities.invokeLater(this::repaint); @@ -584,7 +587,7 @@ private MouseDetails convert(final MouseEvent me) { return new MouseDetails(me, x, y); } - private boolean unitsChanged(final Tuple> newUnits) { + private boolean unitsChanged(final @Nullable Tuple> newUnits) { return !ObjectUtils.referenceEquals(newUnits, currentUnits) && (newUnits == null || currentUnits == null @@ -737,17 +740,16 @@ public void paint(final Graphics g) { movementFuelCost, uiContext.getResourceImageFactory()); } + final var unitImageFactory = uiContext.getUnitImageFactory(); for (final Collection value : highlightedUnits) { for (final UnitCategory category : UnitSeparator.categorize(value)) { - final Rectangle r = tileManager.getUnitRect(category.getUnits(), gameData); + final @Nullable Rectangle r = tileManager.getUnitRect(category.getUnits(), gameData); if (r == null) { continue; } - Image image = - uiContext - .getUnitImageFactory() - .getHighlightImage(UnitImageFactory.ImageKey.of(category)); + final Image image = + unitImageFactory.getHighlightImage(UnitImageFactory.ImageKey.of(category)); final AffineTransform transform = AffineTransform.getTranslateInstance( normalizeX(r.getX() - getXOffset()), normalizeY(r.getY() - getYOffset())); @@ -869,7 +871,7 @@ public void changeSmallMapOffscreenMap() { smallMapImageManager.updateOffscreenImage(uiContext.getMapImage().getSmallMapImage()); } - public void setMouseShadowUnits(final Collection units) { + public void setMouseShadowUnits(final @Nullable Collection units) { if (units == null || units.isEmpty()) { movementLeftForCurrentUnits = ""; mouseShadowImage = null; @@ -975,12 +977,8 @@ public void clearTerritoryOverlay(final Territory territory) { public void hideMouseCursor() { if (hiddenCursor == null) { - hiddenCursor = - getToolkit() - .createCustomCursor( - new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR), - new Point(0, 0), - "Hidden"); + final var image = new BufferedImage(1, 1, BufferedImage.TYPE_4BYTE_ABGR); + hiddenCursor = getToolkit().createCustomCursor(image, new Point(), "Hidden"); } setCursor(hiddenCursor); } diff --git a/game-app/game-headed/src/main/java/games/strategy/triplea/ui/panel/move/MovePanel.java b/game-app/game-headed/src/main/java/games/strategy/triplea/ui/panel/move/MovePanel.java index e8dc6309179..61ba027dbe2 100644 --- a/game-app/game-headed/src/main/java/games/strategy/triplea/ui/panel/move/MovePanel.java +++ b/game-app/game-headed/src/main/java/games/strategy/triplea/ui/panel/move/MovePanel.java @@ -86,10 +86,10 @@ public class MovePanel extends AbstractMovePanel { private final Map> airTransportDependents = new HashMap<>(); // access only through getter and setter! - private Territory firstSelectedTerritory; - private Territory selectedEndpointTerritory; + @Getter private @Nullable Territory firstSelectedTerritory; + @Getter @Setter private @Nullable Territory selectedEndpointTerritory; private Territory mouseCurrentTerritory; - private List forced; + private @Nullable List forced; @Setter private boolean nonCombat; private Point mouseSelectedPoint; private Point mouseCurrentPoint; @@ -99,15 +99,15 @@ public class MovePanel extends AbstractMovePanel { // the must move with details for the currently selected territory // note this is kept in sync because we do not modify selectedTerritory directly // instead we only do so through the private setter - private MustMoveWithDetails mustMoveWithDetails = null; + private @Nullable MustMoveWithDetails mustMoveWithDetails = null; // cache this so we can update it only when territory/units change private Collection unitsThatCanMoveOnRoute; private @Nullable Image currentCursorImage; private final @Nullable Image warningImage; private final @Nullable Image errorImage; - private Route routeCached = null; + private @Nullable Route routeCached = null; private String displayText = "Combat Move"; - private MoveType moveType = MoveType.DEFAULT; + @Setter private MoveType moveType = MoveType.DEFAULT; private final UnitScroller unitScroller; @Getter(onMethod_ = @Override) @@ -695,10 +695,6 @@ public MovePanel(final GameData data, final MapPanel map, final TripleAFrame fra registerKeyBindings(frame); } - public void setMoveType(final MoveType moveType) { - this.moveType = moveType; - } - private GamePlayer getUnitOwner(final Collection units) { return (isEditMode() && units != null && !units.isEmpty()) ? CollectionUtils.getAny(units).getOwner() @@ -1384,18 +1380,6 @@ final void setFirstSelectedTerritory(final @Nullable Territory firstSelectedTerr } } - private Territory getFirstSelectedTerritory() { - return firstSelectedTerritory; - } - - final void setSelectedEndpointTerritory(final Territory selectedEndpointTerritory) { - this.selectedEndpointTerritory = selectedEndpointTerritory; - } - - private Territory getSelectedEndpointTerritory() { - return selectedEndpointTerritory; - } - private List userChooseUnits( final Set defaultSelections, final Predicate> unitsToLoadMatch,