From b0411423f6b8a6fdbb6c2e3d8f4652abc92ab40f Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 23 Nov 2024 13:22:41 +0800 Subject: [PATCH] use Executor, update MatchScreen --- .../main/java/forge/ai/AiAttackController.java | 2 +- forge-core/src/main/java/forge/StaticData.java | 16 ++++++++-------- .../src/forge/screens/match/MatchScreen.java | 14 +++++++++++--- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/AiAttackController.java b/forge-ai/src/main/java/forge/ai/AiAttackController.java index ea6faef9d05..fa9d32a5645 100644 --- a/forge-ai/src/main/java/forge/ai/AiAttackController.java +++ b/forge-ai/src/main/java/forge/ai/AiAttackController.java @@ -79,6 +79,7 @@ public class AiAttackController { private int aiAggression = 0; // how aggressive the ai is attack will be depending on circumstances private final boolean nextTurn; // include creature that can only attack/block next turn private final int timeOut; + private List> futures = new ArrayList<>(); /** *

@@ -910,7 +911,6 @@ public class AiAttackController { final AtomicInteger numForcedAttackers = new AtomicInteger(0); // nextTurn is now only used by effect from Oracle en-Vec, which can skip check must attack, // because creatures not chosen can't attack. - List> futures = new ArrayList<>(); if (!nextTurn) { for (final Card attacker : this.attackers) { final GameEntity finalDefender = defender; diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 56a8cab7a04..b536a089316 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -777,7 +777,7 @@ public class StaticData { continue; Map> cardCount = new HashMap<>(); - List> futures = new ArrayList<>(); + List> futures = new ArrayList<>(); for (CardEdition.CardInSet c : e.getAllCardsInSet()) { if (cardCount.containsKey(c.name)) { cardCount.put(c.name, Pair.of(c.collectorNumber != null && c.collectorNumber.startsWith("F"), cardCount.get(c.name).getRight() + 1)); @@ -798,12 +798,12 @@ public class StaticData { } if (cp == null) { if (isFunny) //skip funny cards - return 0; + return null; if (!loadNonLegalCards && CardEdition.Type.FUNNY.equals(e.getType())) - return 0; + return null; EDITION_Q.add(e.getCode() + "_" + e.getName()); CNI_Q.add(e.getCode() + "_" + c + "\n"); - return 0; + return null; } // check the front image String imagePath = ImageUtil.getImageRelativePath(cp, "", true, false); @@ -813,7 +813,7 @@ public class StaticData { file = ImageKeys.setLookUpFile(imagePath, imagePath +"border"); if (file == null) { if (imagePath.isEmpty()) - return 0; + return null; EDITION_Q.add(e.getCode() + "_" + e.getName()); NIF_Q.add(e.getCode() + "_" + imagePath + "\n"); } @@ -827,16 +827,16 @@ public class StaticData { file = ImageKeys.setLookUpFile(imagePath, imagePath +"border"); if (file == null) { if (imagePath.isEmpty()) - return 0; + return null; EDITION_Q.add(e.getCode() + "_" + e.getName()); NIF_Q.add(e.getCode() + "_" + imagePath + "\n"); } } } - return 0; + return null; }).exceptionally(ex -> { ex.printStackTrace(); - return 0; + return null; })); } CompletableFuture[] futuresArray = futures.toArray(new CompletableFuture[0]); diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index 0b84c8a1700..98b5a8ddbe8 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -91,6 +91,11 @@ public class MatchScreen extends FScreen { private static List potentialListener; private int selectedPlayer; + + private final Map endpoints; + private final Set cardsonBattlefield; + private final Set playerViewSet; + public MatchScreen(List playerPanels0) { super(new FMenuBar()); @@ -164,6 +169,9 @@ public class MatchScreen extends FScreen { log.setMenuTab(new HiddenMenuTab(log)); devMenu.setMenuTab(new HiddenMenuTab(devMenu)); } + endpoints = new HashMap<>(); + cardsonBattlefield = new HashSet<>(); + playerViewSet = new HashSet<>(); } private boolean is4Player() { @@ -459,9 +467,9 @@ public class MatchScreen extends FScreen { void drawArcs(Graphics g) { //get all card targeting arrow origins on the battlefield - final Map endpoints = new HashMap<>(); - final Set cardsonBattlefield = new HashSet<>(); - final Set playerViewSet = new HashSet<>(); + endpoints.clear(); + cardsonBattlefield.clear(); + playerViewSet.clear(); final GameView game = MatchController.instance.getGameView(); try { for (PlayerView p : game.getPlayers()) {