From b5dd19867a309519b39b57d412cd93013c6e673a Mon Sep 17 00:00:00 2001 From: Sloth Date: Sun, 8 Feb 2015 13:36:17 +0000 Subject: [PATCH] - Cleanup and NPE protection. --- .../java/forge/ai/simulation/GameCopier.java | 14 +++++++----- .../forge/ai/simulation/GameSimulator.java | 9 ++------ .../src/main/java/forge/game/GameAction.java | 22 +++++++++---------- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index 897c0b71c12..253d968af5c 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -110,13 +110,15 @@ public class GameCopier { } } } - newSa.setActivatingPlayer(map.map(origSa.getActivatingPlayer())); - if (origSa.usesTargeting()) { - for (GameObject o : origSa.getTargets().getTargets()) { - newSa.getTargets().add(map.map(o)); - } + if (newSa != null) { + newSa.setActivatingPlayer(map.map(origSa.getActivatingPlayer())); + if (origSa.usesTargeting()) { + for (GameObject o : origSa.getTargets().getTargets()) { + newSa.getTargets().add(map.map(o)); + } + } + newGame.getStack().add(newSa); } - newGame.getStack().add(newSa); } } diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java b/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java index 4c5630e7941..a882421d864 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameSimulator.java @@ -162,13 +162,8 @@ public class GameSimulator { return Integer.MIN_VALUE; } // TODO: Support multiple opponents. - Player opponent = null; - for (Player p : simGame.getPlayers()) { - if (p != aiPlayer) { - opponent = p; - break; - } - } + Player opponent = aiPlayer.getOpponent(); + resolveStack(simGame, opponent); // TODO: If this is during combat, before blockers are declared, diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index 48b6606f30a..3f12383f84f 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1407,19 +1407,17 @@ public class GameAction { } // Power Play - Each player with a Power Play in the CommandZone becomes the Starting Player - CardCollectionView commandCards = game.getCardsIn(ZoneType.Command); - if (commandCards.size() > 0) { - CardCollection powerPlays = CardLists.getValidCards(commandCards, "Card.namedPower Play", game.getPlayers().getFirst(), commandCards.getFirst()); - Set powerPlayers = new HashSet<>(); - for (Card c : powerPlays) { - powerPlayers.add(c.getOwner()); - } + Set powerPlayers = new HashSet<>(); + for (Card c : game.getCardsIn(ZoneType.Command)) { + if (c.getName().equals("Power Play")) { + powerPlayers.add(c.getOwner()); + } + } - if (powerPlayers.size() > 0) { - ArrayList players = Lists.newArrayList(powerPlayers); - Collections.shuffle(players); - return players.get(0); - } + if (!powerPlayers.isEmpty()) { + ArrayList players = Lists.newArrayList(powerPlayers); + Collections.shuffle(players); + return players.get(0); } boolean isFirstGame = lastGameOutcome == null;