diff options
Diffstat (limited to 'src/jrummikub/control')
-rw-r--r-- | src/jrummikub/control/RoundControl.java | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java index cce6160..1411337 100644 --- a/src/jrummikub/control/RoundControl.java +++ b/src/jrummikub/control/RoundControl.java @@ -1,5 +1,6 @@ package jrummikub.control; +import java.util.HashSet; import java.util.Set; import jrummikub.model.IGameState; @@ -7,7 +8,9 @@ import jrummikub.model.IHand; import jrummikub.model.ITable; import jrummikub.model.Position; import jrummikub.model.Stone; +import jrummikub.model.StoneSet; import jrummikub.util.IListener; +import jrummikub.util.Pair; import jrummikub.view.IView; public class RoundControl { @@ -52,10 +55,8 @@ public class RoundControl { for (int i = 0; i < gameState.getPlayerCount(); i++) { IHand hand = gameState.getPlayer(i).getHand(); for (int j = 0; j < 7; j++) { - hand.drop(gameState.getGameHeap().drawStone(), new Position(j, - 0)); - hand.drop(gameState.getGameHeap().drawStone(), new Position(j, - 1)); + hand.drop(gameState.getGameHeap().drawStone(), new Position(j, 0)); + hand.drop(gameState.getGameHeap().drawStone(), new Position(j, 1)); } } } @@ -65,7 +66,20 @@ public class RoundControl { } static Set<Stone> tableDifference(ITable oldTable, ITable newTable) { - return null; + Set<Stone> ret = new HashSet<Stone>(); + + for (Pair<StoneSet, Position> entry : newTable) { + for (Stone stone : entry.getFirst()) { + ret.add(stone); + } + } + for (Pair<StoneSet, Position> entry : oldTable) { + for (Stone stone : entry.getFirst()) { + ret.remove(stone); + } + } + + return ret; } private void resetTable() { |