From 38fcd7cbb4d0f3171937cad8f27eb089a90a7ad8 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 09:37:58 +0000 Subject: [PATCH] moved shuffle to Player, deprecated GameAction.shuffle, and redirected to Player --- src/forge/GameAction.java | 6 ++++-- src/forge/Player.java | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 41b1877c2bf..c6b0360f0e4 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -2469,7 +2469,10 @@ public class GameAction { } //TODO: shuffling seems to change a card's unique number but i'm not 100% sure + @Deprecated public void shuffle(Player player) { + player.shuffle(); + /* PlayerZone library = AllZone.getZone(Constant.Zone.Library, player); Card c[] = library.getCards(); @@ -2485,8 +2488,6 @@ public class GameAction { Collections.shuffle(list, random); Collections.shuffle(list, random); -// random = java.security.SecureRandom.getInstance("SHA1PRNG"); - Object o; for(int i = 0; i < list.size(); i++) { o = list.remove(random.nextInt(list.size())); @@ -2503,6 +2504,7 @@ public class GameAction { list.toArray(c); library.setCards(c); + */ }//shuffle /** diff --git a/src/forge/Player.java b/src/forge/Player.java index 274965426a5..07f6c1abbbe 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -2,6 +2,9 @@ package forge; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Random; public abstract class Player extends MyObservable{ @@ -304,6 +307,42 @@ public abstract class Player extends MyObservable{ throw new RuntimeException("Input_Draw : getDredgeNumber() card doesn't have dredge - " + c.getName()); }//getDredgeNumber() + + //////////////////////////////// + public void shuffle() { + PlayerZone library = AllZone.getZone(Constant.Zone.Library, this); + Card c[] = library.getCards(); + + if(c.length <= 1) return; + + ArrayList list = new ArrayList(Arrays.asList(c)); + //overdone but wanted to make sure it was really random + Random random = new Random(); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + + Object o; + for(int i = 0; i < list.size(); i++) { + o = list.remove(random.nextInt(list.size())); + list.add(random.nextInt(list.size()), o); + } + + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + Collections.shuffle(list, random); + + + list.toArray(c); + library.setCards(c); + }//shuffle + //////////////////////////////// //////////////////////////////// //