From 14ba4e6894e661b155bfb5be329eaaf6386a837e Mon Sep 17 00:00:00 2001 From: austinio7116 Date: Sat, 26 May 2018 13:53:17 +0100 Subject: [PATCH] Removed flicker when filtering starting hand --- .../src/main/java/forge/game/GameAction.java | 31 +++++-------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index d9c834a35c5..36b446dff47 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -1563,38 +1563,23 @@ public class GameAction { } private void drawStartingHand(Player p1){ - - //copy starting hand/lib - List lib = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); - List hand = Lists.newArrayList(p1.getZone(ZoneType.Hand).getCards().threadSafeIterable()); - //draw initial hand - p1.drawCards(p1.getMaxHandSize()); + //check initial hand List lib1 = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); - List hand1 = Lists.newArrayList(p1.getZone(ZoneType.Hand).getCards().threadSafeIterable()); - System.out.println("Hand 1: " + hand1.toString()); + List hand1 = lib1.subList(0,p1.getMaxHandSize()); - //reset, shuffle - p1.getZone(ZoneType.Library).setCards(lib); - p1.getZone(ZoneType.Hand).setCards(hand); + //shuffle List shuffledCards = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); Collections.shuffle(shuffledCards); - p1.getZone(ZoneType.Library).setCards(shuffledCards); - //draw a second hand - p1.drawCards(p1.getMaxHandSize()); - List lib2 = Lists.newArrayList(p1.getZone(ZoneType.Library).getCards().threadSafeIterable()); - List hand2 = Lists.newArrayList(p1.getZone(ZoneType.Hand).getCards().threadSafeIterable()); - System.out.println("Hand 2: " + hand2.toString()); + //check a second hand + List hand2 = shuffledCards.subList(0,p1.getMaxHandSize()); //choose better hand according to land count - if(getHandScore(hand1)<=getHandScore(hand2)){ - p1.getZone(ZoneType.Library).setCards(lib1); - p1.getZone(ZoneType.Hand).setCards(hand1); - }else{ - p1.getZone(ZoneType.Library).setCards(lib2); - p1.getZone(ZoneType.Hand).setCards(hand2); + if(getHandScore(hand1)>getHandScore(hand2)){ + p1.getZone(ZoneType.Library).setCards(shuffledCards); } + p1.drawCards(p1.getMaxHandSize()); } private int getHandScore(List hand){